




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,第七章 高级汇编语言技术,宏汇编 重复汇编 条件汇编,2,方法2、当这组指令较短或不适合把它写成一个子程序 时,可以把它义成一个宏,每次需要执行时就去调用这个宏。,问 如果在一个程序中多次使用同一组指令时,为了避免每次都要重写,该如何解决?,方法1、把这组指令写成一个子程序,每次需要执行时 只要调用这个子程序就可以了。,3,7.1 宏汇编 为用户提供更加容易、更加灵活、更加向高级语言靠拢的汇编工具。 宏:源程序中一段有独立功能的程序代码。 宏指令:用户自定义的指令。在编程时,将多次使用的功能 用一条宏指令来代替。,汇编语言程序语句,指令 伪指令(伪操作) 宏指令,4,子程序: 优点:模块化
2、,节省内存,可被多次调用,编程效率高。 缺点:额外开销(保存返回地址,计算转向地址,传递参 数等)大,增加了执行时间。适用于子功能代码较 长、调用比较频繁的情况。 宏调用: 优点:参数传送简单,执行效率高。 缺点:不节省空间,适用于子功能代码较短、传参较多的 情况。,5,宏定义 macro_name MACRO 哑元表 ; 形参/虚参 LOCAL 标号表 ENDM * macro_name 宏指令名(宏名),调用时用。 第一个符号必须是字母(注意与名称的差异) * 哑元表 形参表,哑元之间用逗号隔开 * 如果宏定义体有一个或多个标号,则必须用LOCAL伪操作列出所有的标号。?,(宏定义体),一
3、段有独立功能的程序代码,6,宏调用 macro_name 实元表 ; 实参 * 实元表中的实元与哑元表中的哑元在位置上一一对应; * 若实元数哑元数,则多余的实元无效; * 若实元数哑元数,则多余的哑元作“空(NUL)”处理; * 对宏指令的调用必须先定义后调用。 * 应当注意,宏展开后,即用实参取代形式参数之后,所得到的语句应该是有效的,否则汇编时会出错。,7,宏展开 源程序被汇编时,汇编程序把宏调用展开,也就是把宏定义体复制到调用宏指令的位置上,同时用实元取代哑元,由LOCAL定义的标号也由?0000?FFFF替代。,8,实元(在使用上要比子程序灵活) 常数、寄存器、存贮单元 用寻址方式能
4、找到的地址、表达式 指令的操作码、操作码的一部分,9,宏调用与子程序调用的区别: 子程序:在程序执行期间被调用,只占用自身大小的一段空间。,主程序, call sub1 call sub1 call sub1 ,子程序 sub1, ret,10,宏调用:在汇编期间被展开,每调用一次就把宏定义体 展开一次。,宏定义,宏调用,宏展开,Q macro x,y endm, Q a,b Q c,d Q e,f , ,11,(1)子程序调用是在程序执行期间进行的,主程序通过CALL指令转入于程序的入口地址去执行子程序,子程序执行完后RET指令返回到主程序的调用处(断点处);而宏调用是通过宏指令名和实在参数
5、(如果有要传递的参数的话)进行调用的,而且是在汇编期间展开宏定义体的。,(2)子程序中的这组指令的机器码在存储器中只需要存放一次;而宏调用则不同,每调用一次就把宏定义体展开一次,因而它占有的存储空间与调用次数有关,调用次数越多则占有的存储空间就越大。,(3)子程序调用时需要用堆栈,调用子程序和返回主程序都要开销必要的时间;而宏调用其宏定义体展开是插入在调用程序中,因此避免了调用时跳到宏和由宏返回所开销的时间。,子程序与宏调用工作方式的差异,如何选择用子程序还是用宏调用呢?,12,可以无变元 可以是操作码 可以是操作码的一部分,但在宏定义体中必须用 ; 注释 ; 宏展开时,;后面的注释不予展开。
6、,源程序(ASM文件)经汇编程序汇编,主要输出是OBJ文件和LST文件(列表文件)。LST文件同时列出源程序和机器语言程序清单,并给出符号表。,16,7.1.6 宏库的建立与调用,宏库:只包含若干宏定义的文件,扩展名为MAC或LIB 宏库的调用: 在程序的开始用INCLUDE语句说明,例如 INCLUDE C:MACRO.MAC INCLUDE D:AAAEEE.LIB 注:INCLUDE语句可以不放在程序的最前面,但必须放在所有的宏 调用之前,宏库的建立: 由定义即可,17,7.1.7 PURGE伪操作,宏指令名可与指令助记符和伪指令名同名,但这时宏指令的优先级最高,而同名的指令和伪操作便失
7、效。,格式: PURGE 宏指令名,宏指令名, PURGE可取消多个宏定义,而各宏指令名之间应以逗号分 隔。 功能:取消宏定义,使该宏定义为空。,伪指令PURGE可取消宏定义,恢复指令的原来功效。,18,例7.1 两个字相乘 宏定义: multiply MACRO opr1,opr2,result push dx push ax mov ax, opr1 imul opr2 mov result, ax pop ax pop dx ENDM 宏调用: multiply cx, var, xyzbx,宏展开: + push dx + push ax + mov ax, cx + imul var
8、 + mov xyzbx, ax + pop ax + pop dx,19,例7.2 保存寄存器 宏定义: savereg MACRO push ax push bx push cx push dx push si push di ENDM 宏调用: savereg,宏展开: + push ax + push bx + push cx + push dx + push si + push di,20,例 宏指令名与指令助记符或伪操作名相同,宏指令 的优先级最高。 宏定义: add MACRO opr1, opr2, result ENDM 宏调用: add xx, yy, zz purge a
9、dd ; 取消宏定义 ,21,例 求绝对值(使用LOCAL伪操作) 宏定义: absol MACRO oper LOCAL next cmp oper, 0 jge next neg oper next: ENDM 宏调用: absol var absol bx ,宏展开: + cmp var, 0 + jge ?0000 + neg var + ?0000: + cmp bx, 0 + jge ?0001 + neg bx + ?0001: ,22,宏汇编操作符 宏展开时,合并前后两个符号形成一个符号。,leap macro cond, lab j; 注释 ; 宏展开时,;后面的注释不予展开
10、。 例:Q MACRO m ; display a message 每次展开保留此注释 ; m is a string 每次展开不保留此注释 ENDM % 表达式 ; 汇编程序将%后面的表达式转换为数字,并在展开期间用这个数取代哑元。,24,7.2 重复汇编,在编写汇编语言程序中,有时需要进行连续地重复完成相同的或几乎完全相同的操作,这时可以使用重复汇编,使书写的程序变得相当简洁。,重复汇编有两种格式,重复伪操作 不定重复伪操作,25,说明 其中,REPT和ENDM为伪指令,它们必须成对出现,中间是要重复的指令体,重复的次数由表达式的值来决定。 注意:重复伪操作并不一定要用在宏定义体内。,格式
11、 RCPT 表达式 . RNDM,7.2.1 重复伪操作,26,IPR伪操作 格式 IRP 形式参数,参数表 (指令体) ENDM,说明其中,IRP和ENDM伪指令必须成对出现,其间是要重复的指令体。重复的次数由参数表中参数的个数所决定,而且每重复一次,依次用参数表中的参数来代替形式参数。参数表必须用尖括号括起来,参数间用逗号分隔。,7.2.2 不定重复伪操作 IPR伪操作,27,IPRC伪操作 格式 IRPC 形式参数,字符串(或字符串) (指令体) ENDM,说明其中,伪指令IRPC和ENDM必须成对出现,其间是重复的指令体,重复的次数取决于字符串中字符的个数,在每次重复时,依次用字符串的字符代替形式参数。,7.2.2 不定重复伪操作 IPRC伪操作,28,7.3 条件汇编,汇编语言提供了一组条件伪操作,用来指示编程序对给定的条件进行测试,并根据测试的结果有选择地对一段语句进行汇编处理。换句话说,汇编程序根据给定的条件是否为真来决定对一段语句是否进行汇编。,29,格式 IF xxxx 表达式 条件为真汇编此块 ELSE 条件为假汇编此块 ENDIF,说明其中,IF xxxx表示条件伪操作命令,它
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中科学核心知识点解析
- 工程项目推进中的时间管理诀窍试题及答案
- 水利水电工程社会影响力试题及答案
- 2023 年注册会计师《会计》(8 月 25 日第一场)考试及答案解析
- 2024水利水电工程设备管理考题试题及答案
- 移动通信基站设备维护与支持合同
- 智能化物流管理服务合同
- 农村生态农业技术合作框架协议
- 工程经济实务与决策试题及答案
- 物业智能管理系统推广合作协议
- 仓库新员工入职培训模板
- 2025年入团考试必考题目试题及答案
- 人工智能训练师(三级)职业技能鉴定理论考试题(附答案)
- 私人月嫂合同协议书下载
- 浙江开放大学2025年《行政复议法》形考作业2答案
- 动物生理学题库及答案(附解析)
- 2025年全国保密教育线上培训考试试题库带答案(典型题)含答案详解
- 消防改造协议书范本
- “艾梅乙”感染者消除医疗歧视制度-
- GB/T 10069.3-2024旋转电机噪声测定方法及限值第3部分:噪声限值
- TTJSFB 002-2024 绿色融资租赁项目评价指南
评论
0/150
提交评论