宏定义形式
在MASM 6.11编程系统中,其宏定义的一般形式如下:
| 宏名 | MACRO [参数1[:tag]] [,参数2[:tag]...] | |
| [LOCAL varlist] … [EXITM [value]] ENDM | ;宏定义体内的局部变量和标号 ;宏的定义体 | |
对上述宏定义的说明与9.1.1节中的说明完全一致,其需要增加的说明如下:
| tag—— | 其值可以是REQ、=<缺省值>或VARARG | ||||||
| |||||||
| value—— | 宏功能的返回值,其为可选项。 |
9.6.2重复伪指令REPEAT
重复伪指令REPEAT与前面9.4.1节中伪指令REPT在功能和使用方式方面完全一致,设置该伪指令的主要原因是保证与先前版本的兼容性。
伪指令REPEAT的使用方式如下:
| REPEAT | 数值表达式 | |
| 语句序列 | ;被重复的汇编语言语句 | |
| ENDM
| ||
9.6.3循环伪指令WHILE
http://www.changsha.cn/bj/yl/xywy/2014/0416/563788.html
http://zx.zynews.com/hyzx/yskt/5398098762.html
http://www.yltvb.com/xwbk/redianxinwen/5389545718.html
http://zx.zynews.com/hyzx/yskt/5398102537.html
http://www.changsha.cn/bj/yl/xywy/2014/0416/563789.html
http://zx.zynews.com/hyzx/yskt/5398105715.html
http://www.changsha.cn/bj/yl/xywy/2014/0416/563790.html
http://www.changsha.cn/bj/yl/xywy/2014/0416/563791.html
http://zx.zynews.com/hyzx/yskt/5398108045.html
http://zx.zynews.com/hyzx/yskt/5398111150.html
http://www.changsha.cn/bj/yl/xywy/2014/0416/563792.html
http://zx.zynews.com/hyzx/yskt/5398113539.html
http://www.changsha.cn/bj/yl/xywy/2014/0416/563793.html
http://zx.zynews.com/hyzx/yskt/5398117977.html
http://zx.zynews.com/hyzx/yskt/5398161349.html
http://www.zznews.cn/hyzx/jkxx/5406327705.html
http://www.lfxww.com/2014/shichangshangxun/2014/0416/804574.html
http://zx.zynews.com/hyzx/yskt/5390123823.html
循环伪指令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 |
本文详细介绍了在MASM 6.11编程系统中宏定义的形式,特别是关注了重复伪指令REPEAT和循环伪指令WHILE的使用。REPEAT与REPT功能相似,用于重复汇编指令,而WHILE则在条件为真时执行指令块,提供了一种条件循环的控制结构。此外,通过举例展示了如何使用这两个伪指令来编写计算1到k的累加和的宏定义。
2323

被折叠的 条评论
为什么被折叠?



