레지스터 (Register)
• 레지스터란?
- CPU 내부에 존재하는 다목적 저장 공간이다.
- 소규모 데이터 기억장치이다.(산술/연산 가능)
- 일반 메모리보다 빠른 속도를 가진다.
- AX 레지스터
입출력과 대부분의 산술, 논리 연산에 사용되며, 함수의 반환값이 AX 레지스터에 저장된다.
- BX 레지스터
메모리 주소를 저장하기 위한 용도로 사용된다.
- CX 레지스터
반복 명령어 사용 시 반복 횟수로 사용되는 레지스터이다.
- DX 레지스터
AX 레지스터와 같이 쓰이고 부호 확장 명령 등에 쓰이며 산술/논리 연산 보조 역할을 한다.
- 포인터 레지스터 (메모리 스택 영역과 관련된 주소 값을 나타낸다)
ESP(Stack Pointer) : 스택 영역의 최상단을 가리킨다.
EBP(Base Pointer) : 스택 영역의 기준이 되는 주소를 가리킨다.
- 인덱스 레지스터 (문자열을 복사/비교와 관련된다)
ESI(Source Index) : 복사/비교의 대상의 주소를 가리킨다.
EDI(Destination Index) : 복사/비교를 할 곳의 주소를 가리킨다.
- 명령어 레지스터
EIP(Instruction Pointer) : 다음 실행할 명령이 들어 있는 메모리의 주소를 가리킨다.
- 세그먼트 레지스터 (다양한 크기로 구분을 하는 목적으로 사용되며 16bit로 구성된다)
CS : 함수와 제어문 같은 명령어들이 저장되는 코드 세그먼트이다.
DS : 전역, 정적 변수 데이터가 들어있는 데이터 세그먼트이다.
SS : 주소와 데이터를 일시적으로 저장할 목적으로 쓰이는 스택의 주소를 지정하는 데 사용된다.
ES : 추가 레지스터로 문자 데이터의 주소를 지정하는데 사용된다.
- 플래그 레지스터 (실행 순서를 제어하기 위한 목적으로 사용된다)
ZF : 산술이나 비교 연산의 결과를 나타낸다.
CF : 산술 연산 후 상위 비트의 캐리를 포함한다.(자리이동 또는 회전연산 후 마지막의 비트내용을 포함)