汇编语言IFIDN和IFIDNI伪指令:对两个参数进行比较

IFIDNI 伪指令在两个符号(包括宏参数名)之间进行不区分大小写的比较,如果它们相等,则返回真。IFIDN 伪指令执行的是区分大小写的比较。

如果想要确认宏主调者使用的寄存器参数不会与宏内使用的寄存器发生冲突,那么可以使用这两个伪指令中的前者。IFIDNI 的语法如下:

IFIDNI <symbol>, <symbol>
    statements
ENDIF

IFIDN 的语法与之相同。例如下面的宏 mReadBuf,其第二个参数不能用 EDX,因为当 buffer 的偏移量被送入 EDX 时,原来的值就会被覆盖。

在如下修改过的宏代码中,如果这个条件不满足,就会显示一条警告消息:
;-------------------------------------
mReadBuf MACRO bufferPtr, maxChars
;将键盘输入读到缓冲区。
;接收:缓冲区偏移量,最多可输入字符的数量。第二个参数不能用 edx 或EDX。
;-------------------------------------
    IFIDNI <maxChars>,<EDX>
        ECHO Warning: Second argument to mReadBuf cannot be EDX
        ECHO **************************************************
        EXITM
    ENDIF
    push ecx
    push edx
    mov edx,bufferPtr
    mov ecx,maxChars
    call Readstring
    pop edx
    pop ecx
ENDM
下面的语句将会导致宏产生警告消息,因为 EDX 是其第二个参数:

mReadBuf OFFSET buffer,edx

编程帮,一个分享编程知识的公众号。跟着站长一起学习,每天都有进步。

通俗易懂,深入浅出,一篇文章只讲一个知识点。

文章不深奥,不需要钻研,在公交、在地铁、在厕所都可以阅读,随时随地涨姿势。

文章不涉及代码,不烧脑细胞,人人都可以学习。

当你决定关注「编程帮」,你已然超越了90%的程序员!

编程帮二维码
微信扫描二维码关注