2.宏指令
在汇编语言程序中,有的程序段有时要多次使用,为了使在源程序中不重复书写这个程序段,可以用一条宏指令来代替,在汇编时由汇编程序产生所需的代码。宏指令的使用过程是宏定义、宏调用和宏扩展。
(1)宏定义
宏指令的定义格式:
宏指令名 MACRO[形式参数]┆(宏体) ENDM说明:
●宏指令名是给宏指令起的名字,MACRO是宏定义的定义符,ENDM是宏定义的结束符,两者必须成对出现。
●MACRO和ENDM之间的指令序列称为宏体,即用宏指令要代替的程序段。宏指令具有接受参数的能力,宏体中使用的形式参数必须在MACRO语句中出现。当有两个以上参数时,需用逗号隔开。
●在宏指令被调用时,这些参数被给出的一些名字或数值所取代。
(2)宏调用经过宏定义后,在源程序中的任何位置可以直接使用宏指令名,实现宏指令的调用,称为宏调用。宏调用的结果是将汇编程序翻译成该宏定义的程序段,而产生的目标代码拷贝到调用点。宏调用的格式:
宏调令名(参数,……)
(3)宏扩展
在汇编宏指令时,宏汇编程序将宏体的指令插入到宏指令所在的位置上,并用实在参数代替形式参数,同时在插入的每一条指令前加一个“+”号,这个过程称为宏扩展。
(4)常用宏指令
80x86宏汇编中常用宏指令的格式及功能如下表所示。
常用宏指令
名称 格式 功能
MACRO 宏定义伪指令
PURGE PURGE宏指令名[…]
其功能是取消宏指令名的定义。一个PURGE指令可同时取消多个宏定义
REPT REPT<表达式> ┆(指令体)ENDM 其功能是重复执行指令体所包含的话句,重复次数由表达式的值确定
IRP IRP形式参量,(参数表) …(指令体)ENDM 重复执行指令体内所包含的语句。重复次数由参数表中参数的个数决定。参数表中参数必须用<>括起来,参数间用逗号分隔。每重复一次,依次用参数表中的参数代替形式参数
IRPC IRPC形式参数,字符串 ┆(指令体)ENDM 功能与IRP相同,只是用字符串代替IRP中指令中的参数表
3.重复汇编伪指令
这是重复汇编某一语句序列的伪指令,它可以出现在宏定义中,也可以单独出现在源程序中,注意,重复汇编是在程序汇编期间对某些语句进行重复汇编,而不是在程序运行期执行重复操作。重复汇编伪指令有以下3种形式:
(1)格式1
REPT<表达式>
┆ ;需重复的语句组
ENDM
这种宏指令用于重复块次数确定的伪操作,它表示按表达式所指定的次数,重复REPT和ENDM之间的语句块,表达式的取值范围是0~65535。
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |