经典汇编语言教程:9.6 宏的扩展——REPEAT/WHILE
3868 点击·0 回帖
![]() | ![]() | ||||||||||||||||||||||||||||||||||||||||||||||||
![]() | MASM6.11编程系统对宏定义及其相关语句进行了一定程度的扩充。虽然这些扩充给编程带来了一些方便,但它们不一定能被其它的汇编语言编程系统所接受,所以,程序员在使用这些方便的扩充功能时,要注意到可能带来的限制。 下面介绍MASM 6.11编程系统对宏及其相关语句的扩充。 9.6.1 宏定义形式 在MASM 6.11编程系统中,其宏定义的一般形式如下:[table][tr][td] 宏名[/td][td=2,1]MACRO [参数1[:tag]] [,参数2[:tag]...][/td][/tr][tr][td][/td][td][LOCAL varlist] … [EXITM [value]] ENDM[/td][td];宏定义体内的局部变量和标号 ;宏的定义体[/td][/tr][/table] 对上述宏定义的说明与9.1.1节中的说明完全一致,其需要增加的说明如下:[table][tr][td]tag—— [/td][td]其值可以是REQ、=<缺省值>或VARARG[/td][/tr][tr][td][/td][td]
9.6.2重复伪指令REPEAT 重复伪指令REPEAT与前面9.4.1节中伪指令REPT在功能和使用方式方面完全一致,设置该伪指令的主要原因是保证与先前版本的兼容性。 伪指令REPEAT的使用方式如下:
9.6.3循环伪指令WHILE 循环伪指令WHILE的使用方式如下:
其功能是先判断表达式Exp是否为假(或为0),若是,则终止该伪指令的功能,否则,循环汇编下面的指令块。表达式Exp是能在汇编时计算出其值的数值表达式。 例9.16:编写一个带有参数result和k的宏,其功能是把1+2+…+k的累加和存入result之中,其中:result是不可缺省的,k的缺省值为1。 解:
有了上面的宏定义,就可书写下面的宏引用来实现其相应的功能:
| ||||||||||||||||||||||||||||||||||||||||||||||||
![]() | ![]() |