Методические указания по лабораторным работам по курсу «Аппаратные средства компьютерных систем», страница 19

При выводе информации на дисплей используются функции 09h, 0Ah и 0Eh. Функция 09h копирует символ и атрибут в позицию курсора. Функция 0Ah копирует только символ, оставляя неизменным его атрибут. При использовании функций 09h и 0Ah следует помнить, что необходимо смещать курсор после вывода символа. Функция 0Eh выводит символ и атрибут в режиме телетайпа, т.е. курсор после вывода символа смещается автоматически.

На рисунке 3.1 приведен фрагмент программы, выводящей ASCIZ-строку на активной видеостранице выбранным цветом с использованием функции 0Eh. На рисунке 3.2 приведен фрагмент той же программы, но уже с использованием функции 09h. В программе выделены процедуры вывода символа и атрибута на экран (TYPE) и сдвига курсора (MOVEC).

Следует знать, что существует возможность выводить информацию на дисплей, минуя прерывания BIOS, путем непосредственного обращения к видеопамяти. Адрес видеопамяти B800h, длина видеостраницы — 4 Kбайта (для режимов 2 и 3) и 2 Кбайта (для режимов 0 и 1). В режимах 2 и 3 пользователю доступно 4 страницы видеопамяти (0…3), и 8 видеостраниц (0…7) в режимах 0 и 1. Если n — номер строки, m — номер столбца, p — номер страницы видеопамяти, то адрес кода знака в памяти определяется формулами:

для режимов 0 и 1: B800h + 2048 * p +  80 * n + 2 * m;

для режимов 2 и 3: B800h + 4096 * p + 160 * n + 2 * m.

prompt DB    'Hello!',0  ;Строка сообщения

       . . .

       MOV   AH,15   ;Получить активную видеостраницу

       INT   10h

       MOV   BL,7    ;Установить атрибут

       LEA   SI,prompt ;Поместить в SI адрес строки сообщения

   L1: MOV   AL,DS:[SI] ;Выбрать символ для вывода

       CMP   AL,0    ;Конец сообщения

       JE    L2      ;Да

       MOV   AH,14   ;Вывести символ в режиме телетайпа

       INT   10h

       INC   SI      ;Сдвинуть указатель

       JMP   L1

L2:

Рисунок 3.1

prompt DB    'Hello!',0 ;Cтрока сообщения

       . . .

       MOV   AH,15   ;Получить активную видеостраницу

       INT   10h

       MOV   BL,7    ;Установить атрибут

       LEA   SI,prompt ;Поместить в SI адрес строки сообщения

       CALL  Type    ;Перейти к подпрограмме вывода