제이 및 상태 레지스터(control and status register)는 프로그램 실행 과정에서 CPU 내부적으로 사용되는 대표 레지스터다.
프로그램 카운터(program counter) : 주기억장치에 저장된 다음에 인출할 명령어의 주소를 가지고 있다.
명령어 레지스터(instruction register) : 가장 최근에 주기억장치인 RAM에서 인출한 명령어를 저장하고 있다.
기억장치 주소 레지스터(memory address register) : 액세스할 기억장치의 주소가 저장되며 이 레지스터의 출력이 주소 버스와 직접 연결된다.
기억장치 버퍼 레지스터(memory buffer register) : 기억장치에 쓰일 데이터 혹은 가장 최근에 읽은 데이터가 저장된다. 이 레지스터는 데이터 버스와 직접 연결된다.
입출력 주소 레지스터(I/O AR:I/O Address Register) : 입출력장치의 주소를 저장한다.
입출력 버퍼 레지스터(I/O BR:I/O Buffer Register) : 입출력 모듈과 CPU 사이에 교환되는 데이터를 일시적으로 저장한다.
프로그램 상태 단어(program status word) : 조건 코드와 마찬가지로 제어 및 상태 레지스터에서 저장된 데이터의 상태와 조건을 나타내기 위하여 추가된 조건 코드 비트다.
부호 비트 : 해당 레지스터 내에서 데이터의 부호를 표시한다.
영 비트 : 레지스터가 0이라는 것을 표시한다.
올림수(carry) 비트 : 해당 레지스터에서 자리 올림이 발생했다는 것을 표시한다.
동등(equal) 비트 : 비교 대상과 해당 레지스터가 동일한 상태임을 표시한다.
오버플로우(overflow) 비트 : 해당 레지스터의 오버플로우 상태를 표시한다.
인터럽트 가능/불가능(interrupt enable/disable) 비트 : 안터럽트 가능 여부를 표시한다.
디렉션(direction) 비트 : 문자열 조작에서 참일 경우 주소 레지스터 값이 자동으로 감소하고, 거짓일 경우 자동으로 증가한다.
트랩(trap) 비트 : 참일 경우 한 명령을 실행할 때마다 인터럽트가 발생한다. 디버깅에 사용된다.
보조 올림수(auxiliary carry) 비트 : 연산 결과 하위 니블(4비트)에서 비트 범위를 넘었을 때 참이 된다. 2진화 10진법(BCD) 연산에 사용하는 비트다.
패리티(parity) 비트 : 연산 결과에서 1의 값을 갖는 비트의 수가 짝수일 경우 참이 된다.
슈퍼바이저(supervisor) 비트 : CPU가 슈퍼바이저 모드 혹은 사용자 모드에서 실행 중인지를 나타내는 비트다. 특권 명령어(privileged instruction)의 실행 및 기억장치의 특성 부분의 액세스가 이 모드에서만 가능하다는 것을 나타낸다.
[ 그림 6-6 ] 은 8086 프로세서의 상태 레지스터를 나타낸 것이다. 총 16비트의 길이로 구성되며, 오버플로우 플래그(OF), 디렉션 플래그(DF), 인터럽트 플래그(IF), 트랩 플래그(TF), 부호 플래그(SF), 제로 플래그(ZF), 보조 플래그(AF), 패리티 플래그(PF), 올림수 플래그(CF)등이 존재한다.
[ 그림 6-6 ]