4. 메모리

    RAM (Random Access Memory)

    주 기억 장치, 컴퓨터가 켜져있을 동안 정보를 저장하는 저장공간

    하드보단 훨씬 빠르며 CPU 레지스터보단 느린 저장공간이다.


    RAM에서는 메모리주소를 사용하는데 메모리 주소를 사용하는 이유는

    그 메모리 주소를 찾아가면 원하는 데이터가 존재하기 때문이다.


    250번지 - 1

    100번지 - 3

    10번지 - 90

    9번지 - 2


    이렇게 데이터가 존재한다면 번지, 즉 메모리주소를 불러오면 해당 값을 얻을 수 있다.


    그리고 어셈블리어에서 메모리 주소의 사용법은 '[]' 기호를 사용한다.

    mov [200], 20

    이렇게 표현한다면 200번지에 20을 넣어라라는 명령이되겠다.


    그런데 이 명령어를 실제로 살펴보면 "mov byte ptr[200], 20" 이렇게 표현해야 옳다.

    그럼 byte ptr은 무엇일까?

    byte는 데이터의 크기를 명시해주는 것이고 ptr은 포인터, 즉 주소공간을 나타내는 표시이다.

    200번지의 byte, 즉 1byte(8bit)만큼의 크기에 20을 넣어라 라는 표현이 되겠다.


    데이터 크기

    byte - 1byte(8bit)

    word - 2byte(16bit)

    dword - 4byte(32bit)


    위를 이용하여 mov dword ptr[300], 01AD45FA 이라고 한다면

    300번지의 dword, 즉 4byte만큼의 크기에 01AD45FA를 넣어라는 소리가 된다.


    메모리에서 다른 메모리 주소로 값을 옮기고 싶다면

    레지스터를 이용하여 옮겨야한다. (메모리 -> 메모리에 관한 기계어를 정의하지 않았기 때문)


    메모리1에서 메모리2로 옮기고 싶다면


    mov 레지스터,메모리1

    mov 메모리2, 레지스터

    'Assembly' 카테고리의 다른 글

    6. JMP  (0) 2017.05.14
    5. 메모리에 저장하는 방식  (0) 2017.05.14
    3. 범용 레지스터  (0) 2017.05.12
    2. MOV  (0) 2017.05.12
    1. 어셈블리어 개요  (0) 2017.05.12
    Posted by Config