经典汇编语言教程:9.2 宏参数的特殊运算符

9.2 宏参数的特殊运算符

为了宏定义和引用的某些特殊需要,汇编程序还支持几个具体特定含义的运算符。

9.2.1 连接运算符

在宏定义中,如果形式参数与其它字符连接在一起,或形式参数出现在字符串之中,那么,就必须使用连接运算符(&)。

例9.5 定义一个转移宏JUMP,其一个参数决定转移类别,另一个参数指定转移目标。

解:
JUMPMACROCON, here
J&CONhere
ENDM

假设存在下面二个引用语句,那么,点击它们可得到扩展后的指令。

JUMP  mp, next 1 Jmp next

JUMP  nz, next1 1 Jnz next1

例9.6 定义一个问候性的字符串宏GREETING,其一个参数说明字符串的变量名,另一个参数指名问候的对象。

解:
GREETINGMACROMSG, name
MSGDB 'Hello, &name'
ENDM

假设有下面引用语句,那么,点击它们将会扩展得到三个问候性的字符串定义。

GREETING  STR1, 张三 1 STR1 DB 'Hello, 张三'

GREETING  STR2, 李四 1 STR2 DB 'Hello, 李四'

GREETING  MSG1, John 1 MSG1 DB 'Hello, John'

9.2.2字符串整体传递运算符

字符串整体传递运算符是一对尖括号<>,用它括起来的内容将作为一个字符串来进行形式参数的整体替换。在宏引用时,如果实参内包含逗号、空格等间隔符,则必须使用该操作符,以保证实参的完整性。如果实参是某个具有特殊含义的字符,为了使它只表示该字符本身,也需要用该运算符括起来。

假设有下面定义字符串的宏DEFMSG,

DEFMSGMACROMSG
DB '&MSG', 0DH,0AH, '$'
ENDM

那么,使用和不使用该运算符的引用宏及其宏扩展如下所示:

DEFMSG  <Are you ready?> 1DB  'Are you ready?', 0DH, 0AH, '$'

DEFMSG  Are you ready? 1DB  'Are', 0DH, 0AH, '$'

上页:上一课 下页:下一课

经典汇编语言教程·相关目录

第1章 汇编语言的由来,数据类型第2章 CPU资源和存储器
第3章 操作数的寻址方式第4章 标识符和表达式
第5章 微机CPU的指令系统第6章 程序的基本结构
第7章 子程序和库第8章 输入输出和中断
第9章 宏第10章 应用程序设计
第11章 数值运算协处理器第12章 汇编语言和C语言
汇编语言重要附录Windows API函数大全
版权所有 © 中山市飞娥软件工作室 证书:粤ICP备09170368号