INT 10H
1. 개요
INT 10H는 IBM PC 및 호환 시스템에서 비디오 기능을 제어하는 BIOS 인터럽트 호출이다. 비디오 모드 설정, 커서 모양 및 위치 설정, 문자 및 속성 읽기/쓰기, 팔레트 설정, 그래픽 픽셀 읽기/쓰기 등 다양한 기능을 제공한다. 이 인터럽트는 00h에서 0Fh까지 CGA 기능을 포함하며, VESA 호환 비디오 모드 설정 및 문자열 쓰기와 같은 확장 기능도 지원한다.
INT 10H
📚 더 읽어볼만한 페이지
-
인터럽트 -
프로그래머블 인터럽트 컨트롤러
프로그래머블 인터럽트 컨트롤러(PIC)는 컴퓨터 시스템에서 인터럽트 요청을 관리하며, 인터럽트 요청 레지스터 등을 사용하여 인터럽트를 처리하고 다양한 우선순위 체계를 지원하며, x86 아키텍처에서는 인텔 8259가 널리 사용되었다. -
인터럽트 -
도스 API
도스 API는 응용 프로그램이 MS-DOS 운영체제의 시스템 기능을 사용하도록 제공되는 인터페이스로, CP/M 호환성을 고려한 초기 설계 이후 유닉스 개념 도입, 네트워크 기능 추가 등으로 확장되었으며, 다양한 운영체제에서 에뮬레이터를 통해 지원된다. -
바이오스 -
아메리칸 메가트렌즈
아메리칸 메가트렌즈(AMI)는 1985년에 설립된 회사로, BIOS 펌웨어, 서버용 마더보드, 스토리지 컨트롤러 등을 공급하며, 현재는 AMIBIOS, Aptio, AMIDiag 등 다양한 제품을 제공한다. -
바이오스 -
부트 섹터
부트 섹터는 시스템 부팅 코드를 담은 저장 매체의 특정 영역으로, 볼륨 부트 레코드(VBR)와 마스터 부트 레코드(MBR)로 나뉘며, BIOS는 이를 실행하고 UEFI는 부트로더를 직접 로드하지만 바이러스 공격에 취약하다.
2. 지원되는 기능
INT 10H는 화면 제어 및 텍스트/그래픽 표시와 관련된 다양한 기능을 제공하는 인터럽트이다. 이 기능들은 AH 레지스터에 특정 코드를 설정하여 호출하며, 각 코드는 고유한 동작을 수행한다.
하위 섹션 "주요 기능"에서는 이러한 기능들 중 일부를 표 형태로 요약하여 제공한다. 이 표는 각 기능에 대한 간략한 설명, 기능 코드, 필요한 매개변수, 반환 값, 그리고 참고 사항을 포함한다.
그러나 이 표는 모든 INT 10H 기능을 포함하는 것은 아니며, IBM/PC 또는 기타 일반적인 표준 기능들만 다루고 있다. 더 자세하고 완전한 기능 목록은 랄프 브라운의 목록을 참조해야 한다.
2.1. 주요 기능
INT 10H는 다양한 화면 제어 기능을 제공하는 인터럽트이다. 주요 기능들은 다음과 같이 표로 정리할 수 있다.
| 기능 | 기능 코드 | 매개변수 | 반환 값 | 비고 |
|---|---|---|---|---|
| 비디오 모드 설정 | AH=00h | AL = 비디오 모드 | AL = 비디오 모드 플래그 / CRT 컨트롤러 모드 바이트 | |
| 텍스트 모드 커서 모양 설정 | AH=01h | CH = 스캔 라인 시작, CL = 스캔 라인 끝 | 일반적으로 문자 셀은 8개의 스캔 라인(0–7)을 가진다. CX=0607h는 일반 밑줄 커서, CX=0007h는 전체 블록 커서이다. CH의 비트 5가 설정되면 "커서 숨기기"를 의미하며, CX=2607h는 보이지 않는 커서이다. 일부 비디오 카드는 16개의 스캔 라인(00h-0Fh)을 가지거나 CH의 비트 5를 사용하지 않을 수 있다. | |
| 커서 위치 설정 | AH=02h | BH = 페이지 번호, DH = 행, DL = 열 | ||
| 커서 위치 및 모양 가져오기 | AH=03h | BH = 페이지 번호 | AX = 0, CH = 시작 스캔 라인, CL = 끝 스캔 라인, DH = 행, DL = 열 | |
| 라이트 펜 위치 읽기 | AH=04h | AH = 상태 (0=트리거되지 않음, 1=트리거됨), BX = 픽셀 X, CH = 픽셀 Y, CX = 모드 0Fh-10h의 픽셀 라인 번호, DH = 문자 Y, DL = 문자 X | VGA 시스템에서는 작동하지 않음 | |
| 활성 디스플레이 페이지 선택 | AH=05h | AL = 페이지 번호 | ||
| 창 위로 스크롤 | AH=06h | AL = 스크롤할 라인 수 (0 = 지우기), BH = 배경색 및 전경색 (예: BH = 43h는 배경색이 빨간색, 전경색이 시안색), CH = 위쪽 행 번호, CL = 왼쪽 열 번호, DH = 아래쪽 행 번호, DL = 오른쪽 열 번호 | ||
| 창 아래로 스크롤 | AH=07h | AL = 스크롤할 라인 수 (0 = 지우기), BH = 배경색 및 전경색, CH = 위쪽 행 번호, CL = 왼쪽 열 번호, DH = 아래쪽 행 번호, DL = 오른쪽 열 번호 | ||
| 커서 위치에서 문자 및 속성 읽기 | AH=08h | BH = 페이지 번호 | AH = 색상, AL = 문자 | |
| 커서 위치에 문자 및 속성 쓰기 | AH=09h | AL = 문자, BH = 페이지 번호, BL = 색상, CX = 문자를 인쇄할 횟수 | ||
| 커서 위치에 문자만 쓰기 | AH=0Ah | AL = 문자, BH = 페이지 번호, CX = 문자를 인쇄할 횟수 | ||
| 배경/테두리 색상 설정 | AH=0Bh, BH = 00h | BL = 배경/테두리 색상 (텍스트 모드에서만 테두리) | ||
| 팔레트 설정 | AH=0Bh, BH = 01h | BL = 팔레트 ID | CGA에서만 유효했지만, 최신 카드는 많은 또는 모든 그래픽 모드에서 지원 | |
| 그래픽 픽셀 쓰기 | AH=0Ch | AL = 색상, BH = 페이지 번호, CX = x, DX = y | ||
| 그래픽 픽셀 읽기 | AH=0Dh | BH = 페이지 번호, CX = x, DX = y | AL = 색상 | |
| 텔레타이프 출력 | AH=0Eh | AL = 문자, BH = 페이지 번호, BL = 색상 (그래픽 모드에서만) | ||
| 현재 비디오 모드 가져오기 | AH=0Fh | AL = 비디오 모드, AH = 문자 열 수, BH = 활성 페이지 | ||
| 텍스트 모드 문자 세트 변경 | AH=11h | BH = 문자당 바이트 수, CX = 변경할 문자 수, DX = 변경할 시작 문자, ES:BP = 문자 데이터 오프셋 | ||
| 문자열 쓰기 | AH=13h | AL = 쓰기 모드, BH = 페이지 번호, BL = 색상, CX = 문자열의 문자 수, DH = 행, DL = 열, ES:BP = 문자열의 오프셋 | EGA+, 즉 PC AT 최소 | |
| VESA VBE 호환 비디오 모드 설정 | AX=4f02h | BX = 비디오 모드, 부호 비트 (비트 15)가 설정된 경우 비디오 메모리가 새로 고쳐지지 않음 | 640x480에서 시작하여 256색으로 1280x1024에 도달 | |
| 기타 VESA VBE 명령 | AX=4F00h ~ 4F15h | 사양 참조 | 사양 참조 |
2.2. 추가 정보
* 랄프 브라운의 목록
* BIOS 색상 속성
* 컬러 그래픽 어댑터 (CGA)
* PC AT
* VESA VBE
* 라이트 펜
* VGA