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