




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2020/8/3,第11章 高级汇编语言技术,1,8086/8088和ARM核汇编语言程序设计,第11章 高级汇编语言技术,教学重点:,宏定义、宏调用和宏展开,2020/8/3,第11章 高级汇编语言技术,2,11.1 宏汇编,11.3 条件汇编,11.2 重复汇编,第11章 高级汇编语言技术,11.4 库的使用,2020/8/3,第11章 高级汇编语言技术,3,11.1 宏汇编,宏是具有宏名的一段汇编语句序列 宏需要先定义,然后在程序中进行宏调用 由于形式上类似其他指令,所以常称其为宏指令 宏指令实际上是一段代码序列的缩写;在汇编时,汇编程序用对应的代码序列替代宏指令 因为是在汇编过程中实现
2、的宏展开,所以常称为宏汇编,2020/8/3,第11章 高级汇编语言技术,4,宏定义的格式 由伪指令MACRO与ENDM实现。形式如下: 宏指令名MACRO 形式参数表 ; 宏体 ENDM,11.1.1 宏定义,11.1 宏汇编,说明: (1) 宏指令名由编程序者自定,但必须符合标号的命名规则。 (2) MACRO和ENDM是一对伪指令,分别表示宏定义的开始和结束。 (3) 宏体必须是指令、伪指令及宏指令构成的程序段。 (4) 形参表可根据需要作取舍。当需要设置多个形参时,各形参之间要用逗号分隔。,2020/8/3,第11章 高级汇编语言技术,5,宏定义的功能,将宏体定义为一条宏指令,以便在其
3、后的程序中通过对宏指令的调用来使用对应的宏体。,11.1 宏汇编,11.1.1 宏定义,2020/8/3,第11章 高级汇编语言技术,6,例11.1 以下宏定义所定义的宏指令AX10可以实现 寄存器AX内容乘以10的功能。,AX10 MACRO ;宏名 AX10 PUSH DX SAL AX,1 MOV DX,AX SAL AX,1 SAL AX,1 ADD AX,DX POP DX ENDM,11.1 宏汇编,11.1.1 宏定义,2020/8/3,第11章 高级汇编语言技术,7,11.1 宏汇编,11.1.2 宏调用和宏扩展,宏调用的格式,宏调用的格式为: 宏指令名 实参表,说明: 宏指令
4、名所指定的宏指令的定义必须放在该宏调用之前。(2) 实参表通常与宏定义中形参表相对应。当需要使用多个实参时,各实参之间要用逗号分隔。,2020/8/3,第11章 高级汇编语言技术,8,宏扩展,宏汇编程序在汇编源程序时自动用宏指令的内容代替宏指令,叫宏扩展 。,11.1 宏汇编,11.1.2 宏调用和宏扩展,当宏汇编程序在汇编时扫描到宏指令语句时,就把宏定 义中宏体的程序段目标代码插入在宏指令语句的位置上,如 果是带参数的宏指令语句,同时把相应实参一一替代宏体中 对应形参的位置,对原有宏体目标代码作相应修改。这样,在 程序的目标代码中,每个宏指令语句位置上都包含有相应宏 体的目标代码,因此宏指令
5、的使用不会减少程序的目标代码 长度。,注意:它与子程序的差别。前者在翻译阶段,后者在执行阶段起作用。,2020/8/3,第11章 高级汇编语言技术,9,两个字操作数相乘 宏定义: MULTIPLY MACRO OPR1,OPR2,RESULT PUSHDX PUSHAX MOVAX,OPR1 IMULOPR2 MOVRESULT,AX POPAX POPDX ENDM 宏调用: MULTIPLY CX,VAR,XYZBX MULTIPLY 240,BX,SAVE,11.1 宏汇编,11.1.2 宏调用和宏扩展,宏展开: 1PUSH DX 1PUSH AX 1MOV AX, CX 1IMUL V
6、AR 1MOV XYZBX, AX 1POP AX 1POPDX 1PUSH DX 1PUSHAX 1MOV AX, 240 1IMUL BX 1MOV SAVE, AX 1POP AX 1POP DX ,2020/8/3,第11章 高级汇编语言技术,10,11.1 宏汇编,11.1.2 宏调用和宏扩展,dispcharmacro char;宏定义 mov ah, 2;宏定义体 mov dl, char int 21h endm dispchar ?;宏调用(宏指令) 1mov ah, 2;宏展开 1mov dl, ? 1int 21h,2020/8/3,第11章 高级汇编语言技术,11,第1
7、1章:宏与子程序的比较,比较,仅是源程序级的简化:宏调用在汇编时进行程序语句的展开,不需要返回;不减小目标程序,执行速度没有改变 通过形参、实参结合实现参数传递,简捷直观、灵活多变,还是目标程序级的简化:子程序调用在执行时由CALL指令转向、RET指令返回;形成的目标代码较短,执行速度减慢 需要利用寄存器、存储单元或堆栈等传递参数,宏,子程序,2020/8/3,第11章 高级汇编语言技术,12,第11章:宏与子程序的比较结论,宏与子程序具有各自的特点,程序员应该根据具体问题选择使用那种方法 通常,当程序段较短或要求较快执行时,应选用宏;当程序段较长或为减小目标代码时,要选用子程序,比较结论,宏
8、,子程序,2020/8/3,第11章 高级汇编语言技术,13,11.1 宏汇编,11.1.3宏定义和宏调用中参数的使用,宏定义时, 可以无参数, 可以带有一个参数, 也可以具有多个参数; 参数可以是常数、变量、存储单元、指令 (操作码)或它们的一部分,也可以是表达式; 宏定义体可以是任何合法的汇编语句,既可以是硬指令序列,又可以是伪指令序列。,宏的参数使用非常灵活,第十七讲,2020/8/3,第11章 高级汇编语言技术,14,11.1 宏汇编,11.1.3宏定义和宏调用中参数的使用,宏注释符,用于表示在宏定义中的注释。采用这个符号的注释,在宏展开时不出现 字符串传递操作符,用于括起字符串。在宏
9、调用中,如果传递的字符串实参数含有逗号、空格等间隔符号,则必须用这对操作符,以保证字符串的完整 !转义操作符,用于指示其后的一个字符作为一般字符,不含特殊意义,宏操作符,2020/8/3,第11章 高级汇编语言技术,15,例SAVEREG MACRO PUSHAXPUSHBX PUSHCX PUSHDX PUSHSI PUSHDI ENDM,1、宏定义中的参数形式:无变元(参数),宏调用:SAVEREG宏展开则将宏定义体的内容全部列出:1 PUSH AX 1 PUSH BX1 PUSH CX 1 PUSH DX1 PUSH SX 1 PUSH DX,2020/8/3,第11章 高级汇编语言技术
10、,16,2、宏定义中的参数形式:变元可以是操作码。 宏定义: FOO MACRO P1,P2,P3 MOV AX,P1 P2 P3 ;变元P2为操作码 ENDM 宏调用: FOO WORDVAR,INC,AX 宏展开: 1 MOV AX,WORDVAR 1 INC AX ;用实元INC取代哑元P2,形成INC指令,11.1 宏汇编,11.1.3宏定义和宏调用中参数的使用,2020/8/3,第11章 高级汇编语言技术,17,leap macro cond, lab;宏定义 j宏展开 1jnz here ,3、宏定义中的参数形式:变元是操作码的一部分, 但在宏定义体中必须用宏调用 PURGE CB
11、W ;清除对CBW的宏定义 CBW ;将(AL)的符号扩展到AH,2020/8/3,第11章 高级汇编语言技术,27,11.1 宏汇编,11.1.4 宏嵌套,(2) 宏定义时也要注意现场的保护和恢复。,注意宏扩展后程序的一致性、完整性。,2020/8/3,第11章 高级汇编语言技术,28,11.3 条件汇编,11.1 宏汇编,11.4 库的使用,11.2 重复汇编,第11章 高级汇编语言技术,2020/8/3,第11章 高级汇编语言技术,29,重复汇编指在汇编过程中,重复展开一段(基本)相同的语句 重复汇编没有名字,不能被调用 重复汇编常用在宏定义体中,也可以在一般汇编语句中使用 重复汇编伪指
12、令有三个: REPT按参数值重复 IRP按参数个数重复 IRPC按参数的字符个数重复 最后,用ENDM结束,11.2 重复汇编,2020/8/3,第11章 高级汇编语言技术,30,11.2.1 使用REPT伪指令的重复汇编结构,11.2 重复汇编,格式:REPT 整数表达式 重复体 ENDM 功能:使汇编程序对重复体作重复汇编,以整数表达式的 值作为重复次数。,例如: CHAR=41H REPT 10 DB CHAR CHAR=CHAR+1 ENDM,其结果等价于: DB 41H,42H,43H,44H,45H,46H,47H,48H,49H,4AH,2020/8/3,第11章 高级汇编语言技
13、术,31,11.2.2 使用IRP伪指令的重复汇编结构,11.2 重复汇编,格式:IRP 形参,实参表 重复体 ENDM 功能:使汇编程序对重复体作重复汇编,每作一次汇编就 依次将实参表中的一个实参取代重复体中的形参。,例如: IRP REG,AX,BX,CX,DX PUSH REG ENDM,其结果等价于: PUSH AX PUSH BX PUSH CX PUSH DX,2020/8/3,第11章 高级汇编语言技术,32,11.2.3 使用IRPC伪指令的重复汇编结构,11.2 重复汇编,格式:IRPC 形参,字符串 重复体 ENDM 功能:使汇编程序对重复体作重复汇编,每作一次汇编就依次
14、用字符串中的一个字符取代重复体中的形参。,例如: IRPC X,0123456789 DB X ENDM,其结果等价于: DB 0,1,2,3,4,5,6,7,8,9,2020/8/3,第11章 高级汇编语言技术,33,11.1.4 宏嵌套,11.3 条件汇编,重复汇编与循环程序结构的比较,2020/8/3,第11章 高级汇编语言技术,34,11.2 重复汇编,11.1 宏汇编,11.4 库的使用,11.3 条件汇编,第11章 高级汇编语言技术,2020/8/3,第11章 高级汇编语言技术,35,11.3.1 条件汇编的概念及条件汇编结构,11.3 条件汇编,条件汇编伪指令在汇编过程中,根据条
15、件决定汇编的语句 IFxx 表达式;满足,汇编分支语句体1 分支语句体1 ELSE;不满足,汇编分支语句体2 分支语句体2 ENDIF;条件汇编结束,2020/8/3,第11章 高级汇编语言技术,36,11.3.2 条件汇编伪指令,11.3 条件汇编,条件汇编伪指令,2020/8/3,第11章 高级汇编语言技术,37,pdatamacro num IF num lt 100;如果num 100,则汇编如下语句 db num dup (?) ELSE;否则,汇编如下语句 db 100 dup (?) ENDIF endm pdata 12 ;宏调用 db 12 dup(?) ;宏汇编结果 pda
16、ta 102 ;宏调用 db 100 dup(?) ;宏汇编结果,例,2020/8/3,第11章 高级汇编语言技术,38,例11.19 试定义一个实现无条件转移或条件转移的宏指令。 当宏调用时给出一个实参,则将其作为无条件转移的目标位置; 当宏调用时给出两个实参,则将第一个实参作为条件转移的 目标位置,将第二个实参数是否为零作为转移的条件 为零则转,非零则不转。,GOTO MACRO DEST,COND IFB COND JMP DEST ELSE MOV AX,COND CMP AX,0 JZ DEST ENDIF ENDM,11.3.2 条件汇编伪指令,11.3 条件汇编,2020/8/3
17、,第11章 高级汇编语言技术,39,11.3.2 条件汇编伪指令,11.3 条件汇编,宏调用: GOTO BR1 宏汇编结果: + JMP BR1 ,宏调用 : GOTO BR2, W_DATA 宏汇编结果 : + MOV AX, W_DATA + CMP AX,0 + JZ BR2 ,2020/8/3,第11章 高级汇编语言技术,40,11.2 重复汇编,11.1 宏汇编,11.3 条件汇编,11.4 库的使用,第11章 高级汇编语言技术,2020/8/3,第11章 高级汇编语言技术,41,11.4 库的使用,11.4.1 库的建立,将具有通用价值或经常用到的源程序段编辑成一 个文件,这就产
18、生了一个汇编语言源程序库。内容为 宏定义的源程序库称为宏库。,有两种库: 1. 宏库; 2. 子程序库 本教材介绍的是1,即宏库。,2020/8/3,第11章 高级汇编语言技术,42,建立库要注意以下几个方面: (1) 其中的宏定义使用的标号必须用LOCAL伪指令说明。 (2) 其中的宏定义或子程序必须作现场的保护和恢复。 (3) 源程序段要尽量具备通用性。 (4) 源程序段中不得使用END伪指令,这是因为使用源程序 库本身已设置该伪指令。 (5) 附上必要的使用说明。,11.4 库的使用,11.4.1 库的建立,2020/8/3,第11章 高级汇编语言技术,43,11.4 库的使用,11.4.2 库的使用,源程序在使用库时,用伪指令INCLUDE : 格式: INCLUDE 库文件名,2020/8/3,第11章 高级汇编语言技术,44,要正确选择IN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 冬至家长会幼儿园课件
- 冬季疾病传染知识课件
- 冬奥课件话题
- 2025年安徽省肥东县高级中学物理高二第二学期期末调研模拟试题含解析
- 宁夏银川市兴庆区银川一中2025届物理高一下期末学业质量监测模拟试题含解析
- 2025届黑龙江省鸡西虎林市东方红林业局高一物理第二学期期末复习检测模拟试题含解析
- 二零二五年度餐盒品牌授权与推广合同
- 二零二五年度汽车内饰OEM定制设计与制造合同范本
- 二零二五年度便携式超声设备批发及售后维护协议
- 2025版智能家居玻璃瓶定制购销合同
- JJG972-2023离心式恒加速度试验机检定规程
- 2025年快件处理员职业技能培训考试题库
- 眼科医院感染制度与规程
- 透析病人营养不良的护理
- 充电桩项目实施过程中的质量保证措施
- 《实验室应急预案》专题培训
- 技术、售后服务计划及质量保障措施
- 保山隆阳区小升初数学试卷
- 工程消防资料承包合同范本
- 急性肾功能不全护理查房
- 2024版住建部二手房买卖合同范本
评论
0/150
提交评论