INT 10h
INT 10h — программное прерывание BIOS в архитектуре x86, обеспечивающее базовые функции видеосервиса: установку видеорежима, вывод символов, управление курсором, работу со страницами видеопамяти и палитрой. Вызывается через инструкцию INT 10h с номером функции в регистре AH. До появления универсальных графических драйверов операционных систем являлось основным интерфейсом для вывода текста и графики в среде DOS и на ранних этапах загрузки ОС.
История и назначение
Прерывание INT 10h появилось вместе с первыми IBM PC (1981) как часть системного BIOS. Оно абстрагировало работу с различными видеоадаптерами — MDA, CGA, EGA, а позднее VGA и SVGA — предоставляя программисту единый набор функций. Это позволяло программам, написанным для DOS, корректно работать на широком спектре аппаратного обеспечения без знания конкретных регистров видеоконтроллера.
С развитием графических стандартов (VGA, затем Super VGA) набор функций INT 10h расширялся. Для SVGA-режимов, выходящих за рамки стандарта VGA, использовался интерфейс VESA BIOS Extensions (VBE), который также вызывался через INT 10h (функция AX=4F00h).
Ключевые функции
Вызов прерывания осуществляется с номером функции в регистре AH, параметрами — в других регистрах. Основные группы функций:
- Управление видеорежимом (
AH=00h— установка,AH=0Fh— получение текущего): переключение между текстовыми (80×25, 40×25) и графическими режимами (CGA 320×200, VGA 640×480 и др.). - Вывод символов (
AH=09h,AH=0Ah,AH=0Eh): вывод символа с заданным цветом/атрибутом в текущей позиции курсора. Функция0Eh(телетайпный вывод) дополнительно обрабатывает управляющие символы (перевод строки, возврат каретки). - Управление курсором (
AH=01h— форма,AH=02h— позиция,AH=03h— получение позиции). - Работа со страницами видеопамяти (
AH=05h): выбор активной текстовой страницы, что позволяло создавать эффект мгновенного переключения экранов. - Работа с точками и пикселями (
AH=0Ch— вывод точки,AH=0Dh— чтение точки) в графических режимах. - Работа с палитрой и цветами (
AH=0Bh— установка палитры CGA,AH=10h— управление регистрами цветов VGA). - Текстовый вывод строки (
AH=13h): вывод строки с атрибутами, поддерживающий как текущую, так и заданную позицию курсора. - VESA BIOS Extensions (
AX=4F00h— получение информации о VBE,AX=4F01h— информация о режиме,AX=4F02h— установка SVGA-режима).
Использование в загрузчиках и ОС
INT 10h активно используется на ранних этапах загрузки операционных систем, когда драйверы видеокарты ещё не загружены. Загрузчики (например, GRUB) применяют его для вывода сообщений на экран в текстовом режиме. Ядро Linux на этапе ранней инициализации также использует INT 10h для настройки framebuffer-консоли, прежде чем перейти к собственным драйверам.
В среде DOS INT 10h оставалось основным способом вывода для множества приложений, включая текстовые редакторы (Norton Commander, Far Manager) и игры. С появлением защищённого режима процессора (32-битного) прямой вызов INT 10h стал невозможен без переключения в реальный режим, поэтому программы либо использовали DOS-расширители (DOS/4GW, CWSDPMI), либо обращались к видеокарте напрямую через порты ввода-вывода.
Совместимость и эмуляция
Современные операционные системы (Windows, Linux) не используют INT 10h для вывода в пользовательском режиме. Однако для обеспечения совместимости с устаревшим ПО существуют эмуляторы DOS — DOSBox, DOSBox-X, vDos. Они полностью эмулируют вызовы INT 10h, транслируя их в системные вызовы современных ОС. Встроенные в BIOS современных материнских плат реализации INT 10h (UEFI CSM) также сохраняют совместимость с 16-битным кодом.
Ограничения
Основные ограничения INT 10h связаны с его 16-битной природой и медленной работой. Каждый вызов прерывания требует переключения контекста и выполнения кода BIOS, что значительно медленнее прямого доступа к видеопамяти. Кроме того, функции INT 10h не поддерживают аппаратное ускорение и современные графические API (DirectX, OpenGL), что делает их непригодными для высокопроизводительной графики.
Источники
- Ralf Brown's Interrupt List (RBIL) — документация по прерываниям BIOS.
- Intel 80386 Programmer's Reference Manual.
- VESA BIOS Extension (VBE) Core Functions Standard, Version 3.0.
- Peter Norton, Richard Wilton. «The New Peter Norton Programmer's Guide to the IBM PC & PS/2».
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


