본문 바로가기
기타/달고나 문서

8086 CPU 레지스터 구조

by laoching 2015. 2. 27.
728x90
반응형

CPU가 프로세스를 실행하기 위해서는 프로세스를 CPU에 적재시켜야 할 것이다.

그리고 흩어져 있는 명령어집합과 데이터들을 적절하게 집어내고 읽고 저장하기 위해서는 여러가지 저장 공간이 필요하다.

또 CPU가 재빨리 읽고 쓰기를 해야 하는 데이터들이므로 CPU 내부에 존재하는 메모리를 사용한다.

그 공간을 레지스터(Register)라고 한다.

<일반적인 시스템의 프로그램 레지스터의 구조>


레지스터는 목적에따라 분류가 나뉜다.

범용 레지스터 : 논리 연산, 수리 연산에 사용되는 피연산자, 주소를 계산하는데 사용되는 피연산자, 그리고 메모리 포인터가 저장되는 레지스터다.

세그먼트 레지스터 : code segment, data segment, stack segment를 가르키는 주소가 들어가 있는 레지스터다.

플래그 레지스터 : 프로그램의 현재 상태나 조전등을 검사하는데 사용되는 플래그들이 있는 레지스터다.

인스트럭션 포인터 : 다음 수행해야 하는 명령(instruction)이 있는 메모리 상의 주소가 들어가 있는 레지스터다.



[범용 레지스터]

범용 레지스터는 프로그래머가 임의로 조작할 수 있게 허용되어 있는 레지스터다.

일종의 4개의 32bit 변수라고 생각하면 된다.

예전의 16bit를 사용할 때는 각 레지스터를 AX, BX, CX, ... 등으로 불렀지만

32bit 시스템으로 전환되면서 E(Extended)가 붙어 EAX 등으로 불린다.

AX 레지스터의 상위 부분을 AH라고 하고 하위 부분을 AL이라고 한다.


[범용 레지스터 - 각 레지스터의 목적]

EAX - 피연산자와 연산 결과의 저장소

EBX - DS segment안의 데이터를 가리키는 포인터

ECX - 문자열 처리나 루프를 위한 카운터

EDX - I/O 포인터

ESI - DS 레지스터가 가리키는 data segment 내의 어느 데이터를 가리키고 있는 포인터.

   문자열 처리에서 source를 가리킴

EDI - ES 레지스터가 가리키고 있는 data segment 내의 어느 데이터를 가리키고 있는 포인   터. 문자열 처리에서 destination을 가리킴

ESP - SS 레지스터가 가리키는 stack segment의 맨 꼭대기를 가리키는 포인터

EBP - SS 레지스터가 가리키는 스택상의 한 데이터를 가리키는 포인터.


[세그먼트 레지스터]

728x90
반응형

'기타 > 달고나 문서' 카테고리의 다른 글

8086 Memory Architecture & 8086 CPU 레지스터 구조  (0) 2015.02.19

댓글