- •Видеосистема
- •Введение
- •Компоненты видеосистемы
- •Монитор
- •Область памяти дисплея
- •Видеоконтроллер
- •Видео-bios
- •Видеорежимы
- •Атрибуты
- •Функции прерывания iнт 10н
- •Функция 0н прерывания int10н: установка видеорежима
- •Функция 01н прерывания int10н: установка размера курсора
- •Функция 02н прерывания int10н: установка положения курсора
- •Функция 0зн прерывания int10н: получение состояния курсора
- •Функция 05н прерывания int10н: выбор активной страницы
- •Функция 06н прерывания int10н: прокрутка экрана вверх
- •Функция 07н прерывания int10н: прокрутка экрана вниз
- •Функция 08н прерывания int10н: считывание символа и его атрибутов в положении курсора
- •Функция 09н прерывания int10н: вывод том символа и атрибутов в положение курсора
- •Функция 0ан прерывания int10н: вывод символа в положение курсора
- •Непосредственный вывод на экран
Функции прерывания iнт 10н
Обработчик прерывания INT10Н выполняет множество функций (выбираемых по коду функции в регистре АН), применяющихся для работы с дисплеем. В зависимости от возвращаемых значений обработчик может сохранять значения регистров ВХ, СХ,DХ,DI,SI,DS,ESиBP. Некоторые функции могут устанавливать или считывать отдельные биты и элементы данных в области видео данныхBIOSс адресов 0040:nn.
Прерывание INT10Н пытается обработать все, что вы ему передаете, и не возвращает сигналов о выполнении или флагов ошибок. Будьте аккуратны и осторожны, передавая коды функций обработчику этого прерывания; вам не удастся нанести системе непоправимый ущерб, но в результате ваших действий экран может стать пустым и темным, и, как следствие, вам придется перезапустить компьютер.
Ниже описаны функции прерывания INT10Н.
Функция 0н прерывания int10н: установка видеорежима
Эта функция предназначена для установки видеорежима. Загрузите код функции (00Н) в регистр АН и код режима, который хотите установить — в АL. В следующем примере устанавливается стандартный цветной текстовый режим для любого типа цветного монитора:
Эта операция не возвращает значений. Она также очищает экран, но это ее действие можно отменить, установив бит 7 режима в 1 и передан в АLсоответствующий код с помощьюMOV AL,83Н.
Функция 01н прерывания int10н: установка размера курсора
Курсор не является частью набора символов ASCIIи существует только в текстовом режиме. Видеоконтроллер управляет положением курсора и его размером, и размер можно изменять специальной функцией 01Н прерыванияINT10Н. Стандартный размер курсора для цветного адаптераVGA— строка 13 для вершины и 14 для основания, а для монохромного — 6 для вершины и 7 для основания. Для изменения размера курсора по вертикали с помощью функции 01Н установите в регистрах следующие значения:
в СН (биты 4—0) — вершина курсора (начальная закрашенная строка);
в СL(биты 4—0) — нижний край курсора (конечная закрашенная строка).
В следующем примере курсор увеличивается до максимального размера (0:14):
Операция не возвращает значений. После ее выполнения курсор примет вид закрашенного мигающего прямоугольника. Его размеры можно изменять в любых допустимых пределах, например, 04:08, 03:10 и т.д. Установка значения 20Н в СХ делает курсор невидимым: MOV СХ,20Н. Курсор сохраняет свои параметры до тех пор, пока они снова не будут изменены.
Функция 02н прерывания int10н: установка положения курсора
Эта операция в текстовом режиме устанавливает курсор в произвольное положение на экране согласно координатам в формате строка:столбец (функция 1ЗН также устанавливает курсор). Установите значения в следующих регистрах: ВН номер страницы (0 по умолчанию), DH=строка,DL=столбец. В нижеприведенном примере курсор устанавливается в строку 12, столбец 30 на странице 0:
Функция 0зн прерывания int10н: получение состояния курсора
Функция 0ЗН может использоваться для определения текущих столбца, колонки и размера курсора в текстовом режиме. Она может использоваться, например, в ситуациях, когда ваша программа должна временно использовать экран, а затем вернуть его в прежнее состояние. Загрузите номер страницы в BH, так же, как для функции 02H:
Операция не изменяет состояния регистров AXиBXи возвращает такие значения:
В следующем примере функция 03Hиспользуется для получения данных о курсоре; после этого функция 02Hиспользуется для перемещения курсора в следующий столбец на экране