




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
高级汇编技术1第一页,共四十三页,2022年,8月28日本章内容简介本章介绍宏汇编、重复汇编、条件汇编以及结构与记录的相关知识。有利于简化源程序、减少目标代码以及缩短程序执行时间,是编写高效简洁的汇编语言程序必不可少的工具。
2第二页,共四十三页,2022年,8月28日5.1宏汇编在编写程序过程中,若遇到一些要多次使用的程序段,为了简化程序,通常采用定义子程序的方法,同样,也可以采用宏定义的方法来达到这个目的。3第三页,共四十三页,2022年,8月28日宏汇编宏定义是源程序中一段有独立功能的程序代码。先将这一段程序定义为一条宏指令,并具有一个相应的宏指令名,在程序中就可以多次调用它,调用时只需要引用一个宏指令名来代替这一段程序就可以了。
4第四页,共四十三页,2022年,8月28日5.1.1宏指令语句
程序中需要多次重复的指令序列可用宏指令。宏定义格式宏名MACRO[形参表]…(宏体)
ENDM宏调用格式宏名[实参表]5第五页,共四十三页,2022年,8月28日宏指令语句汇编程序在对源程序作汇编时,若遇到宏调用,则将对应的宏体取代该宏指令,并且用实参顺序取代宏定义中的形参。这个过程称作宏展开。6第六页,共四十三页,2022年,8月28日宏指令语句一个宏定义名必须用伪指令PURGE取消后,才能重新定义。PURGE伪指令的格式为:
PURGE宏名[,…]
一条PURGE伪指令可以取消多个宏。退出宏伪指令EXITM表示结束当前宏调用的展开。格式为:EXITM
7第七页,共四十三页,2022年,8月28日5.1.2宏汇编实例分析定义:无参形式POPREGMACROPOPDXPOPCXPOPBXPOPAXENDM调用:POPREG当以后需要恢复现场时,只需调用:POPREG汇编程序将用它的目标代码(即左边程序段代码)去替代宏名字的位置。8第八页,共四十三页,2022年,8月28日宏汇编实例分析定义:无参形式AX10MACROPUSHDXSALAX,1MOVDX,AXSALAX,1SALAX,1ADDAX,DXPOPDXENDM完成对AX寄存器内容乘以10的功能。假设乘积在16位以内。调用:AX109第九页,共四十三页,2022年,8月28日宏汇编实例分析定义:有参形式SHIFTMACROX,YMOVCL,XSALY,CLENDM调用:SHIFT3,ALSHIFT5,BL宏调用和展开后:+MOVCL,3+SALAL,CL+MOVCL,5+SALBL,CL10第十页,共四十三页,2022年,8月28日宏汇编实例分析定义:两个字操作数相加ADD12MACROA1,A2,A3PUSHDXPUSHAXMOVAX,A1ADDAX,A2MOVA3,AXPOPAXPOPDXENDM宏调用:ADD12CX,DAT,X[SI]
宏展开:
…..+PUSHDX+PUSHAX+MOVAX,CX+ADDAX,DAT+MOVX[SI],AX+POPAX+POPDX….11第十一页,共四十三页,2022年,8月28日宏汇编实例分析宏定义和宏调用可以不使用形参和实参,这是最简单的一种方式。大多数宏定义都使用形参,这样使得宏定义的适用性及灵活性更好。形参可以作为宏体中指令的助记符、操作数及标号等,宏调用用实参取代形参时必须保证所产生的指令是有效的。12第十二页,共四十三页,2022年,8月28日宏汇编实例分析实参可以是常数、寄存器、存储变量名以及用寻址方式能找到的地址或表达式,实参还可以是指令的操作码或操作码的一部分等。宏汇编的这一特性是子程序所不及的。13第十三页,共四十三页,2022年,8月28日5.1.3宏与子程序宏与子程序都可以用一个名字定义一段程序,以简化源程序的结构和设计。一般来说,子程序能实现的功能,用宏也可以实现。但是,宏与子程序有本质的区别,主要反映在调用方式,另外在传递参数和使用细节上也有很多不同。14第十四页,共四十三页,2022年,8月28日宏与子程序子程序是在程序执行期间由主程序调用的,它只占有它自身大小的一个空间,它不仅是源程序级别的简化,还是目标程序级的简化,形成的目标代码较短;而宏调用则是在汇编期间展开的,每调用一次就把宏定义体展开一次,它是源程序级的简化。
15第十五页,共四十三页,2022年,8月28日宏与子程序在子程序结构中,为实现转移和返回,保存及恢复寄存器和参数传递等操作都要增加程序的开销,这些操作所消耗的时间以及它们所占用的存储空间,都是为取得子程序结构而增加的额外开销。
16第十六页,共四十三页,2022年,8月28日5.2重复汇编
在编写程序时,有时需要连续重复编写一组相同或几乎相同的指令或伪指令,这时可以使用宏汇编语言提供的重复汇编伪指令来避免重复书写。重复汇编结构有三种,一种是定重复汇编结构,另两种是不定重复汇编结构。分别使用REPT、IRP和IRPC实现。17第十七页,共四十三页,2022年,8月28日重复汇编重复汇编结构与宏汇编结构的区别在于重复汇编适用于连续重复的场合,而宏汇编适用于非连续重复的场合,但是这两种方法都可以达到简化源程序的目的。18第十八页,共四十三页,2022年,8月28日5.2.1定重复汇编伪指令格式:
REPT整数表达式┇(重复语句序列)
ENDM功能:使汇编程序对重复体作重复汇编,以整数表达式的值作为重复次数。19第十九页,共四十三页,2022年,8月28日定重复汇编举例定义:NUMCHAR=30HREPT10DBNUMCHAR
NUMCHAR=NUMCHAR+1ENDM汇编后:NUMCHAR=30HDBNUMCHARNUMCHAR=NUMCHAR+1DBNUMCHARNUMCHAR=NUMCHAR+1
:
DBNUMCHARNUMCHAR=NUMCHAR+1ENDM等价于:DB30H,31H,32H,33H,34H,35H,36H,37H,38H,39H20第二十页,共四十三页,2022年,8月28日5.2.2不定重复汇编格式:IRP形参,<参数表>┇(重复语句序列)
ENDM
功能:使汇编程序对重复体作重复汇编,汇编时,依次将参数表中的参数取出代替形参,直到参数用完为止。重复汇编的次数等于参数表中参数的个数。21第二十一页,共四十三页,2022年,8月28日IRPBUF,<3,17,20,46,87,100>DBBUFENDM等价于:
DB3,17,20,46,87,10022第二十二页,共四十三页,2022年,8月28日IRPNUM,<0,1,2,3,4,5,6,7,8,9>DBNUM*NUMENDM等价于:
DB0,1,4,9,16,25,36,49,64,8123第二十三页,共四十三页,2022年,8月28日使用IRPC伪指令的重复汇编格式:IRPC形参,字符串┇(重复语句序列)
ENDM功能:使汇编程序对重复体作重复汇编,汇编时,依次将字符串中的一个字符取出代替形参,直到字符串替代完毕。重复汇编的次数等于字符串中字符的个数。24第二十四页,共四十三页,2022年,8月28日IRPCBUF,12345DBBUFENDM等价于DB1,2,3,4,525第二十五页,共四十三页,2022年,8月28日
当重复体中的形参代表指令助记符、操作数或标号等内容的一部分时,需要使用“&”将其与其余部分连接起来,以免用字符取代形参时该字符与其余部分相分离。IPRCREG,DCBAPOPREG&XENDM等价于:
POPDXPOPCXPOPBXPOPAX26第二十六页,共四十三页,2022年,8月28日5.3条件汇编汇编程序在对汇编源程序进行汇编时,能够根据条件将程序段有选择地进行汇编,从而根据实际情况得到满足要求的目标代码。如此可增强用户编程的灵活性。通过伪指令实现。27第二十七页,共四十三页,2022年,8月28日5.3.1条件汇编概述格式:IFXX条件语句块1[ELSE
语句块2]ENDIF说明:IFXX和ENDIF必须配对,ELSE为可选项。汇编程序检测IFXX伪指令给定的条件,如果条件为真则汇编语句块1,否则汇编语句块2。28第二十八页,共四十三页,2022年,8月28日伪指令功能IF表达式IFE表达式IFDEF符号IFNDEF符号IFB<参数>IFNB<参数>IFIDN<字符串1>,<字符串2>IFDIF<字符串1>,<字符串2>IF1IF2表达式非0,条件为真表达式为0,条件为真
符号已被定义或被说明为EXTRN,条件为真符号无定义或未被说明为EXTRN,条件为真如果参数为空格,条件为真如果参数不为空格,条件为真如果字符串1和字符串2相同,条件为真如果字符串1和字符串2不相同,条件为真如果是第一遍扫描,条件为真如果是第二遍扫描,条件为真第二十九页,共四十三页,2022年,8月28日条件汇编用法举例1.IF和IFE伪指令
IF伪指令的表达式值不为0时,认为汇编条件成立,否则认为不成立。
IFE伪指令的表达式值为0时,认为汇编条件成立,执行汇编。5-15如果VALUE的值大于10,则对语句1汇编,否则对语句2汇编。IFVALUEGT10CALLDEBUG1ELSECALLDEBUG2ENDIF30第三十页,共四十三页,2022年,8月28日条件汇编用法举例1.IF和IFE伪指令
IF伪指令的表达式值不为0时,认为汇编条件成立,否则认为不成立。
IFE伪指令的表达式值为0时,认为汇编条件成立,执行汇编。5-16设AL中存放了1个字母的ASCII码。由条件决定是否将AL中的字母进行大小写转换。:CHANGDB0:IFECHANGORAL,20HELSEANDAL,0DFHENDIF:31第三十一页,共四十三页,2022年,8月28日条件汇编用法举例2.IFDEF和IFNDEF伪指令
IFDEF中给定符号已经在本模块中定义或在本模块中用EXTRN说明为外部符号,则认为汇编条件成立。
IFNDEF与IFDEF相反。IFDEFSUBSYMSUBAPROCFARELSESUBAPROCNEARENDIF32第三十二页,共四十三页,2022年,8月28日5.4结构与记录
当变量的数据类型是单一的字节、两字节、四字节时,可以用DB、DW、DD这样的伪指令来定义,称为简单数据结构;若将简单数据结构的变量组合在一起,形成一个复合型的数据,再给这个复合型的数据起一个名字,得到一种新的数据类型,称为复杂数据类型,在80x86汇编语言中,这样的数据类型包括结构和记录。33第三十三页,共四十三页,2022年,8月28日结构与记录结构:逻辑上互相关联的一组数据,以某种形式组合在一起,使之成为一个整体,并可单独访问其中的某个数据元素,以便进行数据处理。记录:功能和用法与结构类似,两者的主要区别是记录以二进制位为单位组成字段,定义每个字段时都要指出位宽,这样能更好地利用内存空间。
34第三十四页,共四十三页,2022年,8月28日5.4.1结构的定义及引用用户在编程时可能会遇到不同数据类型构造的组合数据,如学生信息,包括学号、姓名、身高、体重、年龄等,每个学生都具有这样的信息。如能将这些数据集成在一个数据结构里,将优化程序结构。
35第三十五页,共四十三页,2022年,8月28日1.结构类型的说明定义结构名,把结构的有关信息明确,以便汇编语言在汇编时对结构分配存储单元及存放初值一旦定义了结构名,便可以多次用这一结构名定义若干个结构实体,即具有具体数值,有实际的存储区的结构变量名对结构变量名进行引用,即对某一结构变量名的整体或部分字段进行处理和存取。36第三十六页,共四十三页,2022年,8月28日结构伪指令STRUC语句格式:
结构名STRUC[字段名]数据类型定义语句
…
结构名ENDS37第三十七页,共四十三页,2022年,8月28日定义举例STUDENTSTRUC
NUMBERDB‘XX’NAMEDB6DUP(?)HEIGHTDB?WEIGHTDB?AGEDB?STUDENTENDS38第三十八页,共四十三页,2022年,8月28日2.结构变量的定义定义格式结构变量名结构名<字段值表>PERS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 IEC TR 62899-250:2025 EN Printed electronics - Part 250: Material technologies required in printed electronics for wearable smart devices
- 【正版授权】 IEC 60947-8:2003+AMD1:2006 CSV FR-D Low-voltage switchgear and controlgear - Part 8: Control units for built-in thermal protection (PTC) for rotating electrical machines
- 护理八年工作总结
- 儿童安全教育:疯跑打闹的危害与防范
- 球类运动居家护理方案
- 后循环缺血护理
- 2025年诚信建设实施方案
- 2025年数学学科教学工作方案
- 出镜记者与主持人实务 课件 第七章 灾难事件现场报道
- 2025年幼儿园推广一般话工作方案
- 2024年山东省烟台市初中学业水平考试地理试卷含答案
- 日军宣传标语大全
- 2024年广东省中考地理试题(含解析)
- DB6103∕T 62-2024 宝鸡特色饮食制作规程 岐山臊子面
- 森林经理学 课程设计
- 西方文论概览(第二版)-第九章课件
- “双减”政策(2023年陕西中考语文试卷非连续性文本阅读题及答案)
- 数据中心储能应用需求技术报告2024
- 2024年中考语文复习分类必刷:非连续性文本阅读(含答案解析)
- 100以内整十数加减法100道口算题(19套)
- 四年级语文国测模拟试题 (1)附有答案
评论
0/150
提交评论