регистр AL и скэн-код клавиши в регистр AH.
ВОПРОСЫ ДЛЯ САМОПРОВЕРКИ
________________________________________________________________
9.1. Определите атрибуты экрана для а) мигания с подчеркиванием, б)
нормальной яркости, в) инвертирования с выделением яркостью.
9.2. Составьте процедуры для а) установки режима экрана BW
(черно-белый) на 80 столбцов, б) установки вида курсора, начинающегося на
5 линии сканирования и заканчивающегося на 12 линии, в) прокрутки экрана
на 10 строк, г) вывода десяти мигающих символов штриховки с половиной
точек (шест. B1).
9.3. Напишите скэн-коды для следующих функциональных клавишей: а)
стрелка вверх, б) клавиша F3, в) Home, г) PgUp.
9.4. Используя отладчик DEBUG, проверьте воздействие на содержимое
регистра AX при нажатии клавишей на клавиатуре. Для ввода ассемблерных
команд используйте команду A 100 (Return). Ведите следующие команды:
MOV AH,00
INT 16H
JMP 100
Используя команду U 100,104, дисассемблируйте программу и с помощью G 104
выполните команды MOV и INT. На команде INT выполнение программы
остановиться и система перейдет в ожидание вашего ввода. Для проверки
регистра AH нажмите любую клавишу. Продолжая вводить команду G 104, и,
нажимая различные клавиши, проверьте работу программы. Для выхода введите
команду Q.
9.5. Составьте команды для определения нажатия клавиши: если нажата
клавиша PgDn, то необходимо установить курсор по координатам - строка 24 и
столбец 0.
ГЛАВА 10 Экранные операции III: Цвет и графика
__________________________________________________________________________
Ц е л ь: Показать расширенные возможности компьютера, связанные с
использованием цвета и графики на экране.
ВВЕДЕНИЕ
________________________________________________________________
Данная глава знакомит с использованием цвета для текстового и
графического режимов. Существуют следующие три типа видео монитоpов,
используемые для изображения цветной графики (в порядке возpастания
стоимости и качества):
1. Немодифицированный цветной телевизионный приемник (обычный
домашний телевизор), применяемый многими для своих компьютеров.
2. Комбинированный видеомонитор, принимающий цветовой сигнал без
радиочастотной модуляции, и используемый для передачи по радиоволнам.
Обеспечивает высокое качество изображения.
3. RGB-монитор, посылающий входные сигналы на три раздельные
электронные пушки - красную, зеленую и синюю для каждого из трех
основных цветов. Являясь наиболее дорогим, RGB-монитор обеспечивает
наилучшее качество изображения.
Стандартный адаптер для цветного графического монитора (CGA -
Color/Graphics Adapter) использует 16К байт памяти, начинающейся по адресу
шест.B8000, 8К байт - для символов и 8К байт для их атрибутов. При работе
в формате 80х25 адаптер может хранить четыре страницы (0-3) дисплейного
буфера по 4К байт каждая. При работе в формате 40х25 адаптер может хранить
восемь страниц (0-7) по 2К байт каждая. По умолчанию используется нулевая
страница (в начале дисплейной памяти). Программа может вывести на экран
любую страницу и в это время формировать другую страницу в памяти для
последующего вывода на экран.
Усовершенствованный графический адаптер (EGA - Enhanced Graphics
Adapter) обеспечивает более высокую разрешающую способность, по сравнению
со стандартным цветным адаптером (CGA) и в большинстве случаев является
совместимым с ним. Разрешающая способность обеспечивает 320х200, 640х200 и
640х350 точек на экране.
Цветные адаптеры имеют два основных режима работы: текстовой
(алфавитно-цифровой) и графический, и возможны также дополнительные режимы
между двумя основными. По умолчанию используется текстовой режим.
Установка режима описана в главе 9 в разделе "Преpывание BIOS INT 10H"
(AH=0). Для установки графического режима или возврата в текстовой режим
используется прерывание BIOS INT 10H, как это показано в двух следующих
примерах:
MOV AH,00 ;Режим MOV AH,00 ;Режим
MOV AL,03 ;Цвет+текст MOV AL,04 ;Графика среднего
INT 10H INT 10H ; разрешения
ТЕКСТОВЫЙ (АЛФАВИТНО-ЦИФРОВОЙ) РЕЖИМ
________________________________________________________________
Текстовой режим предназначен для обычных вычислений с выводом букв и
цифр на экран. Данный режим одинаков для черно-белых (BW) и для цветных
мониторов за исключением того, что цветные мониторы не поддерживают
атрибут подчеркивания. Текстовой режим обеспечивает работу с полным
набором ASCII кодов (256 символов), как для черно-белых (BW), так и для
цветных мониторов. Каждый символ на экране может отображаться в одном из
16 цветов на одном из восьми цветов фона. Бордюр экрана может иметь также
один из 16 цветов.
Цвета
-------
Тремя основными цветами являются красный, зеленый и синий. Комбинируя
основные цвета, друг с другом, можно получить восемь цветов, включая
черный и белый. Используя два уровня яркости для каждого цвета, получим
всего 16 цветов:
I R G B I R G B
Черный 0 0 0 0 Серый 1 0 0 0
Синий 0 0 0 1 Ярко-синий 1 0 0 1
Зеленый 0 0 1 0 Ярко-зеленый 1 0 1 0
Голубой 0 0 1 1 Ярко-голубой 1 0 1 1
Красный 0 1 0 0 Ярко-красный 1 1 0 0
Сиреневый 0 1 0 1 Ярко-сиреневый 1 1 0 1
Коричневый 0 1 1 0 Желтый 1 1 1 0
Белый 0 1 1 0 Ярко-белый 1 1 1 1
Таким образом любые символы могут быть отображены на экране в oдном
из 16 цветов. Фон любого символа может иметь один из первых восьми цветов.
Если фон и текст имеют один и тот же цвет, то текст получается невидимым.
Используя байт атрибута, можно получить также мигающие символы.
Байт-атрибут
--------------
Текстовой режим допускает использование байта атрибута,
рассмотpенного в гл.9. В приведенной ниже таблице, атрибут BL обозначает
мигание (BLinking), RGB - соответственно красный, зеленый и синий цвет, I
- выделение яркостью:
Фон Текст
Атрибут: BL R G B I R G B
Номера битов: 7 6 5 4 3 2 1 0
Мигание и выделение яркостью относится к тексту. Ниже приведены
некоторые типичные атрибуты:
Текст по фону Бит: 7 6 5 4 3 2 1 0
BL R G B I R G B Шест.
Черный по черному 0 0 0 0 0 0 0 0 00
Синий по черному 0 0 0 0 0 0 0 1 01
Красный по синему 0 0 0 1 0 1 0 0 14
Голубой по зеленому 0 0 1 0 0 0 1 1 23
Светло-сиреневый по белому 0 1 1 1 1 1 0 1 7D
Серый по зеленому, мигание 1 0 1 0 1 0 0 0 A8
Байт-атрибут используется аналагично показанному для черно-белого
(BW) монитора. Тип монитора можно определить из программы с помощью
команды INT 11H. Для BW монитора код 07 устанавливает нормальный атрибут.
Для цветных мониторов можно использовать любую из цветовых комбинаций.
Цвет на экране сохраняется до тех пор, пока другая команда не изменит его.
Для установки цвета можно использовать в команде INT 10H функции AH=06,
AH=07 и AH=09. Например, для вывода пяти мигающих звездочек светло-зеленым
цветом на сиреневом фоне возможна следующая программа:
MOV AH,09 ;Функция вывода на экран
MOV AL,'*' ;Выводимый символ
MOV BH,00 ;Страница 0
MOV BL,0DAH ;Атрибут цвета
MOV CX,05 ;Число повторений
INT 10H ;Вызвать BIOS
ГРАФИЧЕСКИЙ РЕЖИМ
________________________________________________________________
Для генерации цветных изображений в графическом режиме используются
минимальные точки растра - пиксели или пэлы (pixel). Цветной графический
адаптер (CGA) имеет три степени разрешения:
1. Низкое разрешение (не поддерживается в ROM) обеспечивает
вывод 100 строк по 160 точек (т.е. четыре бита на точку). Каждая
точка может иметь один из 16 стандартных цветов, как описано в
предыдущем разделе "Цвета". Реализация данного режима включает прямую
адресацию контролера Motorola 6845 CRT. Для этого используются два
порта: шест.3D4 и 3D5.
2. Среднее разрешение для стандартной цветной графики
обеспечивает 200 строк по 320 точек. Каждый байт в этом случае
представляет четыре точки (т.е. два бита на точку).
3. Высокое разрешение обеспечивает 200 строк по 640 точек.
Поскольку в данном случае требуется 16К байт памяти, высокое
разрешение достигается только в черно-белом (BW) режиме. Каждый байт
здесь представляет 8 точек (т.е. один бит на точку). Нулевое значение
бита дает черный цвет точки, единичное - белый.
Заметим, что в графическом режиме ROM содержит точечные образы только
для первых 128 ASCII-кодов. Команда INT 1FH обеспечивает доступ к 1К
байтовой области в памяти, определяющей остальные 128 символов. (8 байт на
символ). Отображение графических байтов в видео сигналы аналогично, как
для среднего, так и для высокого pазрешения.
РЕЖИМ СРЕДНЕГО РАЗРЕШЕНИЯ
________________________________________________________________
При среднем разрешении каждый байт представляет четыре точки,
пронумерованных от 0 до 3:
Байт: |C1 C0|C1 C0|C1 C0|C1 C0|
Пиксели: 0 1 2 3
В любой момент для каждой точки возможны четыре цвета, от 0 до 3.
Ограничение в 4 цвета объясняется тем, что двухбитовая точка имеет 4
комбинации значений битов: 00, 01, 10 и 11. Можно выбpать значение 00 для
любого из 16 возможных цветов фона или выбрать значение 01, 10, и 11 для
одной из двух палитр. Каждая палитpа имеет три цвета:
C1 C0 Палитра 0 Палитра 1
0 0 фон фон
0 1 зеленый голубой
1 0 красный сиреневый
1 1 коричневый белый
Для выбора цвета палитры и фона используется INT 10H. Таким обpазом,
если, например, выбран фон желтого цвета и палитра 0, то возможны
следующие цвета точки: желтый, зеленый, красный и коричневый. Байт,
содержащий значение 10101010, соответствует красным точкам. Если выбрать
цвет фона - синий и палитру 1, то возможные цвета: синий, голубой,
сиреневый и белый. Байт, содержащий значение 00011011, отображает синюю,
голубую, сиреневую и белую точки.
Прерывание BIOS INT 10H для графики
-------------------------------------
Функция AH=00 команды INT 10H устанавливает графический режим.
Функция AH=11 команды INT 10H позволяет выбрать цвет палитры и вывести на
экран графический символ. Код в регистре AH определяет функцию:
AH=00: Установка режима. Нулевое значение в регистре AH и 04 в
pегистре AL устанавливают стандартный цветной графический режим: