인터럽트 사이클의 주된 목적은 현재 실행 중인 프로그램의 상태(PC, 프로그램 카운터 값 등)를 저장하고, 인터럽트 서비스 루틴(Interrupt Service Routine)으로 제어를 넘기는 것입니다. 이를 위해 일반적으로 다음 단계가 수행됩니다. 1. **PC 값 저장**: 현재 실행 중인 명령어의 다음 명령어 주소인 **PC** 값을 **메모리(M)**에 저장해야 합니다. 이를 위해 먼저 PC 값을 **메모리 주소 레지스터(MAR)**로 옮깁니다. (① **MAR ← PC**) 2. **PC 값 증가**: PC는 다음에 실행될 명령어의 주소를 가리켜야 하지만, 인터럽트 처리 후 복귀할 주소를 저장한 후에는 인터럽트 서비스 루틴의 시작 주소로 변경되어야 합니다. 이 과정에서 **PC** 값을 1 증가시키는 것은 **인터럽트 사이클**보다는 **인출(fetch) 사이클**에서 주로 발생합니다. (① **PC ← PC+1**) 3. **인터럽트 처리 루틴 주소로 PC 변경**: 인터럽트 핸들러가 0번지에 저장되어 있다고 가정했으므로, **PC** 값을 0으로 변경하여 인터럽트 서비스 루틴으로 제어를 넘깁니다. (② **PC ← 0**) 4. **인터럽트 비활성화**: 인터럽트가 중첩되어 발생하는 것을 방지하기 위해 **인터럽트 활성화 레지스터(IEN)**를 비활성화(0)합니다. (③ **IEN ← 0**) 5. **현재 상태 메모리 저장**: PC 값을 저장할 메모리 주소를 **MAR**에 담고, 저장할 데이터를 **메모리 버퍼 레지스터(MBR)**에 담은 후 메모리에 기록합니다. (③ **M ← MBR**) 6. **인출 사이클로 전환**: 인터럽트 서비스 루틴의 첫 번째 명령어를 실행하기 위해 **인출 사이클(fetch cycle)**로 돌아갑니다. (④ **GO TO fetch cycle**) 보기 ②번의 **MBR ← MAR**는 **메모리 주소 레지스터(MAR)**의 내용을 **메모리 버퍼 레지스터(MBR)**로 옮기는 연산으로, 인터럽트 사이클의 일반적인 흐름에 부합하지 않습니다. 일반적으로 **메모리(M)**에서 읽어온 데이터나 **PC**와 같은 레지스터의 값을 **MBR**로 옮깁니다. 따라서 가장 관계가 없는 것은 ②번입니다.