清华大学:《汇编语言程序设计》第七章 高级汇编语言技术

第七章高级汇编语言技术 宏汇编 重复汇编 条件汇编
1 • 宏汇编 • 重复汇编 • 条件汇编 第七章 高级汇编语言技术

1.宏汇 宏:源程序中一段有独立功能的程序代码。 宏指令:用户自定义的指令。在编程时,将多次 使用的功能用一条宏指令来代替。 指令 汇编语言程序{伪指令(伪操作) 宏指令
2 1. 宏汇编 宏:源程序中一段有独立功能的程序代码。 宏指令:用户自定义的指令。在编程时,将多次 使用的功能用一条宏指令来代替。 汇编语言程序 指令 伪指令(伪操作) 宏指令

macro name MACRO[哑元表]形参/虚参 [ LOCAL标号表] 宏定义体 ENDM 宏调用:(必须先定义后调用) macro_name[实元表] 实参 宏展开:汇编程序把宏调用展开
3 宏展开:汇编程序把宏调用展开 宏定义: macro_name MACRO [哑元表] ; 形参/虚参 [LOCAL 标号表] …… …… ; 宏定义体 ENDM 宏调用: (必须先定义后调用) macro_name [实元表] ; 实参

宏定义: savereg MACRO push ax push bx push CX push d 宏展开: push Si push di 1 push ax ENDM 1 push bx 1 push CX 1 push dx 宏调用: 1 push Si savereg 1 push di
4 例:保存寄存器 宏展开: 1 push ax 1 push bx 1 push cx 1 push dx 1 push si 1 push di 宏定义: savereg MACRO push ax push bx push cx push dx push si push di ENDM 宏调用: savereg

宏定义 multiply MACRo oprl, opr, result push dx push ax mov ax, oprl imul opr mov result. ax 宏展开: pop ax pop d push ENDM 1 push ax 1 mov ax. Cx 1 imu var 宏调用: 1 mov xyz Lbx, ax 1 pop ax multiply Cx, var, xyz Lbx] 1 pop dx 5
5 例:两个字相乘 宏定义: multiply MACRO opr1,opr2,result push dx push ax mov ax,opr1 imul opr2 mov result,ax pop ax pop dx ENDM 宏调用: multiply cx,var,xyz[bx] 宏展开: 1 push dx 1 push ax 1 mov ax,cx 1 imul var 1 mov xyz[bx],ax 1 pop ax 1 pop dx

File Edit Search View Options He G:asn、MAc.LST multiply macro oprl, opr2, result push dx push ax mov ax, opr1 imul mov result. ax pop dx endm 0000 data segment 0000 0064 var dw 100 gg2??? xyz dw? 0004 data ends de segment 0000 man 上oc assume cs:code ds .data 0000 B8 R mov ax. data 0005 B9 0002 mov cx, 2 0008 BB 0000 ply cx, var, xyz Lbx 000B 5 push ax 900G 50 工11111 push ax mov ax, Cx G00F F7 2E 0000 R inu⊥Uar p8138987ggg2R xyz [bxI, g1758 g19B8 001C CD 4c00 4c0gh int 21h ain endp 001E code ends d start 在LST文件中看到的宏展开情况
6 在LST文件中看到的宏展开情况

宏定义 宏展开 abso MACRo oper LOCAL next cmp var, O cmp oper, 0 jge??0000 1 ned var Ige next 1??0000: neg oper next ENDM 111 cm 宏调用 jge??0001 neg bx absol var 1??0001 absol bx 7
7 例:求绝对值 宏定义: absol MACRO oper LOCAL next cmp oper,0 jge next neg oper next: ENDM 宏调用: …… absol var …… absol bx …… 宏展开: …… 1 cmp var,0 1 jge ??0000 1 neg var 1 ??0000: …… …… 1 cmp bx,0 1 jge ??0001 1 neg bx 1 ??0001: ……

absol macro oper local next cmp oper, g next neg oper next. endm data segment var dw -100 data ends code segment main proc assume cs:code, ds :data mov ax. data mou absol var mov bx-1 absol bx mot 21n cboh main endp code ends end start absol var 0005 83 3E 0000 R g 000A 7D 04 Gge ??0000 000C F7 1E 0000 R 111 neg var 0010 1?70000 0010 BB FFFF mov X, absol bx g138 g16 g18 P FB 90 Jge ??g8g1 001A h02带10a1份操作的宏展开情况
8 带local伪操作的宏展开情况

符号1&符号2 宏展开时合并前后两个符号形成一个符号 注释 宏展开时,后面的注释不予展开。 %表达式 汇编程序将%后面的表达式转换为数字,并在展开期间 用这个数取代哑元
9 宏汇编操作符: & ;; % 符号1 & 符号2 宏展开时,合并前后两个符号形成一个符号。 ;; 注释 宏展开时,;;后面的注释不予展开。 % 表达式 汇编程序将%后面的表达式转换为数字,并在展开期间 用这个数取代哑元

leap macro cond, lab j&cond lab endm 宏调用: 宏展开: leap Z, there jz there leap nz, here inz here
10 leap macro cond,lab j&cond lab endm 宏定义: 宏调用: leap z, there …… leap nz, here 宏展开: 1 jz there …… 1 jnz here
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 清华大学:《汇编语言程序设计》第一章 基础知识.ppt
- 清华大学:《汇编语言程序设计》汇编语言程序与高级语言程序的连接.ppt
- 徐州工程学院:《网页制作与网站建设》讲义.docx
- 《计算机进程管理》讲义.ppt
- 《计算机辅助设计——机电系统CAD》教学讲义教材:附录二 常见机械CAD软件简介.doc
- 《计算机辅助设计——机电系统CAD》教学讲义教材:附录一 MATLAB 软件简介.doc
- 《计算机辅助设计——机电系统CAD》教学讲义教材:第八章 机电系统计算机辅助设计的发展.doc
- 《计算机辅助设计——机电系统CAD》教学讲义教材:第七章 机电系统的智能设计理论和方法.doc
- 《计算机辅助设计——机电系统CAD》教学讲义教材:第六章 产品数据管理技术.doc
- 《计算机辅助设计——机电系统CAD》教学讲义教材:第五章 机械产品模型理论及常用建模技术.doc
- 《计算机辅助设计——机电系统CAD》教学讲义教材:第四章 机电系统动态性能的计算机仿真.doc
- 《计算机辅助设计——机电系统CAD》教学讲义教材:第三章 机电系统的计算机辅助分析.doc
- 《计算机辅助设计——机电系统CAD》教学讲义教材:第二章 机电系统CAD算法基础.doc
- 《计算机辅助设计——机电系统CAD》教学讲义教材:第一章 绪论.doc
- 《计算机辅助设计——机电系统CAD》教学讲义教材:目录.doc
- 《计算机组装与维护》第十章 电源和机箱.ppt
- 《计算机组装与维护》第四章 主板-教案.doc
- 《计算机组装与维护》第四章 主板-幻灯片.ppt
- 《计算机组装与维护》第六章 显示卡-幻灯片.ppt
- 《计算机组装与维护》第八章 声卡和音箱-幻灯片.ppt
- 清华大学:《汇编语言程序设计》第三章(3-1) 8086的寻址方式.ppt
- 清华大学:《汇编语言程序设计》第三章(3-2) 8086的指令系统.ppt
- 清华大学:《汇编语言程序设计》第三章(3-3) 逻辑指令.ppt
- 清华大学:《汇编语言程序设计》第九章 BIOS和DOS中断.ppt
- 清华大学:《汇编语言程序设计》第二章 80x86计算机组织.ppt
- 清华大学:《汇编语言程序设计》第五章 循环与分支程序设计.ppt
- 清华大学:《汇编语言程序设计》第八章 输入输出程序设计.ppt
- 清华大学:《汇编语言程序设计》第六章 子程序结构.ppt
- 清华大学:《汇编语言程序设计》第四章 汇编语言程序格式.ppt
- 清华大学:《汇编语言程序设计》绪论.ppt
- 《数据库原理与应用》ppt电子书.ppt
- 《C++程序开发教程》课程电子教案(PPT教学课件)第二章 C++基础知识.ppt
- 《C++程序开发教程》课程电子教案(PPT教学课件)第九章 多态性.ppt
- 《C++程序开发教程》课程电子教案(PPT教学课件)第十章 模板.ppt
- 《C++程序开发教程》课程电子教案(PPT教学课件)第四章 函数.ppt
- 《C++程序开发教程》课程电子教案(PPT教学课件)第十二章 异常处理.ppt
- 《C++程序开发教程》课程电子教案(PPT教学课件)第五章 类与对象.ppt
- 《C++程序开发教程》课程电子教案(PPT教学课件)第七章 动态内存分配.ppt
- 《C++程序开发教程》课程电子教案(PPT教学课件)第八章 继承性.ppt
- 《C++程序开发教程》课程电子教案(PPT教学课件)第十三章 图书馆设计.ppt