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
的第二种形式操作数。
(方括号是可选的,但通常建议强调它是一个内存操作数。)
为什么下面的代码不起作用,我想把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
的第二种形式操作数。
(方括号是可选的,但通常建议强调它是一个内存操作数。)