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

을 시도하고있다. 세 번째 옵션은 movs를 사용하는 것이지만 그다지 효과적이지는 않다. –

+0

@copy : 감사합니다. 완벽하게 작동합니다. – Drahcir

+0

@ JensBjörnhager 오른쪽. – copy