第5章_高级汇编技术.ppt

上传人:hyn****60 文档编号:70969569 上传时间:2023-01-31 格式:PPT 页数:43 大小:97.50KB
返回 下载 相关 举报
第5章_高级汇编技术.ppt_第1页
第1页 / 共43页
第5章_高级汇编技术.ppt_第2页
第2页 / 共43页
点击查看更多>>
资源描述

《第5章_高级汇编技术.ppt》由会员分享,可在线阅读,更多相关《第5章_高级汇编技术.ppt(43页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第5章章 高级汇编技术高级汇编技术1本章内容简介本章内容简介 本章介绍宏汇编、重复汇编、条件汇编本章介绍宏汇编、重复汇编、条件汇编以及结构与记录的相关知识。以及结构与记录的相关知识。有利于简化源程序、减少目标代码以及有利于简化源程序、减少目标代码以及缩短程序执行时间,是编写高效简洁的汇编缩短程序执行时间,是编写高效简洁的汇编语言程序必不可少的工具。语言程序必不可少的工具。25.1 宏汇编宏汇编 在编写程序过程中,若遇到一些要多次使在编写程序过程中,若遇到一些要多次使用的程序段,为了简化程序,通常采用定义用的程序段,为了简化程序,通常采用定义子程序的方法,同样,也可以采用宏定义的子程序的方法,

2、同样,也可以采用宏定义的方法来达到这个目的。方法来达到这个目的。3宏宏汇编汇编 宏定义是源程序中一段有独立功能的程序宏定义是源程序中一段有独立功能的程序代码。代码。先将这一段程序定义为一条宏指令,并具先将这一段程序定义为一条宏指令,并具有一个相应的宏指令名,在程序中就可以多有一个相应的宏指令名,在程序中就可以多次调用它,调用时只需要引用一个宏指令名次调用它,调用时只需要引用一个宏指令名来代替这一段程序就可以了。来代替这一段程序就可以了。45.1.1 宏指令语句宏指令语句 程序中需要多次重复的指令序列可用宏指令。宏定义格式宏定义格式 宏名宏名 MACRO 形参表形参表 (宏体)(宏体)ENDM宏

3、调用格式宏调用格式 宏名宏名 实参表实参表5宏指令语句宏指令语句 汇汇编编程程序序在在对对源源程程序序作作汇汇编编时时,若若遇遇到到宏宏调调用用,则则将将对对应应的的宏宏体体取取代代该该宏宏指指令令,并并且且用用实实参参顺顺序序取取代代宏宏定定义义中中的的形形参参。这这个个过过程称作程称作宏展开宏展开。6宏指令语句宏指令语句n一一个个宏宏定定义义名名必必须须用用伪伪指指令令PURGE取取消消后后,才能重新定义。才能重新定义。PURGE伪指令的格式为:伪指令的格式为:PURGE 宏名宏名,n一条一条PURGE伪指令可以取消多个宏。伪指令可以取消多个宏。n退退出出宏宏伪伪指指令令EXITM表表示示

4、结结束束当当前前宏宏调调用用的展开。格式为:的展开。格式为:EXITM 75.1.2 宏汇编实例分析宏汇编实例分析定义:无参形式定义:无参形式POPREG MACRO POP DX POP CX POP BX POP AX ENDM调用:调用:POPREG 当以后需要恢复现场时,当以后需要恢复现场时,只需调用:只需调用:POPREG 汇编程序将用它的目标汇编程序将用它的目标代码代码(即左边程序段代码即左边程序段代码)去替代宏名字的位置。去替代宏名字的位置。8宏汇编实例分析宏汇编实例分析定义:无参形式定义:无参形式AX10 MACRO PUSH DX SAL AX,1 MOV DX,AX SAL

5、 AX,1 SAL AX,1 ADD AX,DX POP DX ENDM完成对完成对AX寄存器内容乘寄存器内容乘以以10的功能。假设乘积的功能。假设乘积在在16位以内。位以内。调用:调用:AX109宏汇编实例分析宏汇编实例分析定义:有参形式定义:有参形式SHIFT MACRO X,Y MOV CL,X SAL Y,CL ENDM调用:调用:SHIFT 3,AL SHIFT 5,BL宏调用和展开后:宏调用和展开后:+MOV CL,3+SAL AL,CL+MOV CL,5+SAL BL,CL10宏汇编实例分析宏汇编实例分析定义:两个字操作数相加定义:两个字操作数相加ADD12 MACRO A1,A

6、2,A3 PUSH DX PUSH AX MOV AX,A1 ADD AX,A2 MOV A3,AX POP AX POP DX ENDM宏调用:宏调用:ADD12 CX,DAT,XSI 宏展开:宏展开:.+PUSH DX +PUSH AX +MOV AX,CX +ADD AX,DAT +MOV XSI,AX +POP AX +POP DX .11宏汇编实例分析宏汇编实例分析 n宏宏定定义义和和宏宏调调用用可可以以不不使使用用形形参参和和实实参参,这是最简单的一种方式。这是最简单的一种方式。n大大多多数数宏宏定定义义都都使使用用形形参参,这这样样使使得得宏宏定定义的适用性及灵活性更好。义的适用

7、性及灵活性更好。n形形参参可可以以作作为为宏宏体体中中指指令令的的助助记记符符、操操作作数数及及标标号号等等,宏宏调调用用用用实实参参取取代代形形参参时时必必须保证所产生的指令是有效的。须保证所产生的指令是有效的。12宏汇编实例分析宏汇编实例分析 n实实参参可可以以是是常常数数、寄寄存存器器、存存储储变变量量名名以以及及用用寻寻址址方方式式能能找找到到的的地地址址或或表表达达式式,实实参参还还可可以以是是指指令令的的操操作作码码或或操操作作码码的的一部分等。一部分等。n宏汇编的这一特性是子程序所不及的。宏汇编的这一特性是子程序所不及的。135.1.3 宏与子程序宏与子程序 宏与子程序都可以用一

8、个名字定义一段程宏与子程序都可以用一个名字定义一段程序,以简化源程序的结构和设计。一般来说,序,以简化源程序的结构和设计。一般来说,子程序能实现的功能,用宏也可以实现。但子程序能实现的功能,用宏也可以实现。但是,宏与子程序有本质的区别,主要反映在是,宏与子程序有本质的区别,主要反映在调用方式,另外在传递参数和使用细节上也调用方式,另外在传递参数和使用细节上也有很多不同。有很多不同。14宏与子程序宏与子程序n子程序是在程序执行期间由主程序调用的,子程序是在程序执行期间由主程序调用的,它只占有它自身大小的一个空间,它不仅是它只占有它自身大小的一个空间,它不仅是源程序级别的简化,还是目标程序级的简化

9、,源程序级别的简化,还是目标程序级的简化,形成的目标代码较短;形成的目标代码较短;n而宏调用则是在汇编期间展开的,每调用一而宏调用则是在汇编期间展开的,每调用一次就把宏定义体展开一次,它是源程序级的次就把宏定义体展开一次,它是源程序级的简化。简化。15宏与子程序宏与子程序 在子程序结构中,为实现转移和返回,保在子程序结构中,为实现转移和返回,保存及恢复寄存器和参数传递等操作都要增加存及恢复寄存器和参数传递等操作都要增加程序的开销,这些操作所消耗的时间以及它程序的开销,这些操作所消耗的时间以及它们所占用的存储空间,都是为取得子程序结们所占用的存储空间,都是为取得子程序结构而增加的额外开销。构而增

10、加的额外开销。165.2 重复汇编重复汇编 在编写程序时,有时需要连续重复编写在编写程序时,有时需要连续重复编写一组相同或几乎相同的指令或伪指令,这时一组相同或几乎相同的指令或伪指令,这时可以使用宏汇编语言提供的重复汇编伪指令可以使用宏汇编语言提供的重复汇编伪指令来避免重复书写。来避免重复书写。重复汇编结构有三种,一种是定重复汇重复汇编结构有三种,一种是定重复汇编结构,另两种是不定重复汇编结构。分别编结构,另两种是不定重复汇编结构。分别使用使用REPT、IRP和和IRPC实现。实现。17重复汇编重复汇编 重复汇编结构与宏汇编结构的区别在于重复汇编结构与宏汇编结构的区别在于重复汇编适用于连续重复

11、的场合,而宏汇编重复汇编适用于连续重复的场合,而宏汇编适用于非连续重复的场合,但是这两种方法适用于非连续重复的场合,但是这两种方法都可以达到都可以达到简化源程序简化源程序的目的。的目的。185.2.1 定重复汇编伪指令定重复汇编伪指令 格式:格式:REPT 整数表达式整数表达式 (重复语句序列)(重复语句序列)ENDM功能:功能:使汇编程序对重复体作重复汇编,以整数使汇编程序对重复体作重复汇编,以整数表达式的值作为重复次数。表达式的值作为重复次数。19定重复汇编举例定重复汇编举例定义:定义:NUMCHAR=30HREPT 10 DB NUMCHAR NUMCHAR=NUMCHAR+1ENDM汇

12、编后:汇编后:NUMCHAR=30H DB NUMCHAR NUMCHAR=NUMCHAR+1 DB NUMCHAR NUMCHAR=NUMCHAR+1 :DB NUMCHAR NUMCHAR=NUMCHAR+1ENDM等价于:等价于:DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H205.2.2 不定重复汇编不定重复汇编格式格式:IRP 形参,形参,(重复语句序列)(重复语句序列)ENDM 功能功能:使汇编程序对重复体作重复汇编,汇使汇编程序对重复体作重复汇编,汇编时,依次将编时,依次将参数表参数表中的参数取出代替中的参数取出代替形参,形参,直到参数用完为

13、止。重复汇编的次数等于参直到参数用完为止。重复汇编的次数等于参数表中参数的个数。数表中参数的个数。21IRP BUF,DB BUFENDM等价于:等价于:DB 3,17,20,46,87,10022IRP NUM,DB NUM*NUMENDM等价于:等价于:DB 0,1,4,9,16,25,36,49,64,8123使用使用IRPC伪指令的重复汇编伪指令的重复汇编格式格式:IRPC 形参,字符串形参,字符串 (重复语句序列)(重复语句序列)ENDM功能功能:使汇编程序对重复体作重复汇编,汇编时,使汇编程序对重复体作重复汇编,汇编时,依次将依次将字符串中的一个字符字符串中的一个字符取出代替取出代

14、替形参形参,直,直到字符串替代完毕。重复汇编的次数等于字符到字符串替代完毕。重复汇编的次数等于字符串中字符的个数。串中字符的个数。24IRPC BUF,12345 DB BUFENDM等价于等价于DB 1,2,3,4,525 当重复体中的形参代表指令助记符、操作当重复体中的形参代表指令助记符、操作数或标号等内容的一部分时,需要使用数或标号等内容的一部分时,需要使用“&”将其与其余部分连接起来,以免用字符取代形将其与其余部分连接起来,以免用字符取代形参时该字符与其余部分相分离。参时该字符与其余部分相分离。IPRC REG,DCBA POP REG&XENDM等价于:等价于:POP DX POP

15、CX POP BX POP AX265.3 条件汇编条件汇编 汇编程序在对汇编源程序进行汇编时,汇编程序在对汇编源程序进行汇编时,能够根据条件将程序段有选择地进行汇编,能够根据条件将程序段有选择地进行汇编,从而根据实际情况得到满足要求的目标代码。从而根据实际情况得到满足要求的目标代码。如此可增强用户编程的灵活性。通过伪指令如此可增强用户编程的灵活性。通过伪指令实现。实现。275.3.1 条件汇编概述条件汇编概述格式:格式:IF XX 条件条件 语句块语句块1 ELSE 语句块语句块2 ENDIF说说明明:IFXX和和ENDIF必必须须配配对对,ELSE为为可可选选项项。汇汇编编程程序序检检测测

16、IF XX伪伪指指令令给给定定的的条条件件,如如果果条条件为真则汇编语句块件为真则汇编语句块1,否则汇编语句块,否则汇编语句块2。28伪指令伪指令 功能功能 IF 表达式表达式IFE 表达式表达式IFDEF 符号符号IFNDEF 符号符号IFB IFNB IFIDN ,IFDIF ,IF 1IF 2 表达式非表达式非0,条件为真,条件为真表达式为表达式为0,条件为真,条件为真 符符号号已已被被定定义义或或被被说说明明为为EXTRN,条件为真条件为真 符符号号无无定定义义或或未未被被说说明明为为EXTRN,条件为真条件为真如果参数为空格,条件为真如果参数为空格,条件为真如果参数不为空格,条件为真

17、如果参数不为空格,条件为真如如果果字字符符串串1和和字字符符串串2相相同同,条条件件为为真真如如果果字字符符串串1和和字字符符串串2不不相相同同,条条件件为真为真如果是第一遍扫描,条件为真如果是第一遍扫描,条件为真如果是第二遍扫描,条件为真如果是第二遍扫描,条件为真 29条件汇编用法举例条件汇编用法举例1.IF和和IFE伪指令伪指令 IF伪指令的表达式值不为伪指令的表达式值不为0时,认为汇编条件成立,时,认为汇编条件成立,否则认为不成立。否则认为不成立。IFE伪指令的表达式值为伪指令的表达式值为0时,认为汇编条件成立,时,认为汇编条件成立,执行汇编。执行汇编。5-15 如果如果VALUE的值大

18、于的值大于10,则对语句,则对语句1汇编,否则汇编,否则对语句对语句2汇编。汇编。IF VALUE GT 10 CALL DEBUG1ELSE CALL DEBUG2ENDIF30条件汇编用法举例条件汇编用法举例1.IF和和IFE伪指令伪指令 IF伪指令的表达式值不为伪指令的表达式值不为0时,认为汇编条件成立,时,认为汇编条件成立,否则认为不成立。否则认为不成立。IFE伪指令的表达式值为伪指令的表达式值为0时,认为汇编条件成立,时,认为汇编条件成立,执行汇编。执行汇编。5-16 设设AL中存放了中存放了1个字母个字母的的ASCII码。由条件决定码。由条件决定是否将是否将AL中的字母进行大中的字

19、母进行大小写转换。小写转换。:CHANG DB 0 :IFE CHANG OR AL,20HELSE AND AL,0DFHENDIF :31条件汇编用法举例条件汇编用法举例2.IFDEF和和IFNDEF伪指令伪指令 IFDEF中给定符号已经在本模块中定义或在本模块中给定符号已经在本模块中定义或在本模块中用中用EXTRN说明为外部符号,则认为汇编条件成立。说明为外部符号,则认为汇编条件成立。IFNDEF与与IFDEF相反。相反。IFDEF SUBSYM SUBA PROC FARELSE SUBA PROC NEARENDIF325.4 结构与记录结构与记录 当当变变量量的的数数据据类类型型是

20、是单单一一的的字字节节、两两字字节节、四四字字节节时时,可可以以用用DB、DW、DD这这样样的的伪伪指指令令来来定定义义,称称为为简简单单数数据据结结构构;若若将将简简单单数数据据结结构构的的变变量量组组合合在在一一起起,形形成成一一个个复复合合型型的的数数据据,再再给给这这个个复复合合型型的的数数据据起起一一个个名名字字,得得到到一一种种新新的的数数据据类类型型,称称为为复复杂杂数数据据类类型型,在在80 x86汇汇编语言中,这样的数据类型包括结构和记录。编语言中,这样的数据类型包括结构和记录。33结构与记录结构与记录结结构构:逻逻辑辑上上互互相相关关联联的的一一组组数数据据,以以某某种种形

21、形式式组组合合在在一一起起,使使之之成成为为一一个个整整体体,并并可可单单独独访问其中的某个数据元素,以便进行数据处理。访问其中的某个数据元素,以便进行数据处理。记录:记录:功能和用法与结构类似,两者的主要区功能和用法与结构类似,两者的主要区别是记录以二进制位为单位组成字段,定义每别是记录以二进制位为单位组成字段,定义每个字段时都要指出位宽,这样能更好地利用内个字段时都要指出位宽,这样能更好地利用内存空间。存空间。345.4.1 结构的定义及引用结构的定义及引用 用户在编程时可能会遇到不同数据类型用户在编程时可能会遇到不同数据类型构造的组合数据,如学生信息,包括学号、构造的组合数据,如学生信息

22、,包括学号、姓名、身高、体重、年龄等,每个学生都姓名、身高、体重、年龄等,每个学生都具有这样的信息。具有这样的信息。如能将这些数据集成在一个数据结构里,如能将这些数据集成在一个数据结构里,将优化程序结构。将优化程序结构。351.结构类型的说明结构类型的说明1)定义结构名,把结构的有关信息明确,以便定义结构名,把结构的有关信息明确,以便汇编语言在汇编时对结构分配存储单元及存汇编语言在汇编时对结构分配存储单元及存放初值放初值2)一旦定义了结构名,便可以多次用这一结构一旦定义了结构名,便可以多次用这一结构名定义若干个结构实体,即具有具体数值,名定义若干个结构实体,即具有具体数值,有实际的存储区的结构

23、变量名有实际的存储区的结构变量名3)对结构变量名进行引用,即对某一结构变量对结构变量名进行引用,即对某一结构变量名的整体或部分字段进行处理和存取。名的整体或部分字段进行处理和存取。36结构伪指令结构伪指令STRUCn n语句格式:语句格式:结构名结构名 STRUC 字段名字段名 数据类型定义语句数据类型定义语句 结构名结构名 ENDS37定义举例定义举例STUDENT STRUC NUMBER DB XX NAME DB 6 DUP(?)HEIGHT DB?WEIGHT DB?AGE DB?STUDENT ENDS382.结构变量的定义结构变量的定义n定义格式定义格式 结构变量名结构变量名 结

24、构名结构名 PERSON1 STUDENT PERSON2 STUDENT PERSON3 STUDENT 70 DUP()393.结构变量及其字段的引用结构变量及其字段的引用n引用格式引用格式 结构变量名结构变量名.字段名字段名MOV AL,OFFSET PERSON2MOV BX.NAME,TOMMOV BX.AGE,20405.4.2 记录的定义及引用记录的定义及引用 使用记录类型可将若干二进制位信息紧使用记录类型可将若干二进制位信息紧凑地存放在一个字节或字中,并可对这些信凑地存放在一个字节或字中,并可对这些信息按位处理。息按位处理。记录类型能有效地节省存储空间。记录类型能有效地节省存储

25、空间。41记录伪指令记录伪指令RECORD 格式:格式:RECORD :=,:=说明:记录定义时,记录名和字段名不能省略。字段说明:记录定义时,记录名和字段名不能省略。字段的宽度是指相应字段占的二进制位数,且所有的字的宽度是指相应字段占的二进制位数,且所有的字段宽度之和不能大于段宽度之和不能大于16。如宽度之和大于。如宽度之和大于8位,该记位,该记录按字处理,否则按字节处理。表达式是给字段赋录按字处理,否则按字节处理。表达式是给字段赋的初值。的初值。42记录伪指令记录伪指令RECORD记录的定义举例记录的定义举例:STUD RECORD NUM:4,SEX:1,AGE:6,HOME:5记录变量的定义:记录变量的定义:格式:格式:举例:举例:STU1 STUD STU2 STUD 43

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁