- •Видеосистема
- •Введение
- •Компоненты видеосистемы
- •Монитор
- •Область памяти дисплея
- •Видеоконтроллер
- •Видео-bios
- •Видеорежимы
- •Атрибуты
- •Функции прерывания iнт 10н
- •Функция 0н прерывания int10н: установка видеорежима
- •Функция 01н прерывания int10н: установка размера курсора
- •Функция 02н прерывания int10н: установка положения курсора
- •Функция 0зн прерывания int10н: получение состояния курсора
- •Функция 05н прерывания int10н: выбор активной страницы
- •Функция 06н прерывания int10н: прокрутка экрана вверх
- •Функция 07н прерывания int10н: прокрутка экрана вниз
- •Функция 08н прерывания int10н: считывание символа и его атрибутов в положении курсора
- •Функция 09н прерывания int10н: вывод том символа и атрибутов в положение курсора
- •Функция 0ан прерывания int10н: вывод символа в положение курсора
- •Непосредственный вывод на экран
Функция 09н прерывания int10н: вывод том символа и атрибутов в положение курсора
Эта операция выводит заданное число символов с указанными атрибутами в текстовом или графическом режимах. Положение курсора определяет место вы вода символа. Для выполнения функции задайте следующие значения в регистрах.
Число в регистре СХ определяет, сколько раз должна повториться операция вывода символа из AL. В следующем примере в текстовом режиме выводятся 60 «улыбающихся лиц» (ASCII01H) с установленными атрибутами:
Операция не перемещает курсор и не реагирует на символы звукового сигнала, перевода строки, возврата каретки и табуляции; вместо этого она попытается вывести их как символы ASCII. Если в текстовом режиме вывод достигает крайнего правого символа, вывод продолжится со столбца 00 в следующей строке.
В графическом режиме ВLопределяет цвет символов. Если бит 7 равен 0, определенный цвет заменяет текущий; если бит 7 равен 1, определенный цвет сочетается (операцияXOR) с текущим.
В следующем примере выводятся десять сердечек (0ЗН) в графическом режиме:
Для вывода последовательности различных символов используется функция 13H.
Функция 0ан прерывания int10н: вывод символа в положение курсора
Единственное различие между этой функцией и функцией 09Н состоит в том, что функция 0АН не устанавливает атрибуты, а использует их текущее значение. Вот пример ее использования:
Операция ничего не возвращает.
Функция 0ВН прерывания INT10Н: установить цветовую палитру
Эта функция используется для установки цветовой палитры в графическом режиме. Значение в регистре ВН (00 или 01) определяет смысл значения в BL:
Операция сохраняет значение цвета в регистре выбора цвета и изменяет значение палитры в области видеоданных BIOSпо адресу 40:[66].
Как только палитра выбрана, она сохраняет свое значение, но при изменении палитры весь экран перерисовывается в соответствии с выбранными цветами.
Функция 0СН прерывания INT10Н: нарисовать пиксель
Функция 0СН используется для рисования пикселя выбранным цветом (фоновым и палитры) в графическом режиме. Загрузите в регистры значения:
Минимальный номер столбца или строки — 0, максимальный — зависит от выбранного видеорежима. В следующем примере пиксель рисуется на пересечении строки 50 и столбца 200:
Функция 0DHпрерыванияINT10Н: прочитать пиксель
Эта операция, обратная по действию операции 0СН, считывает точку для определения ее цвета. Установите номер страницы в BH, столбец в СХ и строку вDX. Минимальный номер столбца или строки — 0, максимальный номер зависит от выбранного видеорежима:
Функция 0ЕН прерывания INT10Н: вывод в режиме телетайпа
Эта операция позволяет использовать монитор в качестве простого терминала для вывода текста и графики. Вот пример ее вызова:
Символы Backspace(08Н), возврата каретки (00Н), перевода строки (0АН) воспринимаются как команды управления выводом, но табуляция (09Н) не воспринимается. Операция автоматически перемещает курсор, переносит символы на следующую строку, прокручивает экран и сохраняет текущие атрибуты экрана. Операция значений не возвращает.
Функция 0FН прерыванияINT10Н: получить текущий видеорежим
Эту функцию можно использовать для определения текущего видеорежима. Вот пример:
Программа: вывод на экран таблицы А8СII
Программа, приведенная на рис. 8.1, использовала функцию 09Н прерывания INT21Н для вывода набора символовASCII, но пропускала управляющие символыBackspaceзвукового сигнала, возврата каретки и перевода строки. Улучшенная программа, приведенная на рис. 9.2, использует прерываниеINT10Н для вывода полной таблицы символов с помощью следующих функций
0FH: получение и сохранение текущего видеорежима;
00H: установка видеорежима 0З для этой программы и восстановление исходного видеорежима при завершении выполнения;
08Н: считывание атрибута в текущей позиции курсора для использования функцией 06Н;
06Н: прокрутка экрана вверх для очистки всего экрана с использованием только что прочитанных атрибутов, а также создание 16-строчного окна для вывода таблицы с символами коричневого цвета и синим фоном;
02Н: установка курсора в начале вывода и перемещение его при выводе каждого следующего символа;
0АН: вывод каждого символа, включая управляющие, в текущей позиции курсора.