IF 伪指令的后面必须跟一个常量布尔表达式。该表达式可以包含整数常量、符号常量或者常量宏实参,但不能包含寄存器或变量名。仅适用于 IF 和 ENDIF 的语法格式如下:
另一种格式则适用于 IF、ELSE 和 ENDIF:
【示例】宏 mGotoxyConst 利用 LT 和 GT 运算符对传递给宏的参数进行范围检查。实参 X 和 Y 必须为常数。还有一个常数符号 ERRS 对发现的错误进行计数。根据 X 的值,可以将 ERRS 设置为 1。根据 Y 的值,可以将 ERRS 加 1。最后,如果 ERRS 大于零,EXITM 伪指令退岀宏:
;-------------------------------------
mGotoxyConst MACRO X:REQ, Y:REQ
;
;将光标位置设置在 X 列 Y 行。
;要求 X 和 Y 的坐标为常量表达式
;其范围为 0 ≤ X < 80, 0 ≤ Y < 25。
;-------------------------------------
LOCAL ERRS ;;门局部常量
ERRS = 0
IF (X LT 0) OR (X GT 79)
ECHO Warning: First argument to mGotoxy (X) is out of range.
ECHO ******************************************************
ERRS = 1
ENDIF
IF (Y LT 0) OR (Y GT 24)
ECHO Warning: Second argument to mGotoxy (Y) is out of range.
ECHO ******************************************************
ERRS = ERRS + 1
ENDIF
IF ERRS GT 0 ;;若发现错误,
EXITM ;;退出宏
ENCIF
push edx
mov dh,Y
mov dl,X
call Gotoxy
pop edx
ENDM