文档介绍:第10章高级汇编语言技术
主讲人:×××
宏汇编
在编写汇编语言程序的过程中,有的某个程序段要出现许多次,有的只是参数不同,但功能完全一样,则这样的程序段可以定义成一个指令,并且称它为宏指令。
宏是源程序中一段有独立功能的程序代码。它只需要在源程序中定义一次,就可以多次定义它,调用时只需用一个宏指令语句就可以了。
若想在汇编语言中使用宏指令,就要定义一个宏。宏定义是用一组伪操作来实现的。宏定义格式为:
宏指令名 MACRO 形参1,形参2,…
┇宏体
ENDM
宏指令名:宏定义的名字,不可缺省,宏调用时需要用它,第一个符号必须是字母,其后可以是字母或数字。
MACRO…ENDM:宏定义伪指令助记符,不可缺省。它们成对出现,表示宏定义的开始和结束,ENDM前不带宏指令名。
宏体:一段有独立功能的程序代码段。
形式参数:又称哑元、虚参,是可选项,带参数时候,各个形参之间用逗号隔开。
宏调用和宏展开
1、宏调用
在汇编语言中使用已定义过的宏指令,称为宏调用。宏调用格式为:
宏指令名实参1,实参2,…
宏调用只需要有宏指令名,如果宏定义中有形参,则宏调用时须带有实参来代替形参,实参的个数,顺序,类型要与形参一一对应,各个实参之间用逗号分开。原则上实参的个数与形参的个数相等,但汇编程序不要求它们必须相等,如果实参个数大于形参个数,那么多余的实参不予考虑,若实参个数小于形参,则多余的形参作“空”处理。
2、宏展开
汇编程序在对源程序汇编时,对每个宏调用作宏展开,即用宏定义中的宏体取代宏指令名,并用实参一一对应代替形参。
宏调用中的参数使用
为了宏定义和引用的某些特殊需要,有的实参是由字符、空格等特殊符号组成的,因此汇编程序支持几个具有特定含义的操作符。
1、连接操作符&
在宏定义中,如果形式参数与其它字符连接在一起,或形式参数出现在字符串之中,使用连接操作符&。在宏指令定义的具体使用时,连接操作符&可以在形参的前面,也可在形参的后面。在宏指令展开时,对应形参的实参就与它前面或后面的符号连接在一起构成一个新的符号。
2、文本操作符< >
文本操作符是一对尖括号<>,用它括起来的内容将作为一个字符串来进行形式参数的整体替换。在宏引用时,如果实参内包含逗号、空格等间隔符,则需要使用该操作符,以保证实参的完整性。如果实参是某个具有特殊含义的字符,为了使它只表示该字符本身,也需要用该操作符括起来。
3、表达式操作符%
进行宏调用时,如要在实参中使用“%”,则在宏指令调用时汇编程序将获取“%”后常数表达式的值作为参数,而非表达式本身。
4、字符操作符!
字符操作符!的作用说明,“!”后的字符不是特殊字符,而是普通字符。对于包含在“<”、“>”、“!”、“%”之间的文本串,汇编程序将以普通字符处理。如将“!”作为普通字符,则使用!!。