汇编语言程序设计 教学课件 作者 董少明 第9章 高级汇编技术.ppt

汇编语言程序设计 教学课件 作者 董少明 第9章 高级汇编技术.ppt

ID:50482858

大小:660.00 KB

页数:77页

时间:2020-03-09

汇编语言程序设计 教学课件 作者 董少明 第9章 高级汇编技术.ppt_第1页
汇编语言程序设计 教学课件 作者 董少明 第9章 高级汇编技术.ppt_第2页
汇编语言程序设计 教学课件 作者 董少明 第9章 高级汇编技术.ppt_第3页
汇编语言程序设计 教学课件 作者 董少明 第9章 高级汇编技术.ppt_第4页
汇编语言程序设计 教学课件 作者 董少明 第9章 高级汇编技术.ppt_第5页
资源描述:

《汇编语言程序设计 教学课件 作者 董少明 第9章 高级汇编技术.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、汇编语言程序设计第9章高级汇编技术第9章高级汇编技术9.1宏汇编技术9.2重复汇编与条件汇编9.3模块化编程技术9.4汇编语言与C语言的混合编程小结提示:在掌握基本的汇编语言程序设计方法之后,进一步学习如何提高编程效率的各种实用方法是很有必要的。本章主要介绍宏汇编、重复汇编与条件汇编、模块化编程技术以及汇编语言与高级语言的混合编程等问题。9.1宏汇编技术在编制汇编语言程序的过程中,有些功能程序段可能需要多次重复使用,重复使用时的差别只是参与操作的操作数不同。为了减少编程的工作量,通常采用2种方法:1)

2、将程序段编写为独立的子程序。2)将程序段定义成宏。子程序已在第5章中作过介绍,本节只研究将程序段定义成宏的方法。9.1.1宏的定义、调用与展开1.宏的定义宏(或宏指令)是源程序中一段具有独立功能的程序代码,只需定义一次,可以多次调用。宏定义可用伪指令MACRO/ENDM配合实现,其语句格式如下:宏定义名MACRO[形参1,形参2,…,形参N]……宏体ENDM说明:1)宏定义名是该宏的名称,它代表着所定义的宏体中的内容。在整个汇编源程序中宏的名称应具有唯一性,程序中使用宏名对该宏定义进行调用。2)宏定义

3、名不能重复,但可以和源程序中的其它变量、标号、指令、伪指令名相同,在这种情况下宏指令的优先级最高。3)MACRO必须与ENDM成对出现。MACRO标识宏定义的开始,ENDM标识宏定义的结束。宏体部分可以是汇编语言所允许的任意指令序列和伪指令序列,它决定了宏的功能。4)形式参数(即形参,也称哑元、虚参)是可选项,宏可以不带参数;带参数时,多个形参间用逗号分隔。5)宏定义必须放在第一条调用它的指令之前,宏体中允许定义或调用另一个宏,即允许宏定义的嵌套使用。例9-1将寄存器中的内容左移定义成宏,可实现在不同

4、的程序段中调用该宏且能灵活的规定移位次数。宏定义如下:SHIFTMACROR,XMOVCL,XSALR,CLENDM本例中SHIFT为该宏定义的名称。R,X是形式参数,调用时用实参代替形参,可实现不同寄存器的选择和移位次数的控制。2.宏调用宏调用的格式为:宏名[实参1,实参2,…,实参N]例9-2利用宏调用实现AL中的内容乘以10。解:设宏定义如例9-1所示,可实现所需功能的程序段如下:PUSHCXSHIFTAL,1MOVAH,ALSHIFTAL,2ADDAL,AHPOPCX例9-3利用宏调用实现数据

5、段的设置和程序返回功能.解:定义名为MBEGIN的宏,完成程序开始数据段的设置任务;定义名为MEND的宏,完成程序结束时正确返回DOS的功能。然后在需要时调用它们。MBEGINMACRO;定义名为MBEGIN的宏,无参数MOVAX,@DATA;宏定义体MOVDS,AXENDM;宏定义结束MENDMACRORETNUM;带有形参RETNUMMOVAL,RETNUM;宏定义中使用参数MOVAH,4CHINT21HENDM在主程序中进行宏调用:START:MBEGIN;宏调用,设置数据段……MEND;宏调用

6、,返回DOSENDSTART3.宏展开宏调用的实质是在汇编过程中进行宏展开。宏展开是用宏定义体的代码序列替代宏调用指令的过程。宏展开的具体过程是:当汇编程序扫描源程序遇到已有定义的宏调用时,用相应的宏定义体取代源程序中的宏调用指令,同时用位置匹配的实参对形参进行替换。例9-4将两个用压缩BCD码表示的4位十进制数相加,结果存入RESULT单元中。解:对BCD加法功能进行宏定义如下:BCDADDMACROVARX,VARY,RESULTMOVAL,VARXADDAL,VARYDAA;低字节相加、调整MO

7、VRESULT,ALMOVAL,VARX+1ADCAL,VARY+1DAA;高位相加、调整MOVRESULT+1,ALENDM进行宏调用的主程序如下:DATASEGMENTA1DB30H,11HA2DB79H,47HA3DB2DUP(?)B1DB32H,23HB2DB71H,62HB3DB2DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:PUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AXBCDADDA1,A2,A3;宏调用

8、BCDADDB1,B2,B3;再次宏调用RETCODEENDSENDSTART经宏展开后的CODE段内容为:CODESEGMENTASSUMECS:CODE,DS:DATASTART:PUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AX+MOVAL,A1;第一次宏调用的展开+ADDAL,A2+DAA;低位相加、调整+MOVA3,AL+MOVAL,A1+1+ADCAL,A2+1+DAA;高位相加、调整+MOVA3+1,AL+MOVAL

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

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

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