高级汇编语言技术

高级汇编语言技术

ID:39467645

大小:394.81 KB

页数:42页

时间:2019-07-04

高级汇编语言技术_第1页
高级汇编语言技术_第2页
高级汇编语言技术_第3页
高级汇编语言技术_第4页
高级汇编语言技术_第5页
资源描述:

《高级汇编语言技术》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第七章高级汇编语言技术§7.1宏汇编§7.2重复汇编§7.3条件汇编宏(Macro)是汇编语言的一个特点,它是与子程序类似又独具特色的另一种简化源程序的方法——统称宏结构1§7.1宏汇编在汇编语言中,如果在源程序中多次使用到同一个程序段,则可以将这个程序段定义成一个“指令”,叫宏指令。2仅是源程序级的简化:宏调用在汇编时进行程序语句的展开,不需要返回;不减小目标程序,执行速度没有改变通过形参、实参结合实现参数传递,简捷直观、灵活多变还是目标程序级的简化:子程序调用在执行时由CALL指令转向、RET指

2、令返回;形成的目标代码较短,执行速度减慢需要利用寄存器、存储单元或堆栈等传递参数比较宏子程序共同点:简化源程序的书写;节省编程的工作量3宏与子程序具有各自的特点,程序员应该根据具体问题选择使用那种方法通常,当程序段较短或要求较快执行时,应选用宏;当程序段较长或为减小目标代码时,要选用子程序比较宏子程序4§7.1宏汇编宏:具有宏名的一段汇编语句序列——宏定义时书写宏指令:这段汇编语句序列的缩写——宏调用时书写宏展开:宏指令处用这段宏代替的过程——宏汇编时实现宏的参数功能强大,颇具特色配合宏,还有宏操作

3、符和有关伪指令5一、宏定义mainbeginMACRO;定义名为mainbegin的宏,无参数movax,@data;宏定义体movds,axENDM;;宏定义结束宏名macro[形参表]宏定义体endmmainendMACROretnum;带有形参retnummoval,0movah,retnum;宏定义中使用参数int21hENDM宏注释符6宏调用及其展开start:mainbegin;宏调用,建立DS内容……mainend4ch;宏调用,返回DOSendstart宏名[实参表]宏调用的实质是在

4、汇编过程中进行宏展开对于宏来说,先定义,后调用。宏展开的具体过程是:当汇编程序扫描源程序遇到已有定义的宏调用时,即用相应的宏定义体取代源程序的宏指令,同时用位置匹配的实参对形参进行取代7宏展开start:mainbegin;宏指令1movax,@data;宏展开1movds,axmainend4ch;宏指令1moval,0;宏展开1movah,4ch1int21h在汇编时,用宏定义体的代码序列替代宏指令的过程8宏展开当宏汇编程序扫描到宏指令语句(即宏调用)时,宏汇编程序就把宏指令定义中宏体的程序段代

5、码替代宏指令语句。若是带参数的宏调用,则同时用相应的实参替代宏体中对应形参的位置,并对原有宏体代码作修改。9宏展开下面是一个源程序的列表文件,它展示了宏定义、宏调用和宏展开的全部过程。在列表文件中,左边带“+”号的指令是宏汇编程序在宏展开时自动生成的指令。宏定义本身不生成任何目标代码,宏指令语句本身也不生成目标代码,它仅表示宏调用出现的位置。10EXCH_MEMMACROMEM_l,MEM_2,REGMOVREG,MEM_1XCHGREG,MEM_2MOVMEM_1,REGENDMDATASEGME

6、NTDA_W1DW55AAHDA_W2DW6688HDATAENDSCODESECMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AX┇11;宏调用和宏展开EXCH_MEMDA_W1,DA_W2,AX;宏指令语句+MOVAX,DA_Wl+XCHGAX,DA_W2+MOVDA_W1,AX┇MOVAH,4CHINT21HCODEENDSENDSTART12子程序调用和宏调用的区别子程序时在程序执行期间由主程序调用的,它只占有它自身大小的一个

7、空间宏调用是在汇编期间展开的,每调用一次就把宏定义体展开一次,因而它占有的存储空间与调用次数有关。13宏的参数可以无参数,例如mainbegin可以带有一个参数,例如mainend也可以具有多个参数;参数可以是常数、变量、存储单元、指令(操作码)或它们的一部分,也可以是表达式;宏定义体可以是任何合法的汇编语句,既可以是硬指令序列,又可以是伪指令序列;14;宏定义shlextmacroshloprand,shlnumpushcxmovcl,shlnumshlshloprand,clpopcxendm;

8、宏指令shlextax,6;宏展开1pushcx1movcl,061shlax,cl1popcx15宏的参数为了宏定义和引用的某些特殊需要,有时实参是由字符、空格等特殊符号组成的,因此汇编程序支持几个具有特定含义的运算符。1.连接运算符&在宏定义中,如果形式参数与其它字符连接在一起,或形式参数出现在字符串之中,那么,就必须使用连接运算符(&)。在宏指令定义的具体使用时,连接操作符&可以在形参的前面,也可在形参的后面。在宏指令展开时,对应形参的实参就与它前面或后面的符号

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

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

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