欢迎来到天天文库
浏览记录
ID:50454972
大小:285.50 KB
页数:34页
时间:2020-03-09
《微型计算机原理与汇编语言程序设计教学课件 第8章 高级汇编技术.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、本章学习要点1、掌握宏汇编的基本概念2、理解宏定义、宏调用、宏展开的特点和使用过程3、了解重复汇编的基本概念和使用4、了解条件汇编的基本概念和使用第8章高级汇编技术1什么是宏?宏(或宏指令)是源程序中一段有独立功能的程序代码,只需定义一次,可以多次调用。为什么使用宏汇编?在编制汇编语言程序过程中,有些功能程序段需要多次重复使用,所不同的只是参与操作的操作数。为了减少编程的工作量,通常采用两种方法:①将程序段编写为独立的子程序②将程序段定义成宏第8章高级汇编技术28.1宏汇编8.2重复汇编返回第8章高级汇编技术退出38.1宏汇编8.1.1宏定义、宏调用和宏展开8.
2、1.2形参和实参8.1.3伪指令PURGE返回8.1.4伪指令LOCAL退出48.1.1宏定义、宏调用和宏展开1.宏定义用伪指令MACRO/ENDM实现,其语句格式是:宏指令名MACRO[形参1,形参2,…,形参n]┇宏体ENDM例如,BCD码和ASCII码之间的转换,可将AL中的内容左移或右移定义成宏指令。5说明宏指令名是该宏定义的名称。调用时使用宏指令名对该宏定义进行调用。宏指令符合标识符规定。宏指令名不能重复,但可以和源程序中的其他变量、标号、指令、伪指令名相同,在这种情况下宏指令的优先级最高。MACRO必须与ENDM成对出现。MACRO标识宏定义的开始。
3、形式参数(即形参,也称哑元、虚参)是可选项,宏可以不带参数;带参数时,多个形参间用逗号分隔。形参的规定与对标识符的规定是一致的。68.1.1宏定义、宏调用和宏展开假设左移4位:SHIFTMACROMOVCL,4SALAL,CLENDM2.宏调用宏调用的格式为:宏指令名[实参1,实参2,…,实参n]78.1.1宏定义、宏调用和宏展开对于上例的宏定义,编程时宏调用语句为┇SHIFT┇宏展开宏展开将宏指令语句用宏定义中宏体的程序段目标代码替换。汇编源程序时,宏汇编程序将对每条宏指令语句进行宏展开,用实参替代相应的形参,对宏体目标代码作相应改变。88.1.1宏定义、宏调
4、用和宏展开例8.1将两个用压缩的BCD码表示的4位十进制数相加,结果存入RESULT单元中。;对两数相加功能进行宏定义BCDADDMACROVARX,VARY,RESULTMOVAL,VARXADDAL,VARYDAA;低位相加、调整MOVRESULT,ALMOVAL,VARX+1ADCAL,VARY+1DAA;高位相加、调整MOVRESULT+1,AL98.1.1宏定义、宏调用和宏展开ENDMDATASEGMENTA1DB30H,11HA2DB79H,47HA3DB2DUP(?)B1DB32H,23HB2DB71H,62HB3DB2DUP(?)DATAENDS
5、CODESEGMENTASSUMECS:CODE,DS:DATASTART:PUSHDSMOVAX,0PUSHAX108.1.1宏定义、宏调用和宏展开MOVAX,DATAMOVDS,AXBCDADDA1,A2,A3;宏调用BCDADDB1,B2,B3;再次宏调用RETCODEENDSENDSTART经宏展开后:PUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AX+MOVAL,A1118.1.1宏定义、宏调用和宏展开+ADDAL,A2+DAA;低位相加、调整+MOVA3,AL+MOVAL,A1+1+ADCAL,A2+1+DAA;高位相加、调整
6、+MOVA3+1,AL+;对两数相加功能进行宏定义+MOVAL,B1+ADDAL,B2+DAA;低位相加、调整+MOVB3,AL+MOVAL,B1+1+ADCAL,B2+1128.1.1宏定义、宏调用和宏展开+DAA;高位相加、调整+MOVB3+1,AL宏汇编程序在所展开的指令前标识以‘+’号以示区别。宏定义允许嵌套。在宏定义中可以使用宏调用,但必须先定义这个宏调用。例8.3有宏定义如下:DIFMLMACROOPRAND,OPRATOPRANDMACROX,Y,ZPUSHAXMOVAX,XOPRATAX,YMOVZ,AXPOPAX138.1.1宏定义、宏调用和宏
7、展开ENDMENDM对宏定义DIFML进行宏调用:DIFMLADDITION,ADD经宏展开:+ADDITIONMACROX,Y,ZPUSHAXMOVAX,XADDAX,YMOVZ,AXPOPAXENDM为实现对ADDITION的调用,需要连续两条宏调用语句:DIFMLADDITION,ADDADDITIONN1,N2,N3148.1.2形参和实参宏定义中可以不带任何形参,宏调用时不需提供实参(即使有实参,也会不予处理),宏展开后宏体中的所有指令不作修改原样插入到宏调用的宏指令处。如例8.4。形参可以是操作码或操作数的一部分,但在宏定义体中必须使用分隔符&,即&
8、是操作符,在宏定义中可作
此文档下载收益归作者所有