INT 10H
INT 10h, INT 10H или INT 16 — инструкция на языке ассемблера для процессора архитектуры x86, генерирующая программное прерывание BIOS 10hex, 17-й вектор прерывания в архитектуре x86. BIOS, как правило, связывает с этим вектором обработчик прерывания в реальном режиме, предоставляющий видеосервис. Он включает установку видеорежима видеоадаптера, вывод символов и строк, графические примитивы (чтение и запись пикселей в графическом режиме).
Вызов INT 10h довольно медленный, поэтому многие программы получают доступ к видеоадаптеру напрямую, без BIOS. Установка видеорежима, производимая как правило единожды, может быть выполнена при помощи BIOS. Однако, отрисовка должна выполняться быстро, поэтому для этого лучше подходит прямой доступ к видеопамяти, чем вызов прерываний BIOS для каждого пикселя.
Список функций видеосервиса
Функция
|
Код функции
|
Параметры
|
Возвращаемое значение
|
Установка видеорежима
|
AH=00h
|
AL = номер режима
|
AL = флаг видеорежима / байт режима CRT контроллера
|
Установить форму курсора текстового режима
|
AH=01h
|
CH = начальная строка, CL = конечная строка
Обычно знакоместо имеет 8 строк, 0-7. Тогда CX=0607h — обычный курсор-подчеркивание, CX=0007h — всё знакоместо. Если задан 5-й бит CH, то это обычно означает «Скрыть курсор». Поэтому CX=2607h — невидимый курсор.
Некоторые видеокарты имеют 16 строк на знакоместо, 00h-0Fh.
Некоторые видеокарты не используют 5-й бит CH. В таком случае, для скрытия следует задать CH > CL (например 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 = атрибут цвета.
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 = ID палитры (имело смысл в CGA адаптерах, но более новые видеокарты поддерживают это во многих или всех графических режимах)
|
|
Задать пиксель
|
AH=0Ch
|
AL = цвет, BH = страница, CX = x, DX = y
|
|
Прочитать цвет пикселя
|
AH=0Dh
|
BH = страница, CX = x, DX = y
|
AL = цвет
|
Консольный вывод символа
|
AH=0Eh
|
AL = символ, BH = страница, BL = цвет (только в графическом режиме)
|
|
Получить текущий видеорежим
|
AH=0Fh
|
|
AL = видеорежим, AH = число знаковых столбцов, BH = текущая страница
|
Вывести строку (EGA и выше)
|
AH=13h
|
AL = режим вывода, BH = страница, BL = цвет, CX = длина строки, DH = строка (на экране), DL = столбец, ES:BP = адрес
|
|
См. также
Ссылки
|
|