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 |