바이오스 인터럽트 호출

'''바이오스 인터럽트 호출'''()은 도스용 프로그램과, 부트 로더와 같은 일부 기타 소프트웨어가 IBM PC 호환기종의 컴퓨터에 위치한 바이오스의 기능을 불러내는데 이용하는 방식이다. 일부 운영 체제 또한 초기 시동 단계에서 바이오스를 이용하여 하드웨어 자원을 탐지하고 초기화할 수 있다.
인터럽트는 INT x86 어셈블리어 명령을 이용하여 호출할 수 있다. 이를테면 바이오스 인터럽트 0x10을 이용하여 문자열을 화면에 출력하려면 다음의 x86 어셈블리어 명령을 실행하면 된다:
 mov ah, 0x0e
 mov al, '!'
 int 0x10
일반적인 바이오스 인터럽트 목록은 아래와 같다. 일부 바이오스(특히 오래된 것들)는 아래의 모든 인터럽트 클래스를 갖추고 있지는 않다.
 인터럽트 벡터
 설명
00h
CPU: 0으로 나누기를 시도한 뒤 또는 몫이 떨어지지 않을 때 실행된다
01h
CPU: 추적 플래그가 설정되어 있는 동안 모든 명령을 마친 후 실행된다
02h
CPU: 메모리 오류 등을 위해 POST 등이 사용하는 NMI(Non-maskable interrupt)
03h
CPU: 가장 낮은 비예비 인터럽트. 디버깅에 예외적으로 사용되며 INT 03 핸들러는 늘 디버깅 프로그램이 추가함
04h
CPU: 숫자 오버플로. 오버플로 플래그가 설정될 때 INTO 명령에 의해 발생.
05h
 Shift-Print screen이 눌릴 때 실행. (BOUND 함수가 바운드 실패를 감지할 때에도 발생)
06h
CPU: 정의되지 않은 Opcode (잘못된 함수) 예외가 발생할 때 호출함. 일반적으로 운영 체제가 설치.
07h
CPU: 부동소수점 함수를 실행하고 수치 보조 프로세서의 이용이 불가능할 때 호출함
08h
IRQ0: 시스템 타이밍 구성 요소가 추가함; PIT에 의해 초당 18.2번(55 ms) 호출함
09h
IRQ1: 모든 키가 눌리고 뗐을 때 호출함 (키가 눌리고 있는 동안도 포함)
0Bh
IRQ3: 필요시 직렬 포트 2, 4 (COM2/4)가 호출함
0Ch
IRQ4: 필요시 직렬 포트 1, 3 (COM1/3)이 호출함
0Dh
IRQ5: 필요시 하드 디스크 컨트롤러 (PC/XT) 또는 2차 병렬 포트 LPT2 (AT)가 호출함
0Eh
IRQ6: 필요시 플로피 디스크 컨트롤러가 호출함
0Fh
IRQ7: 필요시 1차 병렬 포트 LPT1 (프린터)가 호출함
10h
 비디오 서비스
AH
 설명
00h
 비디오 모드 설정
01h
 커서 모양 설정
02h
 커서 위치 설정
03h
 커서 위치 및 모양 가져오기
04h
 라이트 펜 위치 가져오기
05h
 디스플레이 페이지 설정
06h
 지우기/스크롤 스크린 업
07h
 지우기/스크롤 스크린 다운
08h
 문자열 및 커서 특성 읽기
09h
 문자열 및 커서 특성 쓰기
0Ah
 커서 문자열 쓰기
0Bh
 커서 테두리 설정
0Ch
 그래픽 픽셀 쓰기
0Dh
 그래픽 픽셀 읽기
0Eh
 TTY 모드에서 문자열 쓰기
0Fh
 비디오 모드 가져오기
10h
 팔레트 레지스터 설정 (EGA, VGA, SVGA)
11h
 문자 발생기 (EGA, VGA, SVGA)
12h
 함수 대안 선택 (EGA, VGA, SVGA)
13h
 문자열 쓰기
1Ah
 디스플레이 결합 코드 가져오기 또는 설정 (VGA, SVGA)
1Bh
 기능 정보 가져오기 (VGA, SVGA)
1Ch
 비디오 상태 저장 또는 복원 (VGA, SVGA)
4Fh
VESA 바이오스 확장 함수 (SVGA)
11h
 장비 목록 반환
12h
 기본 메모리 크기 반환
13h
 낮은 수준의 디스크 서비스
AH
 설명
00h
 디스크 드라이브 초기화
01h
 드라이브 상태 검사
02h
 섹터 읽기
03h
 섹터 쓰기
04h
 섹터 유효 여부 확인
05h
 트랙 포맷
08h
 드라이브 변수 가져오기
09h
 고정 드라이브 변수 초기화
0Ch
 지정된 트랙으로 찾기
0Dh
 고정 디스크 컨트롤러 초기화
15h
 드라이브 종류 가져오기
16h
 플로피 드라이브 미디어 변경 상태 가져오기
17h
 디스크 종류 설정
18h
 플로피 드라이브 미디어 종류 설정
41h
 확장 디스크 드라이브 (EDO) 설치 검사
42h
 섹터 확장 읽기
43h
 섹터 확장 쓰기
44h
 섹터 확장 유효 여부 확인
45h
 드라이브 잠금/잠금 해제
46h
 미디어 꺼내기
47h
 확장 찾기
48h
 드라이브 변수 확장 가져오기
49h
 미디어 변경 상태 확장 가져오기
4Eh
 하드웨어 구성 확장 설정
14h
 직렬 포트 서비스
AH
 설명
00h
 직렬 포트 초기화
01h
 문자열 전송
02h
 문자열 수신
03h
 상태
15h
 기타 시스템 서비스
AH
AL
 설명
00h
 카세트 드라이브 모터 켜기
01h
 카세트 드라이브 모터 끄기
02h
 카세트로부터 데이터 블록 읽기
03h
 카세트에 데이터 블록 쓰기
4Fh
 키보드 가로채기
83h
 이벤트 대기
84h
 조이스틱 읽기
85h
 Sysreq 키 호출
86h
 대기
87h
 블록 이동
88h
 확장 메모리 크기 가져오기
89h
 보호 모드로 전환
C0h
 시스템 변수 가져오기
C1h
 확장 바이오스 데이터 영역 세그먼트 가져오기
C2h
 포인팅 장치 기능
C3h
 감시 타이머 기능 - PS/2 시스템 전용
C4h
 프로그래밍 가능한 옵션 선택 - MCA 버스 PS/2 시스템 전용
D8h
EISA 시스템 기능 - EISA 버스 시스템 전용
E8h
01h
 확장 메모리 크기 가져오기 (1994년 이후 더 새로운 기능). 64 Mb 이상의 메모리 크기에 대한 결과를 제공.
E8h
20h
 쿼리 시스템 주소 맵.
16h
 키보드 서비스
AH
 설명
00h
 문자열 읽기
01h
 입력 상태 읽기
02h
 키보드 Shift 상태 읽기
05h
 키보드 버퍼에 키 눌림 저장
10h
 문자열 확장 읽기
11h
 입력 상태 확장 읽기
12h
 키보드 Shift 상태 확장 읽기
17h
 프린터 서비스
AH
 설명
00h
 프린터에 문자열 인쇄
01h
 프린터 초기화
02h
 프린터 상태 검사
18h
 카세트 BASIC 실행: 실제 IBM 컴퓨터에는 시동 실패 이벤트의 해당 루틴이 해석, 실행을 목적으로 ROM에 BASIC이 포함되어 있다. (BIOS가 호출)
19h
 POST 이후 이 인터럽트는 운영 체제를 불러오기 위해 바이오스가 사용함
1Ah
 실시간 시계 서비스
AH
 설명
00h
 RTC 읽기
01h
 RTC 설정
02h
 RTC 시간 읽기
03h
 RTC 시간 설정
04h
 RTC 날짜 읽기
05h
 RTC 날짜 설정
06h
 RTC 알람 설정
07h
 RTC 알람 초기화
1Ah
PCI 서비스 - PCI 2.0 이상을 지원하는 BIOS가 추가
AX
 설명
B101h
PCI 설치 검사
B102h
PCI 장치 찾기
B103h
PCI 클래스 코드 찾기
B106h
PCI 버스 관련 기능
B108h
구성 Byte 읽기
B109h
구성 Word 읽기
B10Ah
구성 Dword 읽기
B10Bh
구성 Byte 쓰기
B10Ch
구성 Word 쓰기
B10Dh
구성 Dword 쓰기
B10Eh
IRQ 루틴 정보 가져오기
B10Fh
PCI IRQ 설정
1Bh
Ctrl-Break 핸들러 - Ctrl-Break가 눌릴 때 INT 09가 호출
1Ch
타이머 틱 핸들러 - INT 08가 호출
1Dh
호출되지 않음. VTP(비디오 변수 테이블) 포인터로서 비디오 모드의 데이터를 포함
1Eh
호출되지 않음. DPT (디스켓 변수 테이블) 포인터로서 디스켓 드라이브에 관한 다양한 정보 포함
1Fh
호출되지 않음. VGCT(비디오 그래픽 문자 테이블) 포인터로서 아스키 문자열 80h ~ FFh의 데이터 포함
41h
주소 포인터: FDPT = 고정 디스크 변수 테이블 (1차 하드 드라이브)
46h
주소 포인터: FDPT = 고정 디스크 변수 테이블 (2차 하드 드라이브)
4Ah
알람을 위해 RTC가 호출
70h
IRQ8: RTC가 호출
74h
IRQ12: 마우스가 호출
75h
IRQ13: 산술 보조 프로세서가 호출
76h
IRQ14: 1차 IDE 컨트롤러가 호출
77h
IRQ15: 2차 IDE 컨트롤러가 호출
MS-DOS 시스템에서 IO.SYS는 플로피 디스크 변경 감지, 포맷 호출 추적, DMA 바운더리 오류 정정, 최초의 호출 이전 모델 코드 0xFC와 더불어 IBM의 ROM BIOS "01/10/84" 관련 문제 우회를 위해 INT 13을 훅 처리한다.
* 도스 인터럽트 호출
* 랄프 브라운의 인터럽트 리스트
*  The x86 Interrupt List (a.k.a. RBIL, Ralf Brown's Interrupt List)
*  Embedded BIOS User’s Manual
*  PhoenixBIOS 4.0 User's Manual
*  HTML version of Ralf Brown Interrupt List
* ''IBM Personal System/2 and Personal Computer BIOS Interface Technical Reference'', IBM, 1988, 
* ''System BIOS for IBM PCs, Compatibles, and EISA Computers'', Phoenix Technologies, 1991, 
* ''Programmer's Guide to the AMIBIOS'', American Megatrends, 1993, 
* ''The Programmer's PC Sourcebook'' by Thom Hogan, Microsoft Press, 1991 
분류:바이오스
분류:인터럽트