레지스터(Register)
- 실행 중인 명령어를 제어하고, 메모리 번지를 지정하고, 산술연산을 수행
- 각각의 고유한 이름이 있고 이를 통하여 레지스터를 참조
◆ 세그먼트 레지스터(Segment register)
: 현재 세그먼트(current segment)인 메모리의 한 영역을 번지지정
1) CS(Code Segment)
- DOS의 프로그램 코드 세그먼트의 시작 번지를 저장
- 이 번지에 명령어 포인터(instruction pointer, IP) 레지스터 내의 옵션 값을 더하면 실행을 위한 명령어의 번지가 된다.
2) DS(Data Segment)
- 프로그램의 데이터 세그먼트 레지스터의 시작 번지를 기억
3) SS(Stack Segment)
- 번지와 데이터를 임시로 저장할 목적으로 쓰이는 스택을 메모리에 구현할 목적
- 스택 포인터 레지스터의 오프셋 값을 더하면 스택 내의 현재 워드를 가리키는 번지
4) ES(Extra Segment)
- 스트링 조작 명령어 중에서 메모리를 번지지정하기 위해 본 레지스터를 사용할 때가 있다.
- DI 레지스터와 연관
5) FS, GS 레지스터
◆ 명령어 포인터 레지스터(Instruction pointer register = IP)
: 실행될 다음 명령어의 오프셋 번지를 기억
예)
CS 레지스터 내의 세그먼트 번지 : 25A40H
IP 레지스터 내의 오프셋 번지 : + 412H
다음 명령의 번지 ----> 25E52H
◆ 포인터 레지스터(Pointer register)
: SP(Stack pointer)와 BP(Base pointer)
: SS 레지스터와 결부
1) SP
- 스택 내의 현재 워드를 참조할 오프셋 값을 기억
- 80386 이후의 프로세서는 확장 스택 포인터(ESP)
- 시스템에서 레지스터를 자동적으로 사용
2) BP
- 스택에 들어오고 나가는 데이터나 번지를 참조하는 데 사용
- 80386 이후의 프로세서는 확장 스택 포인터(EBP)
◆ 범용 레지스터(General purpose register)
: AX, BX, CX, DX(AX = AH:AL로 구성)
: EAX, EBX, ECX, EDX(80386 이후의 프로세서의 32비트 확장)
1) AX
- 누산기(Accumulator)
- 산술연산, 입출력, translate 명령어 사용
2) BX
- '인덱스'로서 사용할 수 있는 범용 레지스터
- Base register
3) CX
- Counter register
- Loop의 반복 횟수나 좌우 방향으로 비트를 쉬프트할 숫자를 기억
4) DX
- Data register
- 입출력(input/output) 명령어에 사용
- 큰 수의 곱셈 및 나눗셈에서는 DX:AX를 쌍으로 사용
◆ 인덱스 레지스터(Index register)
: 인덱스 번지지정(indexed addressing), 덧셈 및 뺄셈에 사용
1) SI(Source Index)
- 스트링 조작에 사용
- DS 레지스터와 연관
2) DI(Destination Index)
- 스트링 조작에 사용
- ES 레지스터와 연관
이 글은 스프링노트에서 작성되었습니다.
'Study' 카테고리의 다른 글
NFS Mount (0) | 2008.12.02 |
---|---|
nfs 설정 등.. (0) | 2008.12.02 |
[OS 만들기] real mode, protected mode (0) | 2008.11.27 |
리눅스 부팅과정 (0) | 2008.11.27 |
Linux 명령어 (0) | 2008.11.27 |