Функции 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, которая выводит символ в режиме телетайпа, предполагающем автоматическую корректировку текущей позиции курсора после вывода символа.