汇编语言IBM-PC_第七章_th.ppt

汇编语言IBM-PC_第七章_th.ppt

ID:48749719

大小:75.00 KB

页数:20页

时间:2020-01-21

汇编语言IBM-PC_第七章_th.ppt_第1页
汇编语言IBM-PC_第七章_th.ppt_第2页
汇编语言IBM-PC_第七章_th.ppt_第3页
汇编语言IBM-PC_第七章_th.ppt_第4页
汇编语言IBM-PC_第七章_th.ppt_第5页
资源描述:

《汇编语言IBM-PC_第七章_th.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第七章高级汇编语言技术宏汇编重复汇编条件汇编为用户提供更加容易、更加灵活、更加向高级语言靠拢的汇编工具。7.1宏汇编宏:源程序中一段有独立功能的程序代码。宏指令:用户自定义的指令。在编程时,将多次使用的功能用一条宏指令来代替。汇编语言程序指令伪指令(伪操作)宏指令1宏定义macro_nameMACRO[哑元表];形参/虚参[LOCAL标号表]……(宏定义体)……ENDM*如果宏定义体有一个或多个标号,则必须用LOCAL伪操作列出所有的标号。宏调用macro_name[实元表];实参*实元表中的实元与哑元表中的哑元在位置上一一对应;*若实元数>哑元数,

2、则多余的实元无效;*若实元数<哑元数,则多余的哑元作“空(NUL)”处理;*对宏指令的调用必须先定义后调用。2宏展开源程序被汇编时,汇编程序把宏调用展开,也就是把宏定义体复制到调用宏指令的位置上,同时用实元取代哑元,由LOCAL定义的标号也由??0000~??FFFF替代。例7.2保存寄存器宏定义:saveregMACROpushaxpushbxpushcxpushdxpushsipushdiENDM宏调用:savereg宏展开:+pushax+pushbx+pushcx+pushdx+pushsi+pushdi3例7.1两个字相乘宏定义:multi

3、plyMACROopr1,opr2,resultpushdxpushaxmovax,opr1imulopr2movresult,axpopaxpopdxENDM宏调用:multiplycx,var,xyz[bx]宏展开:+pushdx+pushax+movax,cx+imulvar+movxyz[bx],ax+popax+popdx4例7.7宏指令名与指令助记符或伪操作名相同,宏指令的优先级最高。宏定义:addMACROopr1,opr2,result…………ENDM宏调用:……addxx,yy,zzpurgeadd;取消宏定义……5例7.8求绝对值

4、(使用LOCAL伪操作)宏定义:absolMACROoperLOCALnextcmpoper,0jgenextnegopernext:ENDM宏调用:……absolvar……absolbx……宏展开:……+cmpvar,0+jge??0000+negvar+??0000:……+cmpbx,0+jge??0001+negbx+??0001:……6宏汇编操作符&;;%符号1&符号2;宏展开时,合并前后两个符号形成一个符号。leapmacrocond,labj&condlabendm宏定义:宏调用:leapz,there……leapnz,here宏展开:+

5、jzthere……+jnzhere例7.47;;注释;宏展开时,;;后面的注释不予展开。例:QMACROm;displayamessage每次展开保留此注释;;misastring每次展开不保留此注释……ENDM%表达式;汇编程序将%后面的表达式转换为数字,并在展开期间用这个数取代哑元。8列表伪操作源程序(ASM文件)经汇编程序汇编,主要输出是OBJ文件和LST文件(列表文件)。LST文件同时列出源程序和机器语言程序清单,并给出符号表。.LALL:在LST清单中列出宏展开后的全部语句(包括注释)。.SALL:在LST清单中不列出任何宏展开后的语句。.

6、XALL:省略的列表方式,只列出产生目标代码的语句。9宏调用与子程序调用的区别:子程序:在程序执行期间被调用,只占用自身大小的一段空间。主程序……callsub1……callsub1……callsub1……子程序sub1………………ret10宏调用:在汇编期间被展开,每调用一次就把宏定义体展开一次。宏定义宏调用宏展开Qmacrox,yendm……Qa,b……Qc,d……Qe,f…………………………11子程序:优点:模块化,节省内存,可被多次调用,编程效率高。缺点:额外开销(保存返回地址,计算转向地址,传递参数等)大,增加了执行时间。适用于子功能代码较

7、长、调用比较频繁的情况。宏调用:优点:参数传送简单,执行效率高。缺点:不节省空间,适用于子功能代码较短、传参较多的情况。127.2重复汇编用于连续产生完全相同或基本相同的一组代码。重复伪操作REPT格式:REPT表达式……;重复块ENDM例7.13X=0REPT10X=X+1DBXENDM+DB1+DB2+DB3……+DB10汇编后:13例7.14把字符‘A’到‘Z’的ASCII码填入数组TABLECHAR=‘A’TABLELABELBYTEREPT26DBCHARCHAR=CHAR+1ENDM+DB61H+DB62H+DB63H……+DB7AH汇编

8、后:14不定重复伪操作IRP/IRPCIRP格式:IRP哑元,<自变量表>……;重复块ENDM每次重复用自变

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。