汇编宏检查参数

时间:2015-05-29 12:13:51

标签: assembly macros

好吧,装配中出现了一个奇怪的新问题(特别是tasm)

CheckInfo MACRO arr:REQ, length:REQ, arr_type := <l>
    mov bx, arr
    mov cl, length
    mov si, 1
    IF arr_type eq <x>
        inc si
    ENDIF
    mov a&arr_type, [bx]
ENDM

只想检查arr_type是否等于x。如果是,则添加到值为1.否则。但是当我尝试尝试它时,它会抛出一个错误

Illegal forward reference: L
Undefind symbol: L

但为什么呢?我只是想检查两个值是否等于char char或不是

1 个答案:

答案 0 :(得分:1)

IF arr_type eq <x>最终会扩展为IF l req <x>,在此上下文中l是一个符号。如果要将它们作为字符进行比较,则需要使用字符串并将arr_type替换为字符串:

IF "&arr_type" EQ "x"

请注意,这实际上并不是逐字符比较。 EQ运算符比较无符号整数,因此字符串将转换为整数然后进行比较。