2012-11-19 57 views
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我得到一個不正確的操作數類型...我究竟做錯了什麼?

回答

4

SHL運算符只允許移位1或CL寄存器的內容移位。

也許你打算:

SHL BL, CL 

到BL寄存器由量轉向CL。

+0

如果在文件頂部指定.286,則可以在不使用CL寄存器的情況下移位大於1。 CL限制是一個8086限制,如果沒有其他指定,這是默認限制。 –

+0

嗯,我寫的彙編代碼包含了一些非單位常量轉換。想知道爲什麼當我寫出答案時我不記得這一點。感謝您的更正! –