宏用 macro 定义,前跟宏名,后跟可选参数,调用时用宏名加参数,参数个数不必相同,只要展开正确即可。
编译时,系统自动将宏展开并插入调用处,
Macro1 MACRO opr1,opr2,result
PUSH DX PUSH AX PUSH AX, opr1 IMUL opr2 MOV result, AX POP AX POP DX ENDM |
Macro1 CX, FAR, XYZ[BX]
Macro1 240, BX, SAVE |
参数与字符结合,需用 & 连接,字符串内有效。
LEAP MACRO cond,lab
J&cond lab ENDM LEAP Z, THERE '展开后调用语句是 JZ, THERE |
定义宏后,若宏与操作符相同,宏的优先级高。
PURGE Macro1[, Macro2 ...] |
固定次数的重复汇编
X = 0
REPT 10 X = X + 1 DB X END M ' 上述汇编的功效相当于:DB 1,2,3,4,5,6,7,8,9,10 |
CHAR = 'A'
Table LABEL BYTE REPT 26 DB CHAR CHAR = CHAR + 1 ENDM ' 上述汇编相当于:DB 'A','B', ... , 'Z' |
相对可变次数的重复汇编
IRP X, <1,2,3,4,5,6,7,8,9,10>
DB X ENDM |
用字符串的重复汇编
IRPC X,0 1 2 3 4 5 6 7 8 9 10
DB X+1 ENDM |
IRPC K,A B C D
PUSH K&X ENDM ' 此代码相当于 PUSH AX PUSH BX PUSH CX PUSH DX |
当满足一定条件,将编译一段语句,否则编译另一段语句
关键字 表达式
... ELSE ... ENDIF |
关键字 表达式 | 意义 |
IF expression | 表达式值不为 0 |
IFE expression | 表达式值为 0 |
IFDEF symbol | 定义过某符号 |
IFNDEF symbol | 未定义过某符号 |
IFB <argument> | 自变量为空 |
IFNB <argument> | 自变量不为空 |
IFIDN <arg-1>,<arg-2> | 字符串相同 |
IFDIF <arg-1>,<arg-2> | 字符串不同 |