8086 계열 기본 레지스터
레지스터란?
- 데이터 저장, 연산 등을 위한 임시 기억장치
- 각 레지스터는 자체의 특수한 용도와 제한점이 있다
- 장점: 메모리보다 엑세스 속도가 빠르다
- 단점: 개수가 한정되어 있고, 용도가 제한적이다.
종류
- 범용 레지스터: 8개
- 세그먼트 레지스터: 4개
- 프로세스 컨트롤 레지스터: 2개
범용 레지스터의 AH와 AL레지스터를 합쳐서 AX라고 부를 수 있다. B, C, D 모두 마찬가지다
기능
- 범용 레지스터: 사칙연산과 메모리 주소 지정
- AX 레지스터
- 입출력, 거의 모든 산술연산에 사용
- 곱셈, 나눗셈, 변환 명령에서 반드시 사용
- BX 레지스터
- 주소 지정을 확대하기 위해 index로 사용
- 일반적인 계산에 사용
- CX 레지스터
- 루프의 반복 횟수, 쉬프트 비트 수를 기억
- 일반적인 계산에 사용
- DX 레지스터
- 몇몇 입출력 동작에서 반드시 사용
- 큰 수의 곱셈과 나눗셈에는 DX와 AX를 쌍으로 사용
- SP, BP 레지스터
- SI, DI, 레지스터
- 세그먼트 레지스터
- CPU가 명령을 Fetch할 때: CS:IP로부터 명령을 Fetch
- 데이터 전송: DS:offset address
- 스택 동작: SS:SP
- 프로세스 컨트롤 레지스터
- IP (Instruction Pointer)
- 다음에 실행할 명령어의 번지를 가리키는 레지스터
- FL (Flag Register)
- CPU의 현재 상태 표시
- 비교, 연산 결과를 보존
주소 지정
- 8086 프로세서는 1MB까지의 메모리를 취급 (00000H ~ FFFFFH)
- 주소 데이터로 20bit 필요
- 8086의 레지스터는 16bit 크기 뿐이므로 2개의 레지스터를 조합하여 사용
ex) 세그먼트와 오프셋 주소를 다음과 같이 가정하면, 세그먼트 주소의 맨 뒤에 0을 하나 붙인후 오프셋 주소와 더한다.
segment address = 1000H
offset address = 1234H
effective address = 10000H + 1234H = 11234H