레지스터 종류와 용도

2022. 3. 23. 20:45Embedded

레지스터의 종류로는 크게 범용,포인터,인덱스,플레그,세그먼트 5가지로 분류 된다.

 

범용레지스터

AX (AH,AL) - Accmulator, 산술, 논리 연산, 하위 바이트용 레지스터 I/O 포트와의 출력 명령

BX (BH,BL) - Base, 간접 주소 지정 시 베이스 주소를 가리키는 용도

CX (CH,CL) - Count, 스트링이나 루프에서 반복수를 세는 레지스터

DX (DH,DL) - 간접 주소에 의한 입출력 주소 지정에 사용되며 곱셈, 나눗셈에서의 상위 워드용 데이타 레지스터로

보조 어큐뮬레이터이다.

 

포인터 레지스터

SP - Stack pointer, 스택 조작을 위해서 사용하는 레지스터로서 프로그램 실행 중에 데이타의 저장 주소를 기억 하고 있는 레지스터이다.

BP - Base pointer, 기본적으로 스택 영역 내의 주소를 지시하지만 스택 세그먼트 SS영역내에 배치한 데이타에 대한 베이스 주소를 저장해 두기 위해 사용된다.

 

명령 포인터

IP - Instruction pointer, 현재의 PC 레지스터와 대응되는 것으로 다음에 실행될 명령어의 주소를 갖는다.

인덱스 레지스터

SI - Source index, 연산항 소스, 소스 데이타 지정에 사용된다.

DI - Destinaiton index, 연산항의 처리 대상, 또는 목적항 데이타를 나타내는데 사용된다.

 

세그먼트 레지스터

CS - Code segment, 프로그램 명령 코드를 포함

DS - Data segment, 프로그램을 위한 데이타를 저장

SS - Stack segment, 인터럽트와 서브루틴의 반환 주소를 저장하는데 사용

ES - Extra segment, 여분의 데이타 세그먼트이며, 주로 스트링(string)명령을 수행할 때 사용

 

레지스터의 특성

 

직접 엑세스 가능한 레지스터

범용 레지스터

AX, BX, CX, DX

AH, BH, CH, DH

AL, BL, CL, DL

인덱스

SI, DI

세그먼트

DS, ES, SS

포인터

BP, SP

 

직접 수정이 가능한 플래그

CF, DF, IF

 

이 이외에도 확장형 레지스터인

EAX,EBX,EDX, 등 원래 있던 레지스터에 대부분 E를 붙여 주면 되며

이들의 기능은 본래 16bit의 크기를 가지던 레지스터는 0bit에서 16bit로 넘어가며 그 이상의 수는

못쓰기 마련인데 비해 확장형은 16bit부터 시작하여서 순차적으로 써내린다.

 

반응형