: 명령어를 실행하기 위해 필요한 데이터와 상태, 명령어를 저장하는 기억 소자
: CPU 내부에 존재하며, 기억 장치 중 가장 빠르며 용량이 작음
: 데이터 레지스터와 제어용 레지스터로 구분
: CPU가 명령어를 처리하는 과정에서 임시로 처리할 데이터를 저장하거나 메모리의 주소를 저장할 목적으로 사용
: 데이터 레지스터(Data Register), 주소 레지스터(Address Register), 범용 레지스터(General Register)로 구분
(1) 스택 포인터(SP, Stack Pointer)
: CPU는 현재 실행하고 있는 프로그램의 메모리 영역을 스택으로 관리
: SP는 현재 스택 영역에서 가장 마지막 부분(가장 최근에 저장된)을 가르킴
(2) 베이스 포인터(BP, Base Potiner)
: BP는 스택 영역에서 각 메모리 영역의 경계선을 가르킴
: 즉, 서브루틴 호출 시에 Caller의 SP는 BP가 됨
: 서브루틴의 실행이 완료되면 BP는 다시 SP가 됨
(3) 인덱스 레지스터(IX, Index Register)
: 배열에 순차적으로 접근하기 위한 레지스터
: CPU가 프로그램의 실행 흐름을 제어하거나 상태를 저장하기 위해 사용되는 레지스터
: 다음에 실행할 명령어의 주소 저장
: 현재 실행중인 명령어 저장
: 액세스할 메모리의 주소 저장
: 주소 버스에 연결
: 메모리에 접근 시에 해당 주소에 저장/적재할 데이터를 임시 저장
: 데이터 버스에 연결
: 조건 혹은 이벤트를 검사해 프로그램의 흐름을 제어
: 각 비트에 플래그 값을 가짐
(1) 조건 플래그(Conditional Flags)
: 연산 결과를 나타냄
- 부호 플래그(S)
: 산술 연산 결과의 부호비트 저장- 제로 플래그(Z)
: 연산 결과가 0인지 표시- 자리 올림수 플래그(C)
: 자리 올림수 발생 시 표시- 패리티 비트(P)
: 패리티 체크를 통해 연산 결과의 유효성 체크- 오버플로우(OV)
: 오버플로우 발생 여부
(2) 제어 플래그(Control Flags)
: CPU를 제어하기 위한 것
- 인터럽트 플래그(IE)
: CPU가 외부 인터럽트의 요청을 수락할지에 대한 여부- 관리자 모드 플래그(SV)
: 해당 명령어가 관리자 모드에서 실행되고 있는지에 대한 여부