我真的很困惑这件事。我正在关注x86处理器的书籍汇编编程,我正在阅读关于mov指令及其工作原理。因此,作者说以下说明是有效的 mov mem,reg .....基本上将寄存器值移动到存储器地址。
现在这是我试过的,我不断得到这个错误称为无效操作数。有人可以解释一下究竟是什么错误。
#fasm#
mov ax,[var] ;the value 67 is moved to the ax register works perfect
mov myvar,ax ; my aim is to move the value 67 to the memory location of ;myvar but then i keep getting this error - Invalid operand? why is that?
var: dw 67
myvar: dw ?
答案 0 :(得分:2)
你可以试试这个:
mov [myvar], ax
myvar
是一个常量,包含为变量分配的内存地址。[myvar]
指示在myvar
指向的地址的内存中获取/存储值所以:
mov ax, myvar ; load the address of myvar in ax
mov ax, [myvar]; load the value stored at address myvar
mov [myvar], ax; store the value of ax at address myvar