Электронная библиотека книг Александра Фролова и Григория Фролова.
 
Библиотека
Братьев
Фроловых
Электронная библиотека книг Александра Фролова и Григория Фролова.
Библиотека системного программиста
Программирование на JAVA
ПК. Шаг за шагом
Другие книги
Восстановление данных
Антивирусная защита
Статьи для
программистов
Пользователю компьютера

Программирование видеоадаптеров CGA, EGA и VGA

© Александр Фролов, Григорий Фролов
Том 3, М.: Диалог-МИФИ, 1992, 287 стр.

[Назад] [Содеожание] [Дальше]

8.15. Запись символа в режиме телетайпа - функция 0Eh

Функция обеспечивает запись символа на экран в режиме телетайпа: символ отображается в текущей позиции курсора, после чего курсор сдвигется вправо на одну позицию. При необходимости курсор автоматически перемещается на новую строку, а когда весь экран заполняется, происходит вертикальная свертка экрана. В последнем случае верхняя строка экрана исчезает, а снизу возникает новая пустая строка и курсор помещается в ее начало.

Данная функция обрабатывает следующие управляющие символы: звуковой сигнал (BELL), возврат курсора назад на одну позицию (BACKSPACE), возврат каретки (CARRIAGE RETURN) и перевод строки (LINEFEED).

В текстовых режимах символы отображаются с атрибутами, использованными ранее. В графических режимах есть возможность задать цвет отображаемого символа.

Ниже приведен формат вызова функции:


На входе:   AH = 0Eh - запись символа в режиме телетайпа;

   AL = ASCII-код записываемого символа;

   BH = номер страницы видеопамяти (только в
      текстовых режимах)?;

   BL = цвет символа (в графических режимах).

На выходе:   Не используются.

Приведем текст процедуры WriteStringT, которая выводит на экран строку, имеющую смещение si в сегменте ds, при помощи функции 0Eh прерывания INT 10h:

WriteStringT   PROC

   ; определяем текущую активную страницу экрана

   mov   ah,0Fh
   int   10h      ; номер активной страницы в регистре bh

   ; в цикле выводим на экран символы строки

next_char:

   mov   ah,0Eh
   lodsb         ; получаем следующий символ строки
   cmp   al,0         ; находим конец строки
   je   exit_proc      ; если конец строки достигнут, то оканчиваем процедуру
   int   10h

   jmp   next_char

exit_proc:

   ret

WriteStringT   ENDP
[Назад] [Содеожание] [Дальше]


Создание интернет-магазинов: http://www.shop2you.ru/ © Александр Фролов, Григорий Фролов, 1991-2016