说明 宏指令名是该宏定义的名称。调用时使用宏指 令名对该宏定义进行调用。 宏指令符合标识符规定。宏指令名不能重复, 但可以和源程序中的其他变量、标号、指令、伪 指令名相同,在这种情况下宏指令的优先级最高 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