你可以使用带有间接操作数的mov作为源和目标吗?

时间:2014-02-16 21:51:47

标签: assembly x86 masm cpu-registers

我可以将mov与间接操作数一起用作源和目标吗?

E.g。

mov eax, OFFSET foo
mov esi, OFFSET bar
mov [eax],[esi + LENGTHOF bar]

根据我的尝试,我猜你不能因为invalid instruction operand错误。但是我没有在任何明确表示你不能阅读的地方阅读,所以我想确保它不是由于其他一些错误。

1 个答案:

答案 0 :(得分:2)

x86 mov指令不支持内存到内存的移动。

查看Volume 2: Instruction Set Reference,即MOV指令。有reg <- regmem <- regreg <- mem表单,但没有mem <- mem

要将数据从内存移动到内存,必须使用中间寄存器或movs指令,该指令将值从地址DS:ESI移动到ES:EDI。这就是这些寄存器被命名的原因(源索引和目标索引)。