2012-04-20 4 views
1

は私がASMで次のことを達成しようとしている:メモリ - 正しい構文

mov [00A30020], [ebx+50]

だから、私は00A30020にebx+50の値をmovしたいのですが、コンパイラは無効だと言いますステートメント。

+0

を、あなたがしたいですかebxの値に50を加え、それをメモリアドレス00A30020に格納しますか? –

+0

mov命令の前に、add命令[add [ebx + 50]、edx']があります。私は[ebx + 50]の値を欲しいので、私は 'mov [00A30020]、[ebx + 50]' – Drahcir

答えて

7

メモリにメモリ移動(movで、文字列を移動するにもあります)のようなものはありません。 this tableを参照してください。

あなたは一時レジスタにロードし、それを保存することができます:

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

または非効率的であることのコストで余分なレジスタを使用しないようにする:明確にするために

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

を試しています.3番目のオプションはmovsを使うことですが、あまり効果的ではありません。 –

+0

@コピー:ありがとう、完璧に動作します – Drahcir

+0

@JensBjörnhagerright、私はそれを明確にしました – copy