Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых

Программирование видеоадаптеров.

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

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

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

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

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

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

В графических режимах цвет отображаемого символа задается регистром BL. Если бит D7 регистра AL содержит единицу, то пикселы символа накладываются на текущее содержимое экрана по логике булевой операции ИСКЛЮЧАЮЩЕЕ ИЛИ (за исключением режима 13h).

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

На входе:

AH

0Eh - запись символа в режиме телетайпа

 

AL

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

 

BH

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

 

BL

Цвет символа (в графических режимах)

На выходе:

 

Не используются

Приведем текст процедуры WriteStringT, которая выводит на экран строку, имеющую смещение SI в сегменте DS, при помощи функции 0Eh прерывания INT 10h (листинг 5.3).

Листинг 5.3. Файл WRITESTR.C


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
[Назад] [Содеожание] [Дальше]