Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование видеоадаптеров EGA, VGA и SVGA.doc
Скачиваний:
136
Добавлен:
01.05.2014
Размер:
4.51 Mб
Скачать

Чтение пиксела - функция 0Dh

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

На входе:

AH

0Dh

BH

Номер страницы (для видеоадаптера CGA не используется)

CX

Координата X пиксела

DX

Координата Y пиксела

На выходе:

AL = номер цвета пиксела

Приведем фрагмент программы, который определяет номер цвета пиксела, имеющего координаты x_pos и y_pos:

mov ah,0Dh mov cx,x_pos mov dx,y_pos int 10h ; Сохраняем полученную величину mov color_number

Запись символа в режиме телетайпа - функция 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

Определение текущего режима работы видеоадаптера - функция 0Fh

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

На входе:

AH

0Fh

На выходе:

AH

Количество символов в строке

AL

Номер текущего режима

BH

Номер активной страницы видеопамяти

Бит D7 регистра AL соответствует значению бита D7 регистра AL, использованному при предыдущем выборе режима работы видеоадаптера (см. функцию 0).