REPT 7
STORE %I
I=I+1
ENDM
7.11 试编写一段程序完成以下功能,如给定名为X的字符串长度大于5时,下列指令将汇编10次。
ADD AX, AX
答:程序段如下:
X DB ‘ABCDEFG’
IF ($-X) GT 5
REPT 10
ADD AX, AX
ENDM
ENDIF
7.12 定义宏指令FINSUM:比较两个数X和Y(X、Y为数,而不是地址),若X>Y则执行SUM←X+2*Y;否则执行SUM←2*X+Y。
答:宏定义如下:
CALCULA TE MACRO A, B, RESULT ;;计算RESULT←2*A+B
MOV AX, A
SHL AX, 1
ADD AX, B
MOV RESULT, AX
ENDM
FINSUM MACRO X, Y, SUM
IF X GT Y
CALCULA TE Y, X, SUM
ELSE
CALCULA TE X, Y, SUM
ENDIF
ENDM
7.13 试编写一段程序完成以下功能:如变元X=‘VT55’,则汇编MOV TERMINAL, 0;否则汇编
MOV TERMINAL, 1。
答:宏定义如下:
BRANCH MACRO X
IFIDN ,
MOV TERMINAL, 0
ELSE
MOV TERMINAL, 1
ENDIF
ENDM
7.14 对于DOS功能调用,所有的功能调用都需要在AH寄存器中存放功能码,而其中有一些功能需要在DX中放一个值。试定义宏指令DOS21,要求只有在程序中定义了缓冲区时,汇编为: