INCLUDE Irvine32.inc 
 
.data 
 
msgIntro byte "This is Your Name's fourth assembly extra credit program. Will randomly",0dh,0ah 
 
 byte "choose between three different colors for displaying twenty lines of text,",0dh,0ah 
 
 byte "each with a randomly chosen color. The color probabilities are as follows:",0dh,0ah 
 
 byte "White=30%,Blue=10%,Green=60%.",0dh,0ah,0 
 
msgOutput byte "Text printed with one of 3 randomly chosen colors",0 
 
.code 
 
main PROC 
 
; 
 
//Intro Message 
 
 mov edx,OFFSET msgIntro ;intro message into edx 
 
 call WriteString ;display msgIntro 
 
 call Crlf ;endl 
 
 call WaitMsg ;pause message 
 
 call Clrscr ;clear screen 
 
 call Randomize ;seed the random number generator 
 
 mov edx, OFFSET msgOutput;line of text 
 
 mov ecx, 20 ;counter (lines of text) 
 
 L1:;//(Loop - Display Text 20 Times) 
 
 call setRanColor ;calls random color procedure 
 
 call SetTextColor ;calls the SetTextColor from library 
 
 call WriteString ;display line of text 
 
 call Crlf ;endl 
 
 loop L1 
 
exit 
 
main ENDP 
 
;-- 
 
setRanColor PROC 
 
; 
 
; Selects a color with the following probabilities: 
 
; White = 30%, Blue = 10%, Green = 60%. 
 
; Receives: nothing 
 
; Returns: EAX = color chosen 
 
;-- 
 
 mov eax, 10 ;range of random numbers (0-9) 
 
 call RandomRange ;EAX = Random Number 
 
 .IF eax >= 4 ;if number is 4-9 (60%) 
 
 mov eax, green ;set text green 
 
 .ELSEIF eax == 3 ;if number is 3 (10%) 
 
 mov eax, blue ;set text blue 
 
 .ELSE ;number is 0-2 (30%) 
 
 mov eax, white ;set text white 
 
 .ENDIF ;end statement 
 
 ret 
 
setRanColor ENDP