Функции BIOS для работы с экраном
Запись символа в видеопамять (0Ah int 10h)
Функция 0Ah предназначена для записи ASCII-кода символа с текущим значением атрибута в данной позиции непосредственно в видеопамять, причем сделать это можно с количеством повторений, заданных в регистре СХ.
Вход: АН = 0Ah – запись символа в текущую позицию курсора;
- ВН = номер видеостраницы;
- AL = ASCII-код символа;
- СХ = число повторений.
Аналогично функции 09h текущая позиция курсора не изменяется.
Запись символа в режиме телетайпа (0Eh int 10h)
Функция 0Eh выводит символ в текущую позицию курсора с автоматическим ее смещением (в отличие от функций 09h и 0Ah).
Вход: АН = 0Eh – запись символа в текущую позицию курсора;
- ВН = номер видеостраницы;
- AL = ASCII-код символа;
- СХ = число повторений.
Запись символа в последнюю позицию строки автоматически переводит курcop в первую позицию следующей строки.
Вывод строки (13h int 10h)
Эта функция появилась в BIOS компьютеров архитектуры AT.
Вход: АН = 13h вывод строки (AT);
- AL = режим записи:
- бит 0 – после вывода курсор в конец строки;
- бит 1 – каждый символ в строке представлен двумя байтами: байтом с ASCII-кодом и байтом-атрибутом;
- бит 2..7 – резерв;
- ВН = номер видеостраницы;
- BL = байт атрибут, если строка содержит только символы (AL. 1=0);
- СХ = число символов в строке;
- DH, DL = строка и столбец начала вывода строки;
- ES: ВР – адрес в памяти начала строки.
Обратите внимание, что содержимое строки для вывода может быть двух типов: с байтом-атрибутом, сопровождающим каждый символ строки, и без байта-атрибута. В последнем случае строка состоит из одних кодов символов с единым значением байта-атрибута, указываемым в регистре BL.
Как видно из рассуждения выше, многие функции BIOS работают непосредственно с видеопамятью. Из-за того что для видеопамяти отводится определенный диапазон адресов (для текстового режима – это 0b800h:0000h), доступ к ней можно производить обычными командами работы с памятью микропроцессора, в том числе и цепочечными.