2015-05-29 100 views
2

好,組裝內發生了一種奇怪的問題(特別是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。如果是,那麼將si的值加1。但是,當我嘗試貶低它,然後它會拋出一個錯誤

Illegal forward reference: L 
Undefind symbol: L 

但是爲什麼?我只是想檢查兩個值是否相等燒焦成炭或不

+0

奇怪:在EMU8086編譯好,但TASM抱怨,嗯... –

回答

1

IF arr_type eq <x>最終被擴大到IF l req <x>在這方面l是一種象徵。如果你想爲字符,你需要使用字符串並替換arr_type成一個字符串對它們進行比較:

IF "&arr_type" EQ "x" 

請注意,這不是實際的字符比較字符。 EQ運算符比較無符號整數,因此將字符串轉換爲整數並進行比較。