安徽理工大骨计算机科学与技术系李兆 《汇编语言》第7章 子程序调用和宏调用的工作方式 主程序 主程序 主程序 展开 Q A B Call Q 子程序Q QCD Q QE,F Call Q RET Q MACRO X,Y Call Q ENDM
Call Q Call Q Call Q Q: RET 子程序Q Q A,B Q C,D Q E,F Q MACRO X,Y ENDM 主程序 主程序 主程序 展开 子程序调用和宏调用的工作方式 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》第7章
安徽理工太骨计算机科学与技术系李兆 《汇编语言》第7章 用一个例子来说明宏定义、宏调用和宏展开的情况 例:将两个16位数相加,结果存入16位 RESULT单 元中。 对两数相加功能进行宏定义
用一个例子来说明宏定义、宏调用和宏展开的情况 例:将两个16位数相加,结果存入16位 RESULT 单 元中 。 ;对两数相加功能进行宏定义 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》第7章
安徽理工太骨计算机科学与技术系李兆 《汇编语言》第7章 BCDADD MACRO VARX, VARY, RESULT MOV AL, VARX ADD AL, VARY MOV RESULT, AL MOV AL, VARX+1 ADC AL, VARY+1 MOV RESULT+1,AL, ENDM DATA SEGMENT A1 D1234H A2 D5678H A3 DWI B1 D1357H B2 D2468H B3 DW DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA START: PUSH DS MOv AX, 0 PUSH AX
BCDADD MACRO VARX,VARY,RESULT MOV AL,VARX ADD AL,VARY MOV RESULT,AL MOV AL,VARX+1 ADC AL,VARY+1 MOV RESULT+1,AL ENDM DATA SEGMENT A1 DW 1234H A2 DW 5678H A3 DW ? B1 DW 1357H B2 DW 2468H B3 DW ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:PUSH DS MOV AX,0 PUSH AX 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》第7章
安徽理工大学计算机科学与技术系李兆 《汇编语言》第7章 MOV A, A1 Mov A%, DATA 1 ADD AL, A2 Mov DS, AX BCDADD1,n2,A3;宏调 1 Mov A3, A 用 1 MOV AL, A1+1 BCDADD B1,B2,B3;再 1 ADC AL, A2+1 次宏调用 1 Mov A3+1, AT RET CODE ENDS 1 MOV AL, B1 1 ADD AL, B2 AND SART 1 Mov B3, AL 1 MOV AL, B1+1 1 ADC AL,B2+1 经宏展开后: 1 MOV B3+1, AT PUSH DS Mov A%, 0 PUSH AX Mov A, DATA 宏汇编程序在所展开的 Mov DS, AX 指令前标识以“1′号以 示区别。较早的版本用
MOV AX,DATA MOV DS,AX BCDADD A1,A2,A3;宏调 用 BCDADD B1,B2,B3 ;再 次宏调用 RET CODE ENDS END START 经宏展开后: PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX 1 MOV AL,A1 1 ADD AL,A2 1 MOV A3,AL 1 MOV AL,A1+1 1 ADC AL,A2+1 1 MOV A3+1,AL 1 MOV AL,B1 1 ADD AL,B2 1 MOV B3,AL 1 MOV AL,B1+1 1 ADC AL,B2+1 1 MOV B3+1,AL • 宏汇编程序在所展开的 指令前标识以‘1’号以 示区别。较早的版本用 ‘+’ 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》第7章
安徽理工太骨计算机科学与技术系李兆 《汇编语言》第7章 712宏定义中的参数: 2参数可以是操作码 1宏定义可以无参数 a macro p1, p2, p3 moy ax,p savereg macro p2 p ush ax endim push bx 调用: push cK a word var nc.ax IS endm 展开: 1 mov ax, word var nc ax
7.1.2 宏定义中的参数: 1 宏定义可以无参数 savereg macro push ax push bx push cx push si endm 2 参数可以是操作码 a macro p1, p2,p3 mov ax,p1 p2 p3 endm 调用: a word_ var ,inc,ax 展开: 1 mov ax,word_var 1 inc ax 安徽理工大学 计算机科学与技术系 李敬兆 《汇编语言》第7章