바이오스 인터럽트 호출

바이오스 인터럽트 호출()은 도스용 프로그램과, 부트 로더와 같은 일부 기타 소프트웨어가 IBM PC 호환기종의 컴퓨터에 위치한 바이오스의 기능을 불러내는데 이용하는 방식이다. 일부 운영 체제 또한 초기 시동 단계에서 바이오스를 이용하여 하드웨어 자원을 탐지하고 초기화할 수 있다.

 인터럽트 호출 
인터럽트는 INT x86 어셈블리어 명령을 이용하여 호출할 수 있다. 이를테면 바이오스 인터럽트 0x10을 이용하여 문자열을 화면에 출력하려면 다음의 x86 어셈블리어 명령을 실행하면 된다:

 mov ah, 0x0e
 mov al, '!'
 int 0x10

 인터럽트 테이블 
일반적인 바이오스 인터럽트 목록은 아래와 같다. 일부 바이오스(특히 오래된 것들)는 아래의 모든 인터럽트 클래스를 갖추고 있지는 않다.

 인터럽트 벡터 설명00hCPU: 0으로 나누기를 시도한 뒤 또는 몫이 떨어지지 않을 때 실행된다01hCPU: 추적 플래그가 설정되어 있는 동안 모든 명령을 마친 후 실행된다02hCPU: 메모리 오류 등을 위해 POST 등이 사용하는 NMI(Non-maskable interrupt)03hCPU: 가장 낮은 비예비 인터럽트. 디버깅에 예외적으로 사용되며 INT 03 핸들러는 늘 디버깅 프로그램이 추가함04hCPU: 숫자 오버플로. 오버플로 플래그가 설정될 때 INTO 명령에 의해 발생.05h Shift-Print screen이 눌릴 때 실행. (BOUND 함수가 바운드 실패를 감지할 때에도 발생)06hCPU: 정의되지 않은 Opcode (잘못된 함수) 예외가 발생할 때 호출함. 일반적으로 운영 체제가 설치.07hCPU: 부동소수점 함수를 실행하고 수치 보조 프로세서의 이용이 불가능할 때 호출함08hIRQ0: 시스템 타이밍 구성 요소가 추가함; PIT에 의해 초당 18.2번(55 ms) 호출함09hIRQ1: 모든 키가 눌리고 뗐을 때 호출함 (키가 눌리고 있는 동안도 포함)0BhIRQ3: 필요시 직렬 포트 2, 4 (COM2/4)가 호출함0ChIRQ4: 필요시 직렬 포트 1, 3 (COM1/3)이 호출함0DhIRQ5: 필요시 하드 디스크 컨트롤러 (PC/XT) 또는 2차 병렬 포트 LPT2 (AT)가 호출함0EhIRQ6: 필요시 플로피 디스크 컨트롤러가 호출함0FhIRQ7: 필요시 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)4FhVESA 바이오스 확장 함수 (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 기타 시스템 서비스
AHAL 설명00h 카세트 드라이브 모터 켜기01h 카세트 드라이브 모터 끄기02h 카세트로부터 데이터 블록 읽기03h 카세트에 데이터 블록 쓰기4Fh 키보드 가로채기83h 이벤트 대기84h 조이스틱 읽기85h Sysreq 키 호출86h 대기87h 블록 이동88h 확장 메모리 크기 가져오기89h 보호 모드로 전환C0h 시스템 변수 가져오기C1h 확장 바이오스 데이터 영역 세그먼트 가져오기C2h 포인팅 장치 기능C3h 감시 타이머 기능 - PS/2 시스템 전용C4h 프로그래밍 가능한 옵션 선택 - MCA 버스 PS/2 시스템 전용D8hEISA 시스템 기능 - EISA 버스 시스템 전용E8h01h 확장 메모리 크기 가져오기 (1994년 이후 더 새로운 기능). 64 Mb 이상의 메모리 크기에 대한 결과를 제공.E8h20h 쿼리 시스템 주소 맵.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 알람 초기화1AhPCI 서비스 - PCI 2.0 이상을 지원하는 BIOS가 추가
AX 설명B101hPCI 설치 검사B102hPCI 장치 찾기B103hPCI 클래스 코드 찾기B106hPCI 버스 관련 기능B108h구성 Byte 읽기B109h구성 Word 읽기B10Ah구성 Dword 읽기B10Bh구성 Byte 쓰기B10Ch구성 Word 쓰기B10Dh구성 Dword 쓰기B10EhIRQ 루틴 정보 가져오기B10FhPCI IRQ 설정1BhCtrl-Break 핸들러 - Ctrl-Break가 눌릴 때 INT 09가 호출1Ch타이머 틱 핸들러 - INT 08가 호출1Dh호출되지 않음. VTP(비디오 변수 테이블) 포인터로서 비디오 모드의 데이터를 포함1Eh호출되지 않음. DPT (디스켓 변수 테이블) 포인터로서 디스켓 드라이브에 관한 다양한 정보 포함1Fh호출되지 않음. VGCT(비디오 그래픽 문자 테이블) 포인터로서 아스키 문자열 80h ~ FFh의 데이터 포함41h주소 포인터: FDPT = 고정 디스크 변수 테이블 (1차 하드 드라이브)46h주소 포인터: FDPT = 고정 디스크 변수 테이블 (2차 하드 드라이브)4Ah알람을 위해 RTC가 호출70hIRQ8: RTC가 호출74hIRQ12: 마우스가 호출75hIRQ13: 산술 보조 프로세서가 호출76hIRQ14: 1차 IDE 컨트롤러가 호출77hIRQ15: 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 

분류:바이오스
분류:인터럽트