1
我遇到了一個非常簡單的問題,(我認爲)... 這裏是我的代碼:ASM 86 - 左移
mov eax, 0b
mov bl, 0b
mov dl, BYTE PTR[esp + 4 + 3]
LOOP1:
mov cl, dl// byte 1
shl cl, bl
當我打電話SHL我得到一個不正確的操作數類型...我究竟做錯了什麼?
我遇到了一個非常簡單的問題,(我認爲)... 這裏是我的代碼:ASM 86 - 左移
mov eax, 0b
mov bl, 0b
mov dl, BYTE PTR[esp + 4 + 3]
LOOP1:
mov cl, dl// byte 1
shl cl, bl
當我打電話SHL我得到一個不正確的操作數類型...我究竟做錯了什麼?
SHL運算符只允許移位1或CL寄存器的內容移位。
也許你打算:
SHL BL, CL
到BL寄存器由量轉向CL。
如果在文件頂部指定.286,則可以在不使用CL寄存器的情況下移位大於1。 CL限制是一個8086限制,如果沒有其他指定,這是默認限制。 –
嗯,我寫的彙編代碼包含了一些非單位常量轉換。想知道爲什麼當我寫出答案時我不記得這一點。感謝您的更正! –