Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
IPU_GOS_OK.doc
Скачиваний:
61
Добавлен:
12.03.2015
Размер:
2.27 Mб
Скачать

24. Формирование сигналов r, g, b для монитора при работе видеоадаптера cga в текстовом режиме.

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

В текстовом режиме используется алфавитно-цифровой метод формирования изображения. Суть метода заключается в том, что изображение на экран дисплея строится из отдельных фрагментов выводимых символов (букв, цифр, математических знаков, графических элементов и др.). Каждый фрагмент представляется в виде матрицы, имеющей вид прямоугольника стандартных размеров и состоящей из определенного числа ячеек. Каждая ячейка представляет собой битовый сигнал 0 или 1

В текстовом режиме экран дисплея делится на отдельные знакоместа, в каждое из которых может быть помещен символ. Экран разбивается на 25 строк по 80 знакомест в каждой строке, чем обеспечивается вывод одновременно до 2000 символов.

В процессе работы по заданной программе записываются прообразы символьных и графических изображений, выдаваемых на экран дисплея в специальную область оперативной памяти, которая называется видеопамятью или буфером экрана. В текстовом режиме для каждого символа нужно хранить код символа и атрибут символа, т.е. указание, как изобразить символ. Поэтому каждому символу соответствуют два байта: в первом из них записывается, что следует изобразить (код символа), во втором - как это изобразить (код атрибута символа). Так как в текстовом режиме на экран одновременно выводятся 2000 символов, то для запоминания информации полного экрана требуется 4 Кбайт видеопамяти.

M

R

G

B

I

R

G

B

Цвет фона Цвет символа

Мигание Интенсивность

Установка бита яркости в "1" делает цвет символа более светлым. Всего можно получить 16 цветов символа. Если бит мерцания установлен в "1", символ начинает мерцать с частотой приблизительно 4 раза в секунду.

25.Программа прерывания int 16h (поддержка клавиатуры). Операции программы.

Команда BIOS INT 16H выполняет специальную операцию, которая в

соответствии с кодом в регистре AH обеспечивает следующие три функции

ввода с клавиатуры.

AH=00: Чтение символа. Данная функция помещает в регистр AL oчередной

ASCII символ, введенный с клавиатуры, и устанавливает скэн-код в регистре

AH. (Скэн-коды объясняются в следующем разделе). Если на клавиатуре нажата

одна из специальных клавишей, например, Номе или F1, то в регистр AL

заносится 00. Автоматическое эхо символа на экран по этой функции не

происходит.

AH=01: Определение наличия введенного символа. Данная функция

сбрасывает флаг нуля (ZF=0), если имеется символ для чтения с клавиатуры;

очередной символ и скэн-код будут помещены в регистры AL и AH

соответственно и данный элемент останется в буфере.

AH=02: Определение текущего состояния клавиатуры. Данная функция

возвращает в регистре AL состояние клавиатуры из адреса памяти шест.417:

Прерывание INТ 16Н может быть использовано программистом.

В данном примере проверяется статус клавиши «Insert» и, если режим вставки выключен, установить бит В7 в «1»:

mov ah,2 ; номер функции

int 16h ; получаем байт статуса

test al, 10000000B ; проверка бит В7

jz INSERT OFF ; если бит В7=0, то режим Insert выключен

Установка бита В7 в «1»:

INSERT OFF: mov ax, 0 ; установка сегмента данных

mov es, ax ; на начало памяти

mov al, 10000000B ; подготовка бита В7 к установке в «1»

or es:[417H] ,al ; установка бита В7 в ячейке статуса.

Рассмотрим пример составления резидентной программы, которая модифицировала бы значения, возвращаемые функцией 0 прерывания INT 16Н, следующим образом. Если на клавиатуре нажата клавиша “1” (скэн-код - 2, код символа - 31Н), то эта функция должна вернуть скэн-код 11 и код символа 30Н, т.е. параметры клавиши "0". Тогда в ПK должен быть введён символ "0", а не "1".

Пример такой программы:

.model tiny ; объявление малой модели

.code ; сегмент кола

jmp start ; новый обработчик для INT 16Н

new: jmp nach ; адрес стандартного прерывания INT 16Н

v1 dw 0

v2 dw 0

nach: sti ; установка флага прерываний

pushf ; сохранение флагов в стеке

cmp ah, 0 ; проверка типа операции прерывания

jne kon ; INT 16Н

popf

pushf ; вызов стандартного прерывания INT 16Н

call dword ptr cs:[vl]

cmp ah, 2 ; проверка скэн-кода клавиши

jne kon1

cmp al, 31 ; проверка кода символа

jne kon1

mov ax, 0B30H ; присвоение новых параметров

kon1: iret ; выход из прерывания

kon: popf ; передача управления стандартному

jmp dword ptr cs:[vl] ; прерыванию INT 16H

; замена адреса программы прерывания INT 16H

start: push cs ; объединение сегментов кода и данных

pop ds

mov ax, 3516H ; сохранение адреса стандартного

int 21H ; прерывания INT 16H в v1и v2

mov v1, bx

mov v2, es

mov ax, 2516H ; замена вектора стандартного

lea dx, new ; прерывания INT 16H на новый

int 21H ; вектор

mov dx, 30 ; закончить и остаться резидентным

mov ax, 3100H

int 21H

end

Различные программные процедуры обработки нажатия клавиш, позволяющие решить некоторые проблемы при работе с клавиатурой, приведены в работе: Джордейн Р. Справочник программиста персонального компьютера типа IBM PC, XT и AT.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]