Иллюстрированный самоучитель по задачам и примерам Assembler

Функции BIOS для работы с экраном

Кодировка байта-атрибута в этой и других функциях производится в соответствии со следующими таблицами.

Номера битов Значение
7 Мигающий символ
6..4 Цвет фона
3 Символ яркого цвета
2..0 Символ цвета
Биты Цвет Яркий цвет
000b Черный Темно-серый
001b Синий Светло-синий
010b Зеленый Светло-зеленый
011b Голубой Светло-голубой
100b Красный Светло-красный
101b Пурпурный Светло-пурпурный
110b Коричневый Желтый
111b Светло-серый Белый

Чтение символа и его атрибута из видеопамяти (08h int 10h)

В памяти видеоадаптера каждый символ представлен двумя байтами, содержащими ASCII-код символа и его байт-атрибут. Функция 08h BIOS позволяет прочитать код символа и его атрибут непосредственно из видеопамяти.

Вход: АН = 08h – чтение символа и его атрибута в текущей позиции курсора;

  • ВН = номер видеостраницы.

Выход: AL = ASCII-код символа;

  • АН = байт-атрибут.

Ниже приведена программа, которая устанавливает курсор в заданную позицию.

:prg05_04.asm. устанавливающая курсор в заданную позицию.
.code main:
xorbh.bh
mov dh.10
movdl.10
movah.02h
int 10h установили позицию курсора (10.10) записываем символ и атрибут в видеопамять
moval. "a"
mov bl,10001100b:атрибут – ярко-красный мигающий
movcx.5;повторить 5 раз
movah.09h
int 10h:прочитаем символ из текущей позиции видеопамяти:
mov ah,08h
int 10h: выясним текущую позицию курсора
хоr bh.bh
mov ап.О3n
kint 10h установили позицию курсора (10.10)
:все результаты смотрим в отладчике

Важно отметить, что текущая позиция курсора после выполнения функций 08п и 09п осталась неизменной. Отсюда следует важный вывод о том, что при использовании этих функций необходимо также заботиться и о движении курсора функцией 02h. BIOS предоставляет функцию 0Eh, которая выводит символ в режиме телетайпа, предполагающем автоматическую корректировку текущей позиции курсора после вывода символа.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.