ML - sar上的无效指令操作数,shl(?)

时间:2015-08-20 18:19:49

标签: assembly masm

在汇编代码中的以下指令中获取“错误A2070:无效指令操作数”(从CL生成)

mov edx, DWORD PTR ?_Var2@@3JA      
shl edx, 1326   ;this line gets the error

mov ecx, DWORD PTR ?_Var3@@3JA
shl ecx, 1514   ;this line gets the error

mov ecx, DWORD PTR __Var4$74314[ebp]
sar ecx, 3811   ;this line gets the error       

这里没有发生:

; Line 698
movsx   edx, BYTE PTR ?_Var5@@3PAHA+4
movsx   ecx, BYTE PTR ?_Var6@@3PADA+1
sar edx, cl

也许与shl,sar与常量而不是寄存器一起使用的事实有关? 困惑:(

1 个答案:

答案 0 :(得分:1)

因为edx和其他寄存器的大小为32位,所以将它们移位超过32位是没有意义的。这就是汇编程序发出错误的原因。