《汇编语言程序设计教程》 第八章 汇编语言高级编程技术

第8章汇编语言高级编程技术 8.1宏 8.2汇编高级语法 8.3模块化程序设让 8.4C和汇编的混合编程 8.5程序优化
第8章 汇编语言高级编程技术 8.1 宏 8.2 汇编高级语法 8.3 模块化程序设计 8.4 C和汇编的混合编程 8.5 程序优化

8.1宏 81.1宏指令的定义和使用 宏指令的使用有3个步骤: 宏定义 宏调用 宏扩展
8.1 宏 8.1.1 宏指令的定义和使用 宏指令的使用有3个步骤: ◼ 宏定义 ◼ 宏调用 ◼ 宏扩展

宏定义 格式: 宏指令名 MACRO[形式参数表] 宏指令体 ENDM 形式参数表给出形参,形参之间用逗号隔开
宏定义 格式: 宏指令名 MACRO [形式参数表] … ;宏指令体 ENDM ◼ 形式参数表给出形参,形参之间用逗号隔开

宏调用和宏扩展 宏调用的格式: 宏指令名[实参数表] 实参应和形参顺序一致 宏扩展: 用宏指令体的语句序列替换宏指令名 并用实参替换形参
宏调用和宏扩展 宏调用的格式 : 宏指令名 [实参数表] ◼ 实参应和形参顺序一致 宏扩展 : ◼ 用宏指令体的语句序列替换宏指令名 ◼ 并用实参替换形参

2. LOCAL伪操作 程序中多次调用宏指令,展开时其中的标 号重复,导致编译出错 解决办法:将宏定义体中的标号说明为局 部标号 格式: local标号1[,标号2,标号3,…
2.LOCAL伪操作 程序中多次调用宏指令,展开时其中的标 号重复,导致编译出错。 解决办法 :将宏定义体中的标号说明为局 部标号 格式:local 标号1[,标号2, 标号3, …]

3. PURGE伪指令 PURGE伪指令取消已定义的宏指令 格式为: PURGE宏指令名[,宏指令名,] 注意: 宏指令被取消的程序就不能再使用这个宏指令 指令取消之前的宏调用已经被展开,不受影响
3.PURGE伪指令 PURGE伪指令取消已定义的宏指令 格式为: PURGE 宏指令名 [, 宏指令名, …] 注意: ◼ 宏指令被取消的程序就不能再使用这个宏指令 ◼ 指令取消之前的宏调用已经被展开,不受影响

8.1.2宏指令中参数的使用 1.MOVE宏指令 MOV指令不允许源操作数和目标操作数同时为内存操作数, 我们如此定义 dwVarA DWORD dwVarB DWORD 50 MOVE MACRo X. Y PUSH Y POP ENDM 调用 move dwVarA, dwVarB,可将后者内容赋给前者
8.1.2 宏指令中参数的使用 1.MOVE宏指令 MOV指令不允许源操作数和目标操作数同时为内存操作数, 我们如此定义: dwVarA DWORD ? dwVarB DWORD 50 MOVE MACRO X, Y PUSH Y POP X ENDM 调用MOVE dwVarA,dwVarB,可将后者内容赋给前者

2.SUBX宏指令 SUB指令执行后,目标操作数中的被减数被“差” 替换掉。我们可以定义一个新的宏指令,它包括 3个参数:被减数( minuend)、减数 ( subtrahend)、差( difference) SUBX MACRO minuend. subtrahend. difference PUSH EAX EAX. minuend SUB EAX. subtrahend difference. EAX
2.SUBX宏指令 SUB指令执行后,目标操作数中的被减数被“差” 替换掉。我们可以定义一个新的宏指令,它包括 3个参数:被减数(minuend)、减数 (subtrahend)、差(difference)。 SUBX MACRO minuend, subtrahend, difference PUSH EAX MOV EAX, minuend SUB EAX, subtrahend MOV difference, EAX

SUBX宏指令(续) ;接上页程序 POP EAX ENDM 要计算ECX=EDX-8,就调用SUBX宏: SUBX edX. 8. ECX
SUBX宏指令(续) ;接上页程序 POP EAX ENDM 要计算ECX=EDX–8,就调用SUBX宏: SUBX EDX, 8, ECX

3.Idx宏指令 对给定的数组下标i,j,元素的地址为: 数组首地址+(i米 Rowsize+j)* Elementsize RowSize表示为数组每行的大小 Elementsize表示为每个元素的大小 横线部分可以用宏指令表示: Idx MACRO l,, RowSize IMUL EBX.I. RowSize ADD
3.Idx宏指令 对给定的数组下标i, j,元素的地址为: 数组首地址 + (i * RowSize + j) * ElementSize RowSize表示为数组每行的大小 ElementSize表示为每个元素的大小 横线部分可以用宏指令表示: Idx MACRO I, J, RowSize IMUL EBX,I, RowSize ADD EBX, J
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《汇编语言程序设计教程》 第七章 常用数据结构.ppt
- 《汇编语言程序设计教程》 第六章 子程序设计.ppt
- 《汇编语言程序设计教程》 第五章 分支与循环程序设计.ppt
- 《汇编语言程序设计教程》 第四章 数据操作.ppt
- 《汇编语言程序设计教程》 第三章 Windows汇编程序基础.ppt
- 《汇编语言程序设计教程》 第二章 Intel80x86系列微处理器.ppt
- 《汇编语言程序设计教程》 第一章 基础知识.ppt
- 《C语言》课程教学资源(作业习题)实例试题100题.doc
- 《网络程序设计》PPT电子课件(共三章).ppt
- 西安交通大学软件学院:《面向对象的软件工程》 第九章(9-2) 面向对象设计.ppt
- 西安交通大学软件学院:《面向对象的软件工程》 第九章 远程软工.ppt
- 西安交通大学软件学院:《面向对象的软件工程》 第八章 面向对象分析.ppt
- 西安交通大学软件学院:《面向对象的软件工程》 第八章 远程软工.ppt
- 西安交通大学软件学院:《面向对象的软件工程》 第七章(7-2) 面向对象软件工程的概念.ppt
- 西安交通大学软件学院:《面向对象的软件工程》 第七章 远程软工.ppt
- 西安交通大学软件学院:《面向对象的软件工程》 第六章(6-2) 远程软工.ppt
- 西安交通大学软件学院:《面向对象的软件工程》 第六章 软件维护.ppt
- 西安交通大学软件学院:《面向对象的软件工程》 第五章 软件测试续.ppt
- 西安交通大学软件学院:《面向对象的软件工程》 第五章 软件测试.ppt
- 西安交通大学软件学院:《面向对象的软件工程》 第四章 软件设计.ppt
- 《汇编语言程序设计教程》 第九章 I/0程序设计.ppt
- 《汇编语言程序设计教程》 第十章 保护模式及其编程.ppt
- 黑龙江八一农垦大学:《计算机辅助设计》课程教学大纲(草业科学及园林专业).doc
- 黑龙江八一农垦大学:《计算机辅助设计》理论课程各章电子教案.doc
- 《计算机辅助设计》AutoCAD教程讲义(共十章).doc
- 《高级程序设计语言》 第一章 C语言概述.ppt
- 《高级程序设计语言》 第七章 数组.ppt
- 《高级程序设计语言》 第三章 数据类型、运算符与表达式.ppt
- 《高级程序设计语言》 第二章 程序的灵魂——算法.ppt
- 《高级程序设计语言》 第五章 选择结构程序设计.ppt
- 《高级程序设计语言》 第八章 函数.ppt
- 《高级程序设计语言》 第六章 循环控制.ppt
- 《高级程序设计语言》 第十一章 结构体与公用体.ppt
- 《高级程序设计语言》 第十章 指针.ppt
- 《高级程序设计语言》 第四章 顺序程序设计.ppt
- 上海交通大学:《接口技术》 实验教学大纲.doc
- 上海交通大学:《微机原理与接口技术》课程PPT教学课件(微型计算机技术)目录(孙德文).ppt
- 上海交通大学:《微机原理与接口技术》课程PPT教学课件(微型计算机技术)第十章 微型计算机系统实用接口技术.ppt
- 上海交通大学:《微机原理与接口技术》课程PPT教学课件(微型计算机技术)第七章 中断.ppt
- 上海交通大学:《微机原理与接口技术》课程PPT教学课件(微型计算机技术)第八章 可编程接口芯片及其应用.ppt