2010-06-07 80 views
1
main proc 
finit 
.while ang < 91 
    invoke func, ang 
    fstp res 
    print real8$(ang), 13, 10 
    print real8$(res), 13, 10 
    fld ang 
    fld1 
    fadd 
    fstp ang 
.endw 
ret 
main endp 

這段MASM代碼有什麼問題?高級宏無法識別 - 初學者MASM

我在.endw上遇到錯誤。我已經進行了一些測試,以確保自己。彙編告訴我invalid instruction operands

謝謝你的時間!

+0

我有一種感覺,問題是在預處理器生成的代碼中 – Andrey 2010-06-07 19:20:23

回答

1

請記住,masm是一種「鍵入」彙編語言。它看起來像ang被定義爲一個真實的。

問題是,「.while」產生一個cmp指令,然後是條件跳轉。 cmp指令從reg或者內存中獲取一些整數值,但肯定不是真實的。因此「無效指令操作數」錯誤。

這種情況發生在.endw中的原因很可能是因爲.while/.endw構造在循環的底部而不是在開始時生成了它的測試。