WikiDer > ИНТ 10H

INT 10H

ИНТ 10ч, ИНТ 10H или же ИНТ 16 сокращение для Вызов прерывания BIOS 10шестнадцатеричный, 17-е вектор прерывания в x86компьютерная система на базе. В BIOS обычно создает реальный режим обработчик прерывания в этом векторе предоставляет видеоуслуги. К таким сервисам относятся установка видеорежима, вывода символов и строк, а также графических примитивов (чтение и запись пиксели в графическом режиме).

Чтобы использовать этот вызов, загрузите AH с номером нужной подфункции, загрузите другие необходимые параметры в другие регистры и сделайте вызов. INT 10h довольно медленно, поэтому многие программы обходят эту процедуру BIOS и напрямую обращаются к оборудованию дисплея. Настройка видеорежима, которая выполняется нечасто, может быть выполнена с помощью BIOS, в то время как рисование графики на экране в игре должно выполняться быстро, поэтому прямой доступ к видеопамяти более уместен, чем вызов BIOS для каждого пикселя. .

Кроме того, в современной системе x86 вызовы BIOS могут выполняться только в Реальный режим, или же Виртуальный режим 8086. v8086 не вариант в Длинный режим. Это означает, что современная операционная система, работающая в Защищенный режим (32 бит) или Длинный режим (64-разрядная версия), потребуется переключиться в реальный режим и обратно, чтобы вызвать BIOS - чрезвычайно дорогостоящая операция. Хотя в большинстве современных систем обычно используются драйверы устройств, которые напрямую устанавливают видеорежим, для любительских систем нереально иметь драйвер устройства для каждой видеокарты - проблема, которая также преследует более старые, неподдерживаемые системы, такие как Windows 98. Вместо этого такие системы могут перейти в реальный режим для переключения видеорежима, а затем напрямую отрисовывать в кадровый буфер.

В EFI 1.x, INT 10H и Расширения VESA BIOS (VBE) заменены протоколом EFI UGA. В широко используемых UEFI 2.x INT 10H и VBE заменяются на UEFI GOP.[1][2]

Список поддерживаемых функций

Список неполный; используйте список Ральфа Брауна для получения исчерпывающей информации. Пожалуйста, добавляйте только IBM / PC или другие стандартные стандартные функции. 00h - 0fh - это CGA.

ФункцияКод функцииПараметрыВозвращаться
Установить режим видеоAH = 00чAL = видеорежимAL = флаг режима видео / байт режима контроллера ЭЛТ
Установить форму курсора в текстовом режимеAH = 01чCH = начало строки сканирования, CL = конец строки сканирования

Обычно символьная ячейка имеет 8 строк развертки, 0-7. Итак, CX = 0607h - это обычный курсор с подчеркиванием, CX = 0007h - это курсор полного блока. Если бит 5 канала CH установлен, это часто означает «Скрыть курсор». Итак, CX = 2607h - невидимый курсор.

Некоторые видеокарты имеют 16 строк развертки, 00h-0Fh.

Некоторые видеокарты не используют бит 5 канала CH. С ними сделайте Start> End (например, CX = 0706h)

Установить позицию курсораAH = 02чBH = номер страницы, DH = строка, DL = столбец
Получить положение и форму курсораAH = 03чBH = номер страницыAX = 0, CH = начало строки сканирования, CL = конец строки сканирования, DH = строка, DL = столбец
Читать световое перо положение (не работает на VGA системы)AH = 04чAH = статус (0 = не запускается, 1 = запускается), BX = пиксель X, CH = пиксель Y, CX = номер строки пикселя для режимов 0Fh-10h, DH = символ Y, DL = символ X
Выбрать активную страницу дисплеяAH = 05чAL = номер страницы
Прокрутить окно вверхAH = 06чAL = строки для прокрутки (0 = очистить, используются CH, CL, DH, DL),

BH = цвет фона и цвет переднего плана. BH = 43h, означает, что цвет фона красный, а цвет переднего плана голубой. Атрибуты цвета BIOS

CH = номер верхней строки, CL = номер левого столбца, DH = номер нижней строки, DL = номер правого столбца

Прокрутить окно внизAH = 07чкак указано выше
Прочитать символ и атрибут в позиции курсораAH = 08чBH = номер страницыAH = Цвет, AL = символ
Записать символ и атрибут в позиции курсораAH = 09чAL = символ, BH = номер страницы, BL = Цвет, CX = количество раз для печати символа
Записывать символ только в позиции курсораAH = 0AhAL = символ, BH = номер страницы, CX = количество раз для печати символа
Установить цвет фона / границыAH = 0Bh, BH = 00hBL = Цвет фона / границы (граница только в текстовых режимах)
Установить палитруAH = 0Bh, BH = 01hBL = Идентификатор палитры (был действителен только в CGA, но более новые карты поддерживают его во многих или во всех графических режимах)
Запись графического пикселяAH = 0ChAL = Цвет, BH = номер страницы, CX = x, DX = y
Считать графический пиксельAH = 0DhBH = номер страницы, CX = x, DX = yAL = Цвет
Вывод телетайпаAH = 0EhAL = символ, BH = номер страницы, BL = Цвет (только в графическом режиме)
Получить текущий режим видеоAH = 0FhAL = видеорежим, AH = количество столбцов символов, BH = активная страница
Изменить набор символов текстового режима[3]AH = 11чBH = количество байтов на символ, CX = количество символов, которые нужно изменить, DX = начальный символ, который нужно изменить, ES: BP = смещение символьных данных
Записать строку (EGA +, что означает ПК AT минимум)AH = 13чAL = режим записи, BH = номер страницы, BL = Цвет, CX = количество символов в строке, DH = строка, DL = столбец, ES: BP = смещение строки
установить VESA-совместимые режимы видео, начиная с 640 на 480 и достигая 1280 на 1024 с 256 цветамиAX = 4f02hBX = видеорежим, если Знаковый бит (бит 15) установлен, видеопамять не обновляется
Другой VESA VBE командыAX = от 4F00h до 4F15hСм. СпецификацииСм. Спецификации

Смотрите также

Рекомендации

  1. ^ «Что такое efifb? - Документация ядра Linux». www.kernel.org. Получено 2020-11-24.
  2. ^ «Что такое vesafb? - Документация ядра Linux». www.kernel.org. Получено 2020-11-24.
  3. ^ «Процедура смены шрифта». Программное обеспечение Forever Young. Получено 8 марта, 2020.