MOV dword ptr [402000], 0


    주소값에 직접 접근하는것이아니라

    주소값을 레지스터에 넣은 후 레지스터로 접근한다.


    MOV eax, 402000

    MOV dword ptr[eax], 0


    메모리에 다른 메모리의 주소를 넣는것이 포인터의 개념이다.


    int a = 0;

    int *p = &a;

    *p = 4;


    임의로 a의 주소는 402000, *p의 주소는 402004라고 하자.

    int a = 0을 어셈블리어로 표현하자면

    mov dword ptr[402000], 0


    int *p = &a를 어셈블리어로 표현하자면

    mov dword ptr[402004], 402000


    *p = 4를 어셈블리어로 표현하면

    mov ebx, dword ptr[402004]

    mov dword ptr[ebx], 4


    p 라는 변수에 a의 주소를 저장하고 있다가

    쓸 때는 a의 주소안의 데이터에 간접적으로 접근하는 방식이다.

    메모리간의 정보교환은 직접적으로 이루어지지못하기 때문에

    레지스터를 통하여 정보를 교환하여야한다.


    여기서 dword만 쓴 이유는 int 형은 4바이트, 즉 dword의 크기와 같기 때문에

    4바이트 크기인 dword만 사용했다.

    'Assembly' 카테고리의 다른 글

    11. 조건 분기문  (0) 2017.05.18
    10. 메모리 주소 지정방식  (0) 2017.05.18
    8. ADD, SUB  (0) 2017.05.18
    7. INC, DEC  (0) 2017.05.17
    6. JMP  (0) 2017.05.14
    Posted by Config