第8章高级汇编故求 本章学习要点 1、掌握宏汇编的基本概念 2、理解宏定义、宏调用、宏展开的特点和 使用过程 3、了解重复汇编的基本概念和使用 4、了解条件汇编的基本概念和使用2
1 本章学习要点 1、掌握宏汇编的基本概念 2、理解宏定义、宏调用、宏展开的特点和 使用过程 3、了解重复汇编的基本概念和使用 4、了解条件汇编的基本概念和使用 第8章 高级汇编技术
第8章高级汇编故求 什么是宏? 宏(或宏指令)是源程序中一段有独立功能 的程序代码,只需定义一次,可以多次调用。 为什么使用宏汇编? 在编制汇编语言程序过程中,有些功能程序 段需要多次重复使用,所不同的只是参与操作的 操作数。 为了减少编程的工作量,通常采用两种方法 ①将程序段编写为独立的子程序 ②将程序段定义成宏
2 • 什么是宏? 宏(或宏指令)是源程序中一段有独立功能 的程序代码,只需定义一次,可以多次调用。 • 为什么使用宏汇编? 在编制汇编语言程序过程中,有些功能程序 段需要多次重复使用,所不同的只是参与操作的 操作数。 为了减少编程的工作量,通常采用两种方法: ①将程序段编写为独立的子程序 ②将程序段定义成宏 第8章 高级汇编技术
第8章高级汇编技求 81宏汇编 82重复汇编 返回 退出
3 8.1 宏汇编 8.2 重复汇编 返回 第8章 高级汇编技术 退出
8.1宏汇编 81.1宏定义、宏调用和宏展开 8.1.2形参和实参 81.3伪指令 PURGE 81.4伪指令 LOCAL 返回 退出
4 8.1 宏汇编 8.1.1 宏定义、宏调用和宏展开 8.1.2 形参和实参 8.1.3 伪指令PURGE 返 回 8.1.4 伪指令LOCAL 退 出
8.1.1宏定义、宏调用和宏展开 1宏定义 用伪指令 MACRO/ENDM实现,其语句格式是: 宏指令名 MACRO[形参1,形参2,…,形参n 宏体 ENDM 例如,BCD码和ASCⅡ码之间的转换,可将AL 中的内容左移或右移定义成宏指令
5 8.1.1 宏定义、宏调用和宏展开 1.宏定义 用伪指令MACRO/ENDM实现,其语句格式是: 宏指令名 MACRO [形参1,形参2,…,形参n] ┇ 宏体 ENDM 例如,BCD码和ASCII码之间的转换,可将AL 中的内容左移或右移定义成宏指令
说明 宏指令名是该宏定义的名称。调用时使用宏指 令名对该宏定义进行调用。 宏指令符合标识符规定。宏指令名不能重复, 但可以和源程序中的其他变量、标号、指令、伪 指令名相同,在这种情况下宏指令的优先级最高 MACRO必须与ENDM成对出现。 MACRO标 识宏定义的开始。 形式参数(即形参,也称哑元、虚参)是可选 项,宏可以不带参数;带参数时,多个形参间用 逗号分隔。形参的规定与对标识符的规定是一致 的
6 说明 • 宏指令名是该宏定义的名称。调用时使用宏指 令名对该宏定义进行调用。 • 宏指令符合标识符规定。宏指令名不能重复, 但可以和源程序中的其他变量、标号、指令、伪 指令名相同,在这种情况下宏指令的优先级最高。 • MACRO必须与ENDM成对出现。MACRO标 识宏定义的开始 。 • 形式参数(即形参,也称哑元、虚参)是可选 项,宏可以不带参数;带参数时,多个形参间用 逗号分隔。形参的规定与对标识符的规定是一致 的
8.1.1宏定义、宏调用和宏展开 假设左移4位: SH工 FT MACRO MOV CI, 4 SAL AL, CL ENDM 2.宏调用 宏调用的格式为: 宏指令名[实参1,实参2,,实参n]
7 8.1.1 宏定义、宏调用和宏展开 假设左移4位: SHIFT MACRO MOV CL,4 SAL AL,CL ENDM 2.宏调用 宏调用的格式为: 宏指令名 [实参1,实参2,…,实参n]
81.1宏定义、宏调用和宏展开 对于上例的宏定义,编程时宏调用语句为 SH工FT 3.宏展开 宏展开将宏指令语句用宏定义中宏体的程序 段目标代码替换。汇编源程序时,宏汇编程序 将对每条宏指令语句进行宏展开,用实参替代 相应的形参,对宏体目标代码作相应改变
8 8.1.1 宏定义、宏调用和宏展开 对于上例的宏定义,编程时宏调用语句为 ┇ SHIFT ┇ 3. 宏展开 宏展开将宏指令语句用宏定义中宏体的程序 段目标代码替换。汇编源程序时,宏汇编程序 将对每条宏指令语句进行宏展开,用实参替代 相应的形参,对宏体目标代码作相应改变
8.1.1宏定义、宏调用和宏展开 例8.1将两个用压缩的BCD码表示的4位十进制数 相加,结果存入 RESULT单元中。 ;对两数相加功能进行宏定义 BCDADD MACRO VARX, VARY, RESULT MOV AL, VARX ADD AL, VARY DAA ;低位相加、调整 MOV RESULT, AL MOV AL, VARX+1 ADC AL, VARY+1 DAA ;高位相加、调整 MOV RESULT+l, AL
9 8.1.1 宏定义、宏调用和宏展开 例8.1 将两个用压缩的BCD码表示的4位十进制数 相加,结果存入RESULT单元中 。 ;对两数相加功能进行宏定义 BCDADD MACRO VARX,VARY,RESULT MOV AL,VARX ADD AL,VARY DAA ;低位相加、调整 MOV RESULT,AL MOV AL,VARX+1 ADC AL,VARY+1 DAA ;高位相加、调整 MOV RESULT+1,AL
8.1.1宏定义、宏调用和宏展开 ENDM DATA SEGMENT A1 DB 30H,11H A2 DB 79H,47H A3 DB 2 DUP(?) B1 DB 32H,23H B2 DB 71H,62H B3 DB 2 DUP(? DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA START: PUSH DS MOV AX, 0 PUSH AⅩ
10 8.1.1 宏定义、宏调用和宏展开 ENDM DATA SEGMENT A1 DB 30H,11H A2 DB 79H,47H A3 DB 2 DUP(?) B1 DB 32H,23H B2 DB 71H,62H B3 DB 2 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:PUSH DS MOV AX,0 PUSH AX