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

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

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