Microsoft汇编程序,为什么PTR不能与寄存器一起使用(无效使用寄存器)

时间:2018-10-09 20:07:44

标签: assembly x86 masm

为什么下面的代码不起作用,我想将eax的前2个字节移到可变字中

.data

variable word ? 

.code

mov eax, 010203040h 

mov variable, word ptr eax

1 个答案:

答案 0 :(得分:1)

寄存器的大小是固定的,您只能在内存操作数上使用大小说明符。

使用子寄存器的名称来读取或写入其一部分,例如AX或AL而不是EAX。

 mov [variable], ax

 mov word ptr [variable], ax

如果要显式表示,或者未将变量声明为word ptr,则只需要使用word的第二种形式,并且需要重写MASM的操作数大小检查以检查内存操作数。

(方括号是可选的,但通常建议强调它是内存操作数。)