I need to create two procedures:
(1) SetColor receives two BYTE parameters: forecolor and backcolor.
It calls the SetTextColor procedure from the Irvine32 library.
(2) WriteColorChar receives three byte parameters:
char, forecolor, and backcolor.
It displays a single character,using the color attributes specified in forecolor and backcolor.
It calls the SetColor procedure, and it also calls WriteChar from the Irvine32 library. Both SetColor and WriteColorChar must contain declared parameters. Complete the missing part of the code for the two procedures.
Code:
TITLE SetColor and WriteColorChar
INCLUDE Irvine32.inc
SetColor PROTO forecolor:BYTE, backcolor:BYTE
WriteColorChar PROTO char:BYTE,forecolor:BYTE, backcolor:BYTE
.data
.code
main PROC
INVOKE WriteColorChar, 'A', white, blue INVOKE WriteColorChar, 'B', blue, white INVOKE WriteColorChar, 'C', green, black INVOKE WriteColorChar, 'D', yellow, gray INVOKE SetColor, lightGray, black
call Crlf
exit main ENDP
WriteColorChar PROC
******************code for writecolor!!*****************
WriteColorChar ENDP
SetColor PROC
************code for setcolor******************
SetColor ENDP END main
Another program in which i have to write a recursive implementation for Euclid's algorithm for finding GCD of 2 non negative integers.
I have prepared this pseudocode
algorithm GCD(a,b) //a and b are nonnegative integers if b>0 then
return (GCD(b,a mod b)
else // b = 0
return (a)
endif
end
and a rough draft of the program is here-
I need to write the code for the procedure CalcGCD PROC
I can not use .IF, .ELSE, . ENDIF directives.
Code:
INCLUDE Irvine32.inc
CalcGcd PROTO,int1:DWORD, int2:DWORD
.data
array SDWORD 0,5,7,0,11,7,438,226,26,13
;pairs to be tested: 0,5 and 7,0 and 11,7 etc. str1 BYTE "Greatest common divisor is: ",0
.code
main PROC
mov ecx,LENGTHOF array / 2
mov esi,OFFSET array
L1: INVOKE CalcGcd,[esi],[esi+4]
mov edx,OFFSET str1
call WriteString call WriteDec call Crlf
add esi,TYPE array * 2
loop L1
exit main ENDP