Microsoft Assembler,为什么 PTR 不适用于寄存器(寄存器的使用无效)

Microsoft Assembler, Why PTR doesn't work with registers (invalid use of register)

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

.data

variable word ? 

.code

mov eax, 010203040h 

mov variable, word ptr eax

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

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

 mov [variable], ax

 mov word ptr [variable], ax

如果你想要显式,或者如果变量没有被声明为 word 并且你需要覆盖 MASM 的内存操作数大小检查,你只需要带有 word ptr 的第二种形式操作数。

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