第七章 宏汇编.ppt
文本预览下载声明
宏定义 宏指令在使用之前要先定义. ●定义格式: 宏指令名MACRO 形式参数[,形式参数] 宏体 ENDM 例如: 某一程序中要多次使用DOS9号功能调用: ┇ LEA DX,BUF1 MOV AH,9 INT 21H ┇ LAE DX,IN_BUF MOV AH,9 INT 21H 宏定义 他们之间的差别仅在于输出缓冲区的首址不一样.如果讲该首址定义成形参,就可将其写成宏定义: WRITE MACRO A LEA DX,A MOV AH,9 INT 21H ENDM 说明: (1)宏名字可以与其他变量,标号,保留字同名,汇编程序在处理时宏名字优先级最高.利用这一特点,程序员可以设计新的指令系统. 宏定义 (2) 形参可有可无个数不限,但总字符长度不超过132个,个参数之间用逗号隔开; (3) ENDM和MACRO必须成对出现; (4) 宏指令必须先定义后调用,因为它是在汇编期间处理的. 汇编程序的处理方式: (1) 第一次扫描时,先扫描宏定义,将宏名字、形参、宏体均填入宏定义表中再遇到宏调用时,则嵌入宏体,用实参按位置顺序替换形参,这一过程称为宏扩展。 (2) 第二次扫描时,再将其转换成目标代码. 宏展开 宏展开:汇编程序把宏调用展开 宏定义体 复制到宏指令位置,实参代虚参 LOCAL中的标号 ??0000~??ffff 宏指令中的参数 宏库的使用 对于经常使用的宏定义,用户可将它们集中在一起,建成宏库供自己或别人随时调用。由于宏库为文本文件,可用一般编辑程序建立或修改,文件名也可由用户任意指定。 例如:我们利用编辑程序,建立了一个宏库MACRO.LIB: 当程序中需要调用时,应首先将宏库加入自己的源文件中,然后按宏库中各宏定义的规定调用即可。 将宏库加入源文件一起进行汇编可用伪指令INCLUDE实现。 ●语句格式: INCLUDE 文本文件名 ●功 能:将指定的文本文件从本行起加入汇编,直到该文本文件的最后一行汇编完后,再继续汇编INCLUDE后面的语句。 宏库调用 宏指令与子程序的比较 不同点: (1)处理时间不同; (2)处理方式不同; (3)目标程序的长度不同; (4)执行速度不同; (5)参数传递方式不同; 建立宏库: macro1 MACRO [哑元表] …… ENDM macro2 MACRO [哑元表] …… ENDM …… macroN MACRO [哑元表] …… ENDM EDIT EXP.ASM include MACRO.MAC …… macro1 [实元表] …… macro2 [实元表] …… macroN [实元表] …… purge macroN EDIT MACRO . MAC 调用宏库: * * ? 宏汇编 ? 重复汇编 ? 条件汇编 第七章 高级汇编语言技术 1. 宏汇编 宏:源程序中一段有独立功能的程序代码。 宏指令:用户自定义的指令。在编程时,将多次 使用的功能用一条宏指令来代替。 汇编语言程序 指令 伪指令(伪操作) 宏指令 优:模块化 省内存 缺:开销大 宏定义: Q macro x,y … endm 主程序: … Q a, b … Q c, d … Q e, f … 目标程序: … … … … … … 优: 参数传送简单,执行效率高 缺: 占用内存空间大 主程序: … CALL ---- … CALL ---- … CALL ---- … 子程序: … … … RET 宏定义:
显示全部