본문
No. 05 |
Assembly |
# 8086 CPU와 메모리 |
요리를 하기 위해서는 우선 재료를 도마위에 올려서 다듬어야 할 필요가 있습니다.
그리고 프로그램이 동작하기 위해서는 메모리라는 도마에 프로그램을 올릴 필요가 있습니다.
도마의 크기에 알맞은 양의 재료를 올리고 다듬어야 하듯, 메모리의 크기를 알고
프로그램이 어떻게 할당되는지 알 필요가 있습니다.
※ 메모리의 단위 |
" 우리가 평소 사용하는 컴퓨터에서 자주 사용하는 크기의 단위는 킬로바이트(KB),
메가바이트(MB) 입니다. 이처럼 컴퓨터에서 기본이 되는 단위는 바이트(Byte) 입니다."
명령어와 데이터 등은 여러 이유로 인해 8bit = 1 byte 단위로 구성되어 있습니다.
따라서 기본적으로 메모리의 기본단위 또한 바이트(byte)가 됩니다.
각 바이트는 주소(address) 라 불리는 '해당 바이트가 메모리에서 어느 위치에 있는가' 를
말해주는 고유의 값을 가지고 있습니다.
※ 8086 메모리 특징 |
앞서 공부한 CPU 세대별 특징에서 8086의 특징을 기억해 봅시다.
1. 16bit 프로세서
- CPU 가 한번에 최대로 가질 수 있는 데이터의 양이 16bit 라는 뜻.
- 이는 CPU 레지스터의 크기가 16bit 라는 의미 입니다.
- 따라서 2의 16 승 = 64K 의 값 까지 사용 할 수 있습니다.
- 이는 곧 메모리 주소를 64KB 까지 할당 받을 수 있다는 의미가 됩니다.
2. 20bit 어드레스 버스 이용
- 20개의 bit 를 사용하여 주소를 할당하겠다.
- 따라서 2의 20승 = 1024K 의 주소까지 할당 가능하므로
- 00000 부터 FFFFF 에 해당하는 주소값을 사용 할 수 있다는 의미입니다.
- 최대1024KB = 1MB 의 주소값을 가질 수 있는 메모리를 지원 할 수 있다.
- 하지만 CPU 가 레지스터를 이용하여 가질 수 있는 메모리 주소값은 최대 64KB 이다.
이러한 문제를 해결하기 위해서 세그먼트와 오프셋의 개념이 도입 됩니다.
3. 세그먼트 : 오프셋 방식 도입
- 위의 문제를 해결하고자 2개의 16bit 레지스터를 이용하는 방식입니다.
- 주소값이 2의 20승(= 1 MB) 까지 할당 가능하지만 하나의 레지스터의 최대 크기는
2의 16승(= 64KB) 로는 부족하므로 이를 16bit 레지스터 2개를 사용함으로 해결하였다.
- 이때 세그먼트, 오프셋 라는 개념을 사용하게 됩니다.
다음 장에서 세그먼트와 오프셋을 알아보고 메모리 지정방식을 공부해 봅시다.
▶ 본 글이 조금이도 도움이 됐다면 더 많은 사람들이 볼 수 있게
▶ '로그인이 필요없는' 공감 ♡ 버튼을 눌러주세요.
'Programming > Assembly' 카테고리의 다른 글
[Assembly - No.07] 8086 메모리 지정방식 (2) | 2012.05.16 |
---|---|
[Assembly - No.06] 세그먼트와 오프셋 (1) | 2012.05.16 |
[Assembly - No.05] 8086 CPU와 메모리 (0) | 2012.05.16 |
[Assembly - No.04] CPU 세대별 특징 (1) | 2012.05.16 |
[Assembly - No.03] 어셈블리 언어와 CPU (0) | 2012.05.16 |
[Assembly - No.02] 어셈블리 언어에 대해서 (0) | 2012.05.16 |