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