ITEEDU

9.6.2 重复伪指令REPEAT

重复伪指令REPEAT与前面9.4.1节中伪指令REPT在功能和使用方式方面完全一致,设置该伪指令的主要原因是保证与先前版本的兼容性。

伪指令REPEAT的使用方式如下:

REPEAT 数值表达式 

语句序列 ;被重复的汇编语言语句 

ENDM 

9.6.3 循环伪指令WHILE

循环伪指令WHILE的使用方式如下:

 WHILE Exp

语句序列 ;被重复的汇编语言语句

 ENDM

其功能是先判断表达式Exp是否为假(或为0),若是,则终止该伪指令的功能,否则,循环汇编下面的指令块。表达式Exp是能在汇编时计算出其值的数值表达式。

例9.16:编写一个带有参数result和k的宏,其功能是把1+2+…+k的累加和存入result之中,其中:result是不可缺省的,k的缺省值为1。

解:


SUM MACRO result:REQ, k:=<1>

LOCAL n

n = k

mov result, 0

WHILE n

add?result, n

n = n - 1

ENDM

ENDM

有了上面的宏定义,就可书写下面的宏引用来实现其相应的功能:

SUM ax, 10 ;寄存器ax=1+2+3+…+10

SUM bh ;寄存器bh=1,因为第二个形参取其缺省值 

SUM ecx, 100? ;寄存器ecx=1+2+3+…+100

SUM data, 20 ;存储单元data=1+2+3+…+20