ИНТ 10H

Вызов прерывания BIOS

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 = 00hBL = Цвет фона/границы (граница только в текстовых режимах)
Установить палитруAH=0Bh, BH = 01hBL = идентификатор палитры (был действителен только в CGA , но более новые карты поддерживают его во многих или всех графических режимах)
Запись графического пикселяAH=0ЧAL = Цвет , BH = Номер страницы, CX = x, DX = y
Чтение графического пикселяAH=0DhBH = Номер страницы, CX = x, DX = yАЛ = Цвет
Вывод телетайпаAH=0EhAL = Символ, BH = Номер страницы, BL = Цвет (только в графическом режиме)
Получить текущий видеорежимAH=0FhAL = Видеорежим, 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 цветамиАХ=4f02hBX = видеорежим, если установлен бит знака (бит 15), видеопамять не будет обновляться
Другие команды VESA VBEAX=4F00h до 4F15hПосмотреть спецификациюПосмотреть спецификацию

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

Ссылки

  1. ^ «Что такое efifb? — Документация ядра Linux». www.kernel.org . Получено 24.11.2020 .
  2. ^ «Что такое vesafb? — Документация ядра Linux». www.kernel.org . Получено 24.11.2020 .
  3. ^ "Процедура смены шрифта". Forever Young Software . Получено 8 марта 2020 г.
  • INT 10h из списка прерываний Ральфа Брауна, онлайн-версия
  • INT 10h на www.ousob.com
Взято с "https://en.wikipedia.org/w/index.php?title=INT_10H&oldid=1210799295"