Assembler для начинающих


         

Адаптер монохромного дисплея и принтера - часть 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



Содержание  Назад  Вперед