IBM PC 인터럽트 테이블
도스박물관
둘러보기로 이동검색으로 이동
IBM PC / DOS 인터럽트 테이블
IBM PC 계열에서 인터럽트는 CPU 예외, 하드웨어 IRQ, BIOS/DOS 서비스 호출이 같은 인터럽트 벡터 테이블 안에서 함께 사용된다.
Intel은 CPU 내부 예외 처리를 위해 00h부터 20h까지를 정의하였다. 하지만 초기 IBM PC BIOS와 DOS는 00h부터 1Fh까지의 일부 번호를 자체 용도로 사용했기 때문에, 80286/80386 이후에는 Intel CPU 예외 정의와 IBM PC BIOS/DOS 인터럽트 정의가 겹치는 부분이 생겼다.
Intel 정의 CPU 예외 테이블
| 인터럽트 | 기능 |
|---|---|
| 00h | 0으로 나누기 |
| 01h | 단일 스텝 |
| 02h | 마스크 불가능 인터럽트, NMI |
| 03h | 중단점 |
| 04h | 오버플로 트랩 |
| 05h | BOUND 범위 초과, 80186/80286/80386 |
| 06h | 잘못된 명령어, 80186/80286/80386 |
| 07h | 수치 보조 프로세서 사용 불가, 80286/80386 |
| 08h | 이중 고장 예외, 80286/80386 |
| 09h | 수치 보조 프로세서 세그먼트 초과, 80286/80386 |
| 0Ah | 잘못된 작업 상태 세그먼트, 80286/80386 |
| 0Bh | 세그먼트 없음, 80286/80386 |
| 0Ch | 스택 예외, 80286/80386 |
| 0Dh | 일반 보호 예외, 80286/80386 |
| 0Eh | 페이지 오류, 80286/80386 |
| 0Fh | 예약 |
| 10h | 수치 보조 프로세서 오류, 80286/80386 |
IBM PC 하드웨어 인터럽트 테이블
| IRQ | 인터럽트 | 기능 |
|---|---|---|
| IRQ0 | 08h | 시스템 타이머, 약 55ms 간격, 초당 약 18.2회 |
| IRQ1 | 09h | 키보드 서비스 요청 |
| IRQ2 | 0Ah | 보조 8259 PIC 또는 EGA/VGA 수직 귀선 |
| IRQ3 | 0Bh | COM2 또는 COM4 서비스 요청, MCA PS/2에서는 COM3-COM8 |
| IRQ4 | 0Ch | COM1 또는 COM3 서비스 요청 |
| IRQ5 | 0Dh | 고정 디스크 또는 LPT2 데이터 요청 |
| IRQ6 | 0Eh | 플로피 디스크 서비스 요청 |
| IRQ7 | 0Fh | LPT1 데이터 요청, IBM 모노크롬 환경에서는 신뢰성이 낮을 수 있음 |
| IRQ8 | 70h | 실시간 시계 |
| IRQ9 | 71h | IRQ2에서 소프트웨어적으로 재지정됨 |
| IRQ10 | 72h | 예약 |
| IRQ11 | 73h | 예약 |
| IRQ12 | 74h | PS/2 |
| IRQ13 | 75h | 수치 보조 프로세서 |
| IRQ14 | 76h | 고정 디스크 컨트롤러 #1 |
| IRQ15 | 77h | 고정 디스크 컨트롤러 #2 |
System BIOS/DOS에서 구현된 인터럽트 테이블
| INT | 소속 | 기능 |
|---|---|---|
| 00h | CPU | 0으로 나누기 |
| 01h | CPU | 단일 스텝 |
| 02h | CPU | 마스크 불가능 인터럽트 |
| 03h | CPU | 중단점 |
| 04h | CPU | 오버플로 트랩 |
| 05h | BIOS | 화면 인쇄 |
| 06h | CPU | 잘못된 명령어, 80186/80286/80386 |
| 07h | CPU | 수치 보조 프로세서 사용 불가, 80286/80386 |
| 08h | IRQ0 | 시스템 타이머, 약 55ms 간격, 초당 약 18.21590회 |
| 09h | IRQ1 | 키보드 서비스 요청 |
| 0Ah | IRQ2 | 보조 8259 PIC 또는 EGA/VGA 수직 귀선 |
| 0Bh | IRQ3 | COM2 서비스 요청, PS/2 MCA에서는 COM3-COM8 |
| 0Ch | IRQ4 | COM1 서비스 요청 |
| 0Dh | IRQ5 | 고정 디스크 또는 LPT2 데이터 요청 |
| 0Eh | IRQ6 | 플로피 디스크 서비스 요청 |
| 0Fh | IRQ7 | LPT1 데이터 요청, IBM 모노크롬 환경에서는 신뢰성이 낮을 수 있음 |
| 10h | BIOS | 비디오 서비스 |
| 11h | BIOS | 장비 구성 확인 |
| 12h | BIOS | 메모리 크기 확인 |
| 13h | BIOS | 디스크 입출력 서비스 |
| 14h | BIOS | 직렬 통신 서비스 |
| 15h | BIOS | 시스템 서비스, 카세트 서비스 |
| 16h | BIOS | 키보드 서비스 |
| 17h | BIOS | 병렬 프린터 서비스 |
| 18h | BIOS | ROM BASIC 로더 |
| 19h | BIOS | 부트스트랩 로더 |
| 1Ah | BIOS | 시각 서비스 |
| 1Bh | BIOS | 사용자 정의 Ctrl-Break 처리기 |
| 1Ch | BIOS | 사용자 정의 클럭 틱 처리기 |
| 1Dh | BIOS | 6845 비디오 파라미터 포인터 |
| 1Eh | BIOS | 디스켓 파라미터 포인터, 기본 테이블 |
| 1Fh | BIOS | 그래픽 문자 테이블 |
| 20h | DOS | 일반 프로그램 종료 |
| 21h | DOS | DOS 함수 호출 서비스 |
| 22h | DOS | 종료 주소 |
| 23h | DOS | Ctrl-Break 종료 주소 |
| 24h | DOS | 치명적 오류 처리기 |
| 25h | DOS | 절대 디스크 읽기 |
| 26h | DOS | 절대 디스크 쓰기 |
| 27h | DOS | 종료 후 상주 |
| 28h | DOS | DOS 유휴 루프, DOS가 유휴 상태일 때 호출 |
| 29h | DOS | 고속 TTY 콘솔 입출력 |
| 2Ah | DOS | 임계 구역 및 NETBIOS |
| 2Bh | DOS | 내부용, DOS 2.0-5.0에서는 단순 IRET |
| 2Ch | DOS | 내부용, DOS 2.0-5.0에서는 단순 IRET |
| 2Dh | DOS | 내부용, DOS 2.0-5.0에서는 단순 IRET |
| 2Eh | DOS | 기본 명령 인터프리터에서 명령 실행 |
| 2Fh | DOS | 멀티플렉서 |
| 30h-31h | CP/M | CP/M용 원거리 점프 벡터, 실제 인터럽트는 아님 |
| 31h | DPMI | DOS 보호 모드 인터페이스, DOS 확장기에서 사용 |
| 32h | 예약 | |
| 33h | 마우스 지원 | |
| 34h-3Eh | Microsoft/Borland 부동소수점 에뮬레이션 | |
| 3Fh | 오버레이 관리자 | |
| 40h | BIOS | 하드디스크 |
| 41h | BIOS | 고정 디스크 0 파라미터 포인터 |
| 42h | BIOS | 재배치된 비디오 처리기, EGA/VGA/PS |
| 43h | BIOS | 사용자 폰트 테이블, EGA/VGA/PS |
| 44h | BIOS | 처음 128개 그래픽 문자, NetWare에서도 사용 |
| 45h | BIOS | BIOS 예약 |
| 46h | BIOS | 고정 디스크 1 파라미터 포인터 |
| 47h | BIOS | BIOS 예약 |
| 48h | BIOS | PCjr 무선 키보드 변환 |
| 49h | BIOS | PCjr 비키보드 스캔코드 변환 테이블 |
| 4Ah | BIOS | 사용자 알람, AT/Convertible/PS/2 |
| 4Bh-4Fh | BIOS | 예약 |
| 50h | BIOS | PS/2 타이머 주기 알람 |
| 51h-58h | BIOS | 예약 |
| 59h | BIOS | GSS 컴퓨터 그래픽스 인터페이스 |
| 5Ah | BIOS | 클러스터 어댑터 BIOS 진입점 |
| 5Bh | BIOS | 클러스터 어댑터 부트 |
| 5Ch | NETBIOS | NETBIOS 인터페이스, TOPS 인터페이스 |
| 5Dh-5Fh | BIOS | BIOS 예약 |
| 60h-67h | 사용자 소프트웨어 인터럽트용 예약 | |
| 67h | EMS | LIM/EMS 사양 |
| 68h | APPC | |
| 69h-6Bh | IBM | IBM 예약 |
| 6Ch | DOS / BIOS | DOS 3.2 실시간 시계 갱신 / 시스템 재개 벡터 |
| 6Dh-6Fh | 예약 | |
| 70h | IRQ8 | 실시간 시계, AT/XT286/PS50 이상 |
| 71h | IRQ9 | IRQ2에서 소프트웨어적으로 재지정됨, AT/XT286/PS50 이상 |
| 72h | IRQ10 | 예약, AT/XT286/PS50 이상 |
| 73h | IRQ11 | 예약, AT/XT286/PS50 이상 |
| 74h | IRQ12 | 마우스 인터럽트, PS50 이상 |
| 75h | IRQ13 | 수치 보조 프로세서 NMI 오류, AT/XT286/PS50 이상 |
| 76h | IRQ14 | 고정 디스크 컨트롤러 |
| 77h | IRQ15 | 예약, AT/XT286/PS50 이상 |
| 78h-79h | 미사용 | |
| 80h-85h | ROM BASIC | ROM BASIC |
| 86h-F0h | DOS | BASIC 인터프리터용 예약 |
| 86h | NETBIOS | 재배치된 NETBIOS INT 18h |
| E0h | CP/M | CP/M-86 함수 호출 |
| F1h-FFh | IBM | IBM 예약 |
| FEh-FFh | 286 시스템에서 VDISK를 사용해 보호 모드에서 복귀할 때 파괴될 수 있음 |
주석
- Intel은 내부 CPU 예외 처리를 위해 00h부터 20h까지를 정의하였다.
- IBM은 00h부터 1Fh까지의 인터럽트를 BIOS, DOS, 하드웨어 IRQ 용도로 사용하였다.
- 이 때문에 일부 번호는 Intel CPU 예외와 IBM PC BIOS/DOS 인터럽트 의미가 겹친다.
- 일반 인터럽트는 FLAGS와 다음 명령의 CS:IP를 스택에 저장한다.
- CPU 예외 인터럽트는 대체로 문제를 일으킨 명령의 CS:IP를 스택에 저장한다.
- 8086/8088의 나눗셈 예외는 예외적으로 나눗셈 명령 다음 위치로 복귀할 수 있다.
- 인터럽트 루틴에 진입하면 인터럽트는 비활성화된다.
- 필요한 경우 사용자 코드에서 인터럽트를 다시 활성화하거나 IRET로 복귀한다.
- DOS 3.2 이후 하드웨어 IRQ 인터럽트는 DOS를 통해 재벡터링되어 표준 스택 프레임을 제공할 수 있다.
CPU 예외와 IBM PC 인터럽트 충돌 예
| 인터럽트 | Intel CPU 예외 | IBM PC / BIOS / IRQ 용도 |
|---|---|---|
| 05h | BOUND 범위 초과 | 화면 인쇄 |
| 08h | 이중 고장 | IRQ0 시스템 타이머 |
| 09h | 수치 보조 프로세서 세그먼트 초과 | IRQ1 키보드 |
| 0Dh | 일반 보호 예외 | IRQ5 / LPT2 / 고정 디스크 |
| 0Eh | 페이지 오류 | IRQ6 플로피 디스크 |
관련 항목
- BDA - BIOS Data Area - PC Memory Map
- CMOS RTC - Real Time Clock and Memory
- DBT - Disk Base Table
- DOS Error Codes
- EBDA - Extended BIOS Data Area
- Executable Header Format
- FCB - DOS File Control Block
- INT 16 - Keyboard Scan Codes
- INT 9 - Hardware Keyboard Make/Break Codes
- IRQs - Interrupts List
- Keyboard Memory Bytes
- Machine Identification Byte
- PSP - DOS Program Segment Prefix Layout
- System File Table
- Video Information Tables
- Video modes and corresponding number of pages
- IBM PC