При выводе информации на дисплей используются функции 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 ;Перейти к подпрограмме вывода
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.