ИНТ 10Ч
Эта статья включает список общих ссылок , но в ней отсутствуют достаточные соответствующие встроенные цитаты . ( июнь 2015 г. ) |
INT 10h , INT 10H или INT 16 — это сокращение для вызова прерывания BIOS 10 hex , 17-го вектора прерывания в компьютерной системе на базе x86 . BIOS , обычно устанавливает реального режима в этом векторе обработчик прерываний который обеспечивает видеосервисы. К таким сервисам относятся настройка видеорежима, символьный и строковый вывод, а также графические примитивы (чтение и запись пикселей в графическом режиме).
Чтобы использовать этот вызов, загрузите в AH номер нужной подфункции, загрузите другие необходимые параметры в другие регистры и выполните вызов. INT 10h работает довольно медленно, поэтому многие программы обходят эту процедуру BIOS и напрямую обращаются к оборудованию дисплея. Настройка видеорежима, что делается нечасто, можно осуществить с помощью BIOS, тогда как отрисовку графики на экране в игре нужно производить быстро, поэтому прямой доступ к видеопамяти целесообразнее, чем вызов BIOS для каждого пикселя. .
Более того, в современной системе x86 вызовы BIOS могут выполняться только в режиме Real или Virtual 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.
Функция | Код функции | Параметры | Возвращаться |
---|---|---|---|
Установить видеорежим | АХ=00ч | AL = видеорежим | 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ч | ЧД = номер страницы | 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ч | ЧД = номер страницы | AH = Цвет , AL = Символ |
Запись символа и атрибута в позиции курсора | АХ=09ч | AL = символ, BH = номер страницы, BL = цвет , CX = количество раз печати символа. | |
Записывать символ только в позиции курсора | АХ=0Ач | AL = символ, BH = номер страницы, CX = количество раз печати символа. | |
Установить цвет фона/границы | АХ=0Bh, ЧД = 00h | BL = Цвет фона/границы (рамка только в текстовых режимах) | |
Установить палитру | АХ=0Bh, ЧД = 01h | BL = идентификатор палитры (действителен только в CGA , но более новые карты поддерживают его во многих или во всех графических режимах) | |
Написать графический пиксель | АХ=0Ч | AL = Цвет , BH = Номер страницы, CX = x, DX = y | |
Чтение графического пикселя | АХ=0Дч | BH = номер страницы, CX = x, DX = y | АЛ = Цвет |
Телетайпный выход | АХ=0Эх | AL = Символ, BH = Номер страницы, BL = Цвет (только в графическом режиме) | |
Получить текущий видеорежим | АХ=0Фч | AL = режим видео, AH = количество столбцов символов, BH = активная страница | |
Изменить набор символов текстового режима [3] | АХ=11ч | BH = количество байтов на символ, CX = количество символов для изменения, DX = начальный символ для изменения, ES:BP = смещение символьных данных | |
Запись строки (EGA+, что означает минимум ПК AT ) | АХ=13ч | AL = режим записи, BH = номер страницы, BL = цвет , CX = количество символов в строке, DH = строка, DL = столбец, ES:BP = смещение строки | |
установить VESA-совместимые видеорежимы, начиная с 640 на 480 и заканчивая 1280 на 1024 с 256 цветами | АХ=4f02h | BX = видеорежим, если установлен бит Sign (бит 15), видеопамять не будет обновляться | |
Other VESA VBE commands | AX = от 4F00h до 4F15h | См. спецификацию | См. спецификацию |
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Что такое efifb? — Документация по ядру Linux» . www.kernel.org . Проверено 24 ноября 2020 г.
- ^ «Что такое vesafb? — Документация по ядру Linux» . www.kernel.org . Проверено 24 ноября 2020 г.
- ^ «Процедура смены шрифта» . Вечно молодое программное обеспечение . Проверено 8 марта 2020 г.