2012-04-20 35 views
1

我试图实现与ASM如下:内存到内存MOV - 正确的语法

mov [00A30020], [ebx+50]

所以,我想的ebx+50mov为00A30020,但是编译器说,这是一个无效的声明。

+0

为了澄清,你想添加50到ebx的值并将其存储到内存地址00A30020? – 2012-04-20 15:57:19

+0

在mov指令之前,有一条add指令'add [ebx + 50],edx'。我想要[ebx + 50]中的值,所以我想'mov [00A30020],[ebx + 50]' – Drahcir 2012-04-20 15:58:54

回答

7

有没有这样的事,作为一个内存内存移动(与mov,也有移动字符串)。请参阅this table

你可以加载到一个临时寄存器,然后存储它:

mov eax, [ebx+50] 
mov [00A30020], eax 

或避免使用任何额外的寄存器,由于它是低效率的成本:

push dword [ebx+50] 
pop dword [00A30020] 
+0

第三种选择是使用movs,但不是很有效。 – 2012-04-20 16:06:36

+0

@copy:谢谢,完美的工作 – Drahcir 2012-04-20 16:10:17

+0

@JensBjörnhager对,我刚刚澄清说 – copy 2012-04-20 16:11:44