欢迎来到天天文库
浏览记录
ID:52322186
大小:420.56 KB
页数:45页
时间:2020-04-04
《汇编语言程序设计第11章高级汇编语言技术.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、8086/8088和ARM核汇编语言程序设计第11章高级汇编语言技术教学重点:宏定义、宏调用和宏展开8/17/20211第11章高级汇编语言技术11.1宏汇编11.3条件汇编11.2重复汇编第11章高级汇编语言技术11.4库的使用8/17/20212第11章高级汇编语言技术11.1宏汇编宏是具有宏名的一段汇编语句序列宏需要先定义,然后在程序中进行宏调用由于形式上类似其他指令,所以常称其为宏指令宏指令实际上是一段代码序列的缩写;在汇编时,汇编程序用对应的代码序列替代宏指令因为是在汇编过程中实现的宏展开,所以常称为宏汇编8/17/20213第11章高级
2、汇编语言技术宏定义的格式由伪指令MACRO与ENDM实现。形式如下:宏指令名MACRO[形式参数表]...;宏体ENDM11.1.1宏定义11.1宏汇编说明:(1)宏指令名由编程序者自定,但必须符合标号的命名规则。(2)MACRO和ENDM是一对伪指令,分别表示宏定义的开始和结束。(3)宏体必须是指令、伪指令及宏指令构成的程序段。(4)形参表可根据需要作取舍。当需要设置多个形参时,各形参之间要用逗号分隔。8/17/20214第11章高级汇编语言技术宏定义的功能将宏体定义为一条宏指令,以便在其后的程序中通过对宏指令的调用来使用对应的宏体。11.1宏汇
3、编11.1.1宏定义8/17/20215第11章高级汇编语言技术例11.1以下宏定义所定义的宏指令AX10可以实现寄存器AX内容乘以10的功能。AX10MACRO;宏名AX10PUSHDXSALAX,1MOVDX,AXSALAX,1SALAX,1ADDAX,DXPOPDXENDM11.1宏汇编11.1.1宏定义8/17/20216第11章高级汇编语言技术11.1宏汇编11.1.2宏调用和宏扩展宏调用的格式宏调用的格式为:宏指令名[实参表]说明:宏指令名所指定的宏指令的定义必须放在该宏调用之前。(2)实参表通常与宏定义中形参表相对应。当需要使用多个实
4、参时,各实参之间要用逗号分隔。8/17/20217第11章高级汇编语言技术宏扩展宏汇编程序在汇编源程序时自动用宏指令的内容代替宏指令,叫宏扩展。11.1宏汇编11.1.2宏调用和宏扩展当宏汇编程序在汇编时扫描到宏指令语句时,就把宏定义中宏体的程序段目标代码插入在宏指令语句的位置上,如果是带参数的宏指令语句,同时把相应实参一一替代宏体中对应形参的位置,对原有宏体目标代码作相应修改。这样,在程序的目标代码中,每个宏指令语句位置上都包含有相应宏体的目标代码,因此宏指令的使用不会减少程序的目标代码长度。注意:它与子程序的差别。前者在翻译阶段,后者在执行阶段
5、起作用。8/17/20218第11章高级汇编语言技术两个字操作数相乘宏定义:MULTIPLYMACROOPR1,OPR2,RESULTPUSHDXPUSHAXMOVAX,OPR1IMULOPR2MOVRESULT,AXPOPAXPOPDXENDM宏调用:…MULTIPLYCX,VAR,XYZ[BX]…MULTIPLY240,BX,SAVE11.1宏汇编11.1.2宏调用和宏扩展宏展开:…1PUSHDX1PUSHAX1MOVAX,CX1IMULVAR1MOVXYZ[BX],AX1POPAX1POPDX…1PUSHDX1PUSHAX1MOVAX,240
6、1IMULBX1MOVSAVE,AX1POPAX1POPDX…8/17/20219第11章高级汇编语言技术11.1宏汇编11.1.2宏调用和宏扩展dispcharmacrochar;;宏定义movah,2;;宏定义体movdl,charint21hendm…dispchar‘?’;宏调用(宏指令)…1movah,2;宏展开1movdl,’?’1int21h8/17/202110第11章高级汇编语言技术第11章:宏与子程序的比较比较仅是源程序级的简化:宏调用在汇编时进行程序语句的展开,不需要返回;不减小目标程序,执行速度没有改变通过形参、实参结合实现
7、参数传递,简捷直观、灵活多变还是目标程序级的简化:子程序调用在执行时由CALL指令转向、RET指令返回;形成的目标代码较短,执行速度减慢需要利用寄存器、存储单元或堆栈等传递参数宏子程序8/17/202111第11章高级汇编语言技术第11章:宏与子程序的比较结论宏与子程序具有各自的特点,程序员应该根据具体问题选择使用那种方法通常,当程序段较短或要求较快执行时,应选用宏;当程序段较长或为减小目标代码时,要选用子程序比较结论宏子程序8/17/202112第11章高级汇编语言技术11.1宏汇编11.1.3宏定义和宏调用中参数的使用宏定义时,可以无参数,可
8、以带有一个参数,也可以具有多个参数;参数可以是常数、变量、存储单元、指令(操作码)或它们的一部分,也可以是表达式;宏定义体
此文档下载收益归作者所有