汇编语言程序设计第7章 高级汇编语言技术ppt课件.ppt
《汇编语言程序设计第7章 高级汇编语言技术ppt课件.ppt》由会员分享,可在线阅读,更多相关《汇编语言程序设计第7章 高级汇编语言技术ppt课件.ppt(48页珍藏版)》请在三一办公上搜索。
1、2023/1/8,第7章 高级汇编语言技术,1,8086/8088和ARM核汇编语言程序设计,第7章 高级汇编语言技术,2023/1/8,第7章 高级汇编语言技术,2,课前思考,1.宏汇编技术与子程序技术相比有哪些优、缺点?它们的工作方式有何差别?2.虚参与实参是否应一 一对应?3.哑元表中的变元可以取何种值?4.&操作符及%操作符如何应用?5.宏定义体内的程序段有标号怎么办?6.宏定义允许嵌套、递归调用吗?7*.IRP与IRPC之间的区别?8.条件汇编中有哪几种条件?9*.高级语言结构中有哪几种形式?,2023/1/8,第7章 高级汇编语言技术,3,教学目的:了解并掌握宏汇编、重复汇编及不定
2、重复汇编、条件汇编和高级语言结构编程技术。教学重点:子程序的调用和返回。保护与恢复寄存器。子程序的参数传送。伪操作STRUC的定义及应用。嵌套与递归子程序。DOS系统功能调用。教学重点:宏调用的优点、宏调用和子程序调用工作方式的差别、虚参与实元、哑元表中的变元取值的多样性、&操作符、%操作符、LOCAL伪操作解决宏定义体中的符号问题、宏定义的嵌套、递归、重复汇编、不定重复汇编、条件汇编中的多种条件。教学难点:宏调用的优点、宏调用和子程序调用工作方式的差别、虚参与实元、哑元表中的变元取值的多样性、&操作符、%操作符、LOCAL伪操作解决宏定义体中的符号问题、宏定义的嵌套、递归、重复汇编、不定重复
3、汇编、条件汇编中的多种条件。教学方法及手段:课堂讲授、小结讲评。课外作业:P177 1,5学时分配:4教学内容:宏汇编、重复汇编、条件汇编自学内容:高级语言结构,2023/1/8,第7章 高级汇编语言技术,4,7.1 宏汇编,7.3 条件汇编,7.2 重复汇编,第7章 高级汇编语言技术,7.4 库的使用,2023/1/8,第7章 高级汇编语言技术,5,什么是宏?宏(或宏指令)是源程序中一段有独立功能的程序代码,只需定义一次,可以多次调用。为什么使用宏汇编?在编制汇编语言程序过程中,有些功能程序段需要多次重复使用,所不同的只是参与操作的操作数。使用宏指令语句可以减少程序书写错误,缩短源程序长度,
4、使源程序编写像高级语言一样清晰、简洁。特别是使用宏库后,可以提高编程效率。为了减少编程的工作量,通常采用两种方法:将程序段编写为独立的子程序 将程序段定义成宏,7.1 宏汇编,由此引出宏定义、调用、参数传递、嵌套等问题,2023/1/8,第7章 高级汇编语言技术,6,宏定义的格式 由伪指令MACRO与ENDM实现。形式如下:宏指令名MACRO 形式参数表;宏体 ENDM,7.1.1 宏定义,7.1 宏汇编,说明:(1)宏指令名由编程序者自定,但必须符合标号的命名规则。(2)MACRO和ENDM是一对伪指令,分别表示宏定义的开始和结束。(3)宏体必须是指令、伪指令及宏指令构成的程序段。(4)形参
5、表可根据需要作取舍。当需要设置多个形参时,各形参之间要用逗号分隔。,2023/1/8,第7章 高级汇编语言技术,7,宏定义的功能,将宏体定义为一条宏指令,以便在其后的程序中通过对宏指令的调用来使用对应的宏体。,7.1 宏汇编,7.1.1 宏定义,2023/1/8,第7章 高级汇编语言技术,8,例7.1(教材例11.1)以下宏定义所定义的宏指令AX10可以实现寄存器AX内容乘以10的功能。(见hong.asm),AX10 MACRO;宏名 AX10 PUSHDX SALAX,1 MOVDX,AX SALAX,1 SALAX,1 ADDAX,DX POPDX ENDM,7.1 宏汇编,7.1.1
6、宏定义,注意和段定义及过程定义的区别,2023/1/8,第7章 高级汇编语言技术,9,7.1 宏汇编,7.1.2 宏调用和宏扩展,宏调用的格式,宏调用的格式为:宏指令名 实参表,说明:宏指令名所指定的宏指令的定义必须放在该宏调用 之前。(2)实参表通常与宏定义中形参表相对应。当需要使用多个实参时,各实参之间要用逗号分隔。,2023/1/8,第7章 高级汇编语言技术,10,宏扩展,宏汇编程序在汇编源程序时自动用宏指令的内容代替宏指令,叫宏扩展。,7.1 宏汇编,7.1.2 宏调用和宏扩展,当宏汇编程序在汇编时扫描到宏指令语句时,就把宏定义中宏体的程序段目标代码插入在宏指令语句的位置上,如果是带参
7、数的宏指令语句,同时把相应实参一一替代宏体中对应形参的位置,对原有宏体目标代码作相应修改。这样,在程序的目标代码中,每个宏指令语句位置上都包含有相应宏体的目标代码,因此宏指令的使用不会减少程序的目标代码长度。,注意:它与子程序的差别。宏在翻译阶段起作用,子程序在执行阶段起作用。,2023/1/8,第7章 高级汇编语言技术,11,两个字操作数相乘(见hong.asm)宏定义:MULTIPLYMACRO OPR1,OPR2,RESULTPUSHDXPUSHAXMOVAX,OPR1IMULOPR2MOVRESULT,AXPOPAXPOPDXENDM宏调用:MULTIPLYCX,VAR,XYZBXMU
8、LTIPLY240,BX,SAVE,7.1 宏汇编,7.1.2 宏调用和宏扩展,注意现场保护及其后的恢复,2023/1/8,第7章 高级汇编语言技术,12,宏展开:1PUSH DX 1PUSH AX 1MOV AX,CX 1IMUL VAR 1MOV XYZBX,AX 1POP AX 1POP DX 1PUSH DX 1PUSH AX 1MOV AX,240 1IMUL BX 1MOV SAVE,AX 1POP AX 1POP DX,7.1 宏汇编,7.1.2 宏调用和宏扩展,MULTIPLYCX,VAR,XYZBXMULTIPLY240,BX,SAVE,宏调用:,2023/1/8,第7章 高
9、级汇编语言技术,13,2023/1/8,第7章 高级汇编语言技术,14,7.1 宏汇编,7.1.3宏定义和宏调用中参数的使用,实参和形参是一一对应的,若实参的个数多于形参,则忽略多余的实参;若实元的个数少于哑参,则多余的形参为空。,形参可以作为宏体中指令的助记符、操作数及标号,宏调用用实参取代形参时必须保证所产生的指令是有效。,2023/1/8,第7章 高级汇编语言技术,15,变元可以是操作码。(见hong.asm)宏定义:FOOMACROP1,P2,P3MOVAX,P1P2P3ENDM宏调用:FOO WORD_VAR,INC,AX宏展开:1MOVAX,WORD_VAR1INCAX,7.1 宏
10、汇编,7.1.3宏定义和宏调用中参数的使用,2023/1/8,第7章 高级汇编语言技术,16,宏运算符、及!的使用,(1)形参可以作为宏体中指令助记符、操作数或标 号的某一部分,在宏体中必须使用“”。,(2)当某一个实参中含有空格、逗号等分隔符时,必 须用“”将其括起,以免被视作多个实参。,(3)在宏调用时,若要求将实参所代表的数值(而不是 实参本身)替代形参,则必须在实参前使用“”。,7.1 宏汇编,7.1.3宏定义和宏调用中参数的使用,2023/1/8,第7章 高级汇编语言技术,17,变元可以是操作码的一部分。(见hong.asm)CONCALL MACRO CON,SUBN LOCAL
11、GOON JN&CON GOON CALL SUBNGOON:NOP ENDM该宏定义所定义的宏指令CONCALL可以实现子程序的条件调用。设有宏调用 CONCALL B,SUBl则其宏扩展为:+JNB?0000+CALL SUB1+?0000:NOP,7.1 宏汇编,7.1.3宏定义和宏调用中参数的使用,变元是操作码的一部分,注意local的使用,2023/1/8,第7章 高级汇编语言技术,18,7.1 宏汇编,7.1.3宏定义和宏调用中参数的使用,的使用(见hong1.asm)STK MACRO XSSEG SEGMENT STACK DB XSSEG ENDS ENDM若某个源程序需要定
12、义200个字节,初值为0的堆栈段,则可以使用宏调用:STK 200 DUP(0)其宏扩展为:+SSEG SEGMENT STACK+DB 200 DUP(0)+SSEG ENDS,2023/1/8,第7章 高级汇编语言技术,19,7.1 宏汇编,7.1.3宏定义和宏调用中参数的使用,%的使用 DISP MACRO X DB ANSWER:,&X,$ENDM则用符号“”的宏调用:DISP%(2*11-8)产生的宏扩展为:+DB ANSWER:,14,$不使用符号“”的宏调用:DISP 2*11-8产生的宏扩展却是:+DB ANSWER:,2*11-8,$,2023/1/8,第7章 高级汇编语言技
13、术,20,注意:在实参中使用“&”、“”、“%”等符号,但不作宏运算符时,就必须在其前使用“!”。(见hong1.asm),如:DISP MACRO X DB ANSWER:,&X,$ENDM则用符号“!”的宏调用:DISP!%(2*11-8)产生的宏扩展为:+DB ANSWER:,%(2*11-8),$,7.1 宏汇编,7.1.3宏定义和宏调用中参数的使用,2023/1/8,第7章 高级汇编语言技术,21,2023/1/8,第7章 高级汇编语言技术,22,宏指令一经定义便可在源程序中调用,若宏体中使用了标号或变量,在多次宏调用时就会出现多个相同标号或出现变量的重复定义,使用LOCAL伪指令可
14、以解决这一问题。LOCAL伪指令的使用方法及功能如下:(1)LOCAL伪指令的一般格式:LOCAL 标号及变量表 各标号、变量之间均用逗号分隔。(2)在宏定义中,LOCAL伪指令必须紧接MACRO伪指令之后。(3)在处理各个宏调用时,汇编程序将自动以?0000,?0001,?FFFF替代LOCAL从伪指令列出的各个标号或变量,从而避免多次宏调用时出现多个相同标号或出现变量重复定 义的问题。(见hong.asm),7.1.3宏定义和宏调用中参数的使用,7.1 宏汇编,2023/1/8,第7章 高级汇编语言技术,23,7.1 宏汇编,7.1.4 宏嵌套,宏嵌套与子程序一样包括两种情况:其一,宏定义
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言程序设计第7章 高级汇编语言技术ppt课件 汇编语言 程序设计 高级 技术 ppt 课件
链接地址:https://www.31ppt.com/p-2088694.html