为什么下面的代码不起作用,我想将eax的前2个字节移到可变字中
.data
variable word ?
.code
mov eax, 010203040h
mov variable, word ptr eax
答案 0 :(得分:1)
寄存器的大小是固定的,您只能在内存操作数上使用大小说明符。
使用子寄存器的名称来读取或写入其一部分,例如AX或AL而不是EAX。
mov [variable], ax
mov word ptr [variable], ax
如果要显式表示,或者未将变量声明为word ptr
,则只需要使用word
的第二种形式,并且需要重写MASM的操作数大小检查以检查内存操作数。
(方括号是可选的,但通常建议强调它是内存操作数。)