Открыть сервис

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 →