0
正如我所说的:为什么这些代码是错误:指令操作数必须是相同的大小
这些代码:
mov EBX, 0
mov EBX, ofn.nFileOffset
add EAX, EBX ;; error
得到错误:指令操作数必须是相同的大小。
但是,当我编辑:
mov EBX, 0
mov BX, ofn.nFileOffset
add EAX, EBX
这没关系。 我也测试Ollydbg跟踪注册,但我没有看到任何不同。
任何人都可以解释
添加eax,ebx不在错误所在的位置,而是位于其上方的行。 ofn.nFileOffset是2个字节(字),这就是为什么你可以将它移动到bx中,移动到ebx中,将mov变为movzx – Gunner
啊,它是MASM的奇怪语法......不要使用它。 :) – johnfound
'xor ebx,ebx'相当于'mov ebx,0'并保存三个字节。清除寄存器时使用第一种形式。 –