宏定义
定义格式
宏指令名 macro 形式参数 [, 形式参数]
宏体
endm
注意事项
- 先定义后使用
- macro与endm成对使用
使用举例
- 定义一个宏用于在控制台中显示以 $ 结束的字符串
write_string macro A
lea dx, A
mov ah, 9
int 21h
endm
- 在屏幕上显示回车换行
RCLF db 0dh, 0ah, '$'
:
write_string RCLF
:
; 输出回车换行
CRLF MACRO
mov ah, 2
mov dl, 0ah
int 21h
mov dl, 0dh
int 21h
ENDM
宏定义与宏调用中的参数
带有间隔符的实参
- 如定义堆栈段的宏定义
def_stack macro A
stack segment use16 stack
db A
stack ends
endm
def_stack <100 dup(0)>
宏库的使用
可以将宏全部放入一个文件中, 使用include 文件名 将指定的宏库加入到程序中一起汇编
包含常用调用的宏库:
; 9号系统功能调用, 在屏幕上显示以 $ 结束的字符串
WRITE MACRO A
lea dx, A
mov ah, 9
int 21h
ENDM
; 10号功能调用, 从键盘中读取字符串,存入A的缓冲区
READ MACRO A
lea dx, A
mov ah, 9
int 21h
ENDM
; 输出回车换行
CRLF MACRO
mov ah, 2
mov dl, 0ah
int 21h
mov dl, 0dh
int 21h
ENDM
;定义堆栈段
STACK0 MACRO A
stack segment use16 para stack 'stack'
db A
stack ends
ENDM