我可以将mov
与间接操作数一起用作源和目标吗?
E.g。
mov eax, OFFSET foo
mov esi, OFFSET bar
mov [eax],[esi + LENGTHOF bar]
根据我的尝试,我猜你不能因为invalid instruction operand
错误。但是我没有在任何明确表示你不能阅读的地方阅读,所以我想确保它不是由于其他一些错误。
答案 0 :(得分:2)
x86 mov
指令不支持内存到内存的移动。
查看Volume 2: Instruction Set Reference,即MOV
指令。有reg <- reg
,mem <- reg
和reg <- mem
表单,但没有mem <- mem
。
要将数据从内存移动到内存,必须使用中间寄存器或movs
指令,该指令将值从地址DS:ESI
移动到ES:EDI
。这就是这些寄存器被命名的原因(源索引和目标索引)。