欢迎来到天天文库
浏览记录
ID:41552829
大小:300.00 KB
页数:46页
时间:2019-08-27
《汇编语言程序设计 第11章 高级汇编语言技术》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、8086/8088和ARM核汇编语言程序设计第11章高级汇编语言技术9/20/20211第11章高级汇编语言技术11.1宏汇编11.3条件汇编11.2重复汇编第11章高级汇编语言技术11.4库的使用9/20/20212第11章高级汇编语言技术什么是宏?宏(或宏指令)是源程序中一段有独立功能的程序代码,只需定义一次,可以多次调用。为什么使用宏汇编?在编制汇编语言程序过程中,有些功能程序段需要多次重复使用,所不同的只是参与操作的操作数。使用宏指令语句可以减少程序书写错误,缩短源程序长度,使源程序编写像高级语言一样清晰、简洁。特别是使用宏库后,
2、可以提高编程效率。为了减少编程的工作量,通常采用两种方法:①将程序段编写为独立的子程序②将程序段定义成宏11.1宏汇编由此引出宏定义、调用、参数传递、嵌套等问题9/20/20213第11章高级汇编语言技术宏定义的格式由伪指令MACRO与ENDM实现。形式如下:宏指令名MACRO[形式参数表]...;宏体ENDM11.1.1宏定义11.1宏汇编说明:(1)宏指令名由编程序者自定,但必须符合标号的命名规则。(2)MACRO和ENDM是一对伪指令,分别表示宏定义的开始和结束。(3)宏体必须是指令、伪指令及宏指令构成的程序段。(4)形参表可根据需
3、要作取舍。当需要设置多个形参时,各形参之间要用逗号分隔。9/20/20214第11章高级汇编语言技术宏定义的功能将宏体定义为一条宏指令,以便在其后的程序中通过对宏指令的调用来使用对应的宏体。11.1宏汇编11.1.1宏定义9/20/20215第11章高级汇编语言技术例11.1以下宏定义所定义的宏指令AX10可以实现寄存器AX内容乘以10的功能。AX10MACRO;宏名AX10PUSHDXSALAX,1MOVDX,AXSALAX,1SALAX,1ADDAX,DXPOPDXENDM11.1宏汇编11.1.1宏定义9/20/20216第11章高
4、级汇编语言技术11.1宏汇编11.1.2宏调用和宏扩展宏调用的格式宏调用的格式为:宏指令名[实参表]说明:宏指令名所指定的宏指令的定义必须放在该宏调用之前。(子程序没有这个规定)(2)实参表通常与宏定义中形参表相对应。当需要使用多个实参时,各实参之间要用逗号分隔。9/20/20217第11章高级汇编语言技术宏扩展宏汇编程序在汇编源程序时自动用宏指令的内容代替宏指令,叫宏扩展。11.1宏汇编11.1.2宏调用和宏扩展当宏汇编程序在汇编时扫描到宏指令语句时,就把宏定义中宏体的程序段目标代码插入在宏指令语句的位置上,如果是带参数的宏指令语句,同
5、时把相应实参一一替代宏体中对应形参的位置,对原有宏体目标代码作相应修改。这样,在程序的目标代码中,每个宏指令语句位置上都包含有相应宏体的目标代码,因此宏指令的使用不会减少程序的目标代码长度。注意:它与子程序的差别。前者在翻译阶段,后者在执行阶段起作用。9/20/20218第11章高级汇编语言技术两个字操作数相乘宏定义:MULTIPLYMACROOPR1,OPR2,RESULTPUSHDXPUSHAXMOVAX,OPR1IMULOPR2MOVRESULT,AXPOPAXPOPDXENDM宏调用:…MULTIPLYCX,VAR,XYZ[BX]
6、…MULTIPLY240,BX,SAVE11.1宏汇编11.1.2宏调用和宏扩展9/20/20219第11章高级汇编语言技术宏展开:…1PUSHDX1PUSHAX1MOVAX,CX1IMULVAR1MOVXYZ[BX],AX1POPAX1POPDX…1PUSHDX1PUSHAX1MOVAX,2401IMULBX1MOVSAVE,AX1POPAX1POPDX…11.1宏汇编11.1.2宏调用和宏扩展9/20/202110第11章高级汇编语言技术11.1宏汇编11.1.3宏定义和宏调用中参数的使用实参和形参是一一对应的,若实参的个数多于形参,
7、则忽略多余的实参;若实元的个数少于哑参,则多余的形参为空。形参可以作为宏体中指令的操作数(变量,寄存器),指令,指令的一部分,标号,宏调用用实参取代形参时必须保证所产生的指令是有效。9/20/202111第11章高级汇编语言技术变元可以是操作码。宏定义:FOOMACROP1,P2,P3MOVAX,P1P2P3ENDM宏调用:FOOWORD——VAR,INC,AX宏展开:1MOVAX,WORD——VAR1INCAX11.1宏汇编11.1.3宏定义和宏调用中参数的使用9/20/202112第11章高级汇编语言技术变元可以是操作码的一部分。CO
8、NCALLMACROCON,SUBNLOCALEGOONJN&CONGOONCALLSUBNGOON:NOPENDM该宏定义所定义的宏指令CONCALL可以实现子程序的条件调用。设有宏调用CO
此文档下载收益归作者所有