Адаптер монохромного дисплея и принтера - часть 2
из 2000 позиций экрана. Первый символ буфера дисплея появляется в
верхнем левом углу экрана, следующие два байта изображают следующий
символ справа, и так далее. Первый символ второй строки находится в
байтах 160 и 161. Теперь можно определить адрес любого символа на
экране. Сначала определим позицию в верхнем левом углу экрана, как
находящуюся в строке 0 и колонке 0; нижний правый угол находится в
строке 24 и колонке 79. Тогда формулой вычисления адреса для
произвольной строки и позиции будет
адрес = 2*(строка*80 + колонка) + 0B0000H
Умножение на 2 выравнивает адрес к двум байтам на позицию.
Прибавление значения 0B0000H отражает начальный адрес буфера
дисплея. Обычно в программе либо регистр DS, либо регистр ES
загружается значением 0B0000H, и в остальном программа работает со
смещениями в буфере дисплея.
Значение Атрибут
----------------------------------------------------------
00H ничего не выводится
01H подчеркнутые символы
07H белый символ на черном фоне
0FH ярко-белый символ, черный фон
70H черный символ, белый фон
80H при добавлении к любому другому символ
мигает
----------------------------------------------------------
Фиг. 8.7 Символьные атрибуты для монохромного адаптера
На Фиг. 8.8 в качестве примера для монохромного дисплея
приведена программа, которая перемещает содержимое экрана на одну
позицию вправо. Она выбрасывает крайнюю справа колонку, а слева
помещает колонку из пробелов. Если вы хотите испытать эту
программу, но имеете в своей системе только цветную плату, то
программа работает при установке сегмента DISPLAY на адрес 0B800H.
Оба видео адаптера очень похожи при работе в текстовом режиме, и
различаются только адресами памяти и ввода-вывода.
Microsoft (R) Macro Assembler Version 5.00 1/1/80 04:05:26
Содержание Назад Вперед