• 汇编语言IF、ELSE和DENDIF伪指令

    IF 伪指令的后面必须跟一个常量布尔表达式。该表达式可以包含整数常量、符号常量或者常量宏实参,但不能包含寄存器或变量名。仅适用于 IF 和 ENDIF 的语法格式如下:

    IF expression
        statement-list
    ENDIF

    另一种格式则适用于 IF、ELSE 和 ENDIF:

    IF expression
        statement-list
    ELSE
        statement-list
    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

更多...

加载中...