Эта статья включает список общих ссылок , но в ней отсутствуют соответствующие встроенные цитаты . ( Июнь 2015 ) |
INT 10h , INT 10H или INT 16 — это сокращение от BIOS interrupt call 10 hex , 17-го вектора прерывания в компьютерной системе на базе x86 . BIOS обычно устанавливает обработчик прерываний реального режима на этом векторе, который предоставляет видеоуслуги. Такие услуги включают установку видеорежима, вывод символов и строк, а также графические примитивы (чтение и запись пикселей в графическом режиме).
Чтобы использовать этот вызов, загрузите AH с номером нужной подфункции, загрузите другие требуемые параметры в другие регистры и выполните вызов. INT 10h довольно медленный, поэтому многие программы обходят эту процедуру BIOS и обращаются к оборудованию дисплея напрямую. Установка видеорежима, которая выполняется нечасто, может быть выполнена с помощью BIOS, в то время как рисование графики на экране в игре должно выполняться быстро, поэтому прямой доступ к видеопамяти более уместен, чем вызов BIOS для каждого пикселя.
Кроме того, в современной системе x86 вызовы BIOS могут выполняться только в режиме Real или Virtual 8086. v8086 не является опцией в режиме Long . Это означает, что современная операционная система, которая работает в защищенном режиме (32 бита) или режиме Long (64 бита), должна будет переключиться в реальный режим и обратно, чтобы вызвать BIOS — чрезвычайно затратная операция. Хотя большинство современных систем обычно используют драйверы устройств, которые напрямую устанавливают видеорежим, для любительских систем нецелесообразно иметь драйвер устройства для каждой видеокарты — проблема, которая также преследует старые, неподдерживаемые системы, такие как Windows 98. Такие системы вместо этого могут перейти в режим Real для переключения видеорежима, а затем напрямую отрисовывать в буфере кадров.
В системах EFI 1.x INT 10H и VESA BIOS Extensions (VBE) заменены протоколом EFI UGA. В широко используемых системах UEFI 2.x INT 10H и VBE заменены UEFI GOP . [1] [2]
Список неполный; используйте список Ральфа Брауна для получения полной информации. Пожалуйста, добавляйте только IBM/PC или другие стандартные функции. 00h по 0fh — это CGA.
Функция | Код функции | Параметры | Возвращаться |
---|---|---|---|
Установить видеорежим | АЧ=00ч | AL = видеорежим AL = видеорежим (только для старых IBM) | AL = флаг видеорежима / байт режима контроллера CRT |
Установить форму курсора текстового режима | АЧ=01ч | CH = Начало строки сканирования, CL = Конец строки сканирования Обычно ячейка символа имеет 8 строк сканирования, 0–7. Таким образом, CX=0607h — это обычный курсор подчеркивания, CX=0007h — это курсор полного блока. Если бит 5 CH установлен, это часто означает «Скрыть курсор». Таким образом, CX=2607h — это невидимый курсор. Некоторые видеокарты имеют 16 строк развертки, 00h-0Fh. Некоторые видеокарты не используют бит 5 CH. С ними сделайте Start>End (например, CX=0706h) | |
Установить позицию курсора | АЧ=02ч | BH = Номер страницы, DH = Строка, DL = Столбец | |
Получить позицию и форму курсора | АЧ=03ч | BH = Номер страницы | AX = 0, CH = Начальная строка сканирования, CL = Конечная строка сканирования, DH = Строка, DL = Столбец |
Определить положение светового пера (не работает на системах VGA ) | АЧ=04ч | AH = Статус (0=не запущен, 1=запущен), BX = Пиксель X, CH = Пиксель Y, CX = Номер строки пикселя для режимов 0Fh-10h, DH = Символ Y, DL = Символ X | |
Выберите активную страницу отображения | АЧ=05ч | AL = Номер страницы | |
Прокрутить окно вверх | АЧ=06ч | AL = строки для прокрутки (0 = очистить, используются CH, CL, DH, DL), BH = Цвет фона и цвет переднего плана. BH = 43h означает, что цвет фона красный, а цвет переднего плана голубой. См. атрибуты цвета BIOS CH = Номер верхней строки, CL = Номер левого столбца, DH = Номер нижней строки, DL = Номер правого столбца | |
Прокрутить окно вниз | АЧ=07ч | как выше | |
Прочитать символ и атрибут в позиции курсора | АЧ=08ч | BH = Номер страницы | AH = Цвет , AL = Символ |
Запись символа и атрибута в позиции курсора | АЧ=09ч | AL = Символ, BH = Номер страницы, BL = Цвет , CX = Количество раз печати символа | |
Запись символа только в позиции курсора | Ач=0Ач | AL = Символ, BH = Номер страницы, CX = Количество раз печати символа | |
Установить цвет фона/границы | AH=0Bh, BH = 00h | BL = Цвет фона/границы (граница только в текстовых режимах) | |
Установить палитру | AH=0Bh, BH = 01h | BL = идентификатор палитры (был действителен только в CGA , но более новые карты поддерживают его во многих или всех графических режимах) | |
Запись графического пикселя | AH=0Ч | AL = Цвет , BH = Номер страницы, CX = x, DX = y | |
Чтение графического пикселя | AH=0Dh | BH = Номер страницы, CX = x, DX = y | АЛ = Цвет |
Вывод телетайпа | AH=0Eh | AL = Символ, BH = Номер страницы, BL = Цвет (только в графическом режиме) | |
Получить текущий видеорежим | AH=0Fh | AL = Видеорежим, AH = количество столбцов символов, BH = активная страница | |
Изменить набор символов текстового режима [3] | АЧ=11ч | BH = Количество байтов на символ, CX = Количество символов для изменения, DX = Начальный символ для изменения, ES:BP = Смещение данных символа | |
Запись строки (EGA+, что означает минимум PC AT ) | АЧ=13ч | AL = Режим записи, BH = Номер страницы, BL = Цвет , CX = Количество символов в строке, DH = Строка, DL = Столбец, ES:BP = Смещение строки | |
установить видеорежимы, совместимые со стандартом VESA, начиная с 640x480 и заканчивая 1280x1024 с 256 цветами | АХ=4f02h | BX = видеорежим, если установлен бит знака (бит 15), видеопамять не будет обновляться | |
Другие команды VESA VBE | AX=4F00h до 4F15h | Посмотреть спецификацию | Посмотреть спецификацию |