Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АВМиС - Готовые шпоры.doc
Скачиваний:
145
Добавлен:
15.09.2014
Размер:
1.75 Mб
Скачать

59.Организация вывода информации на экран дисплея через память видеоадаптера.

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

Важной характеристикой работы видеоадаптера является количество поддерживаемых им режимов. MDA (монохромный видеоадаптер) самый старый. Он может работать в режимах 0 и 1. После него появился CGA (цветным графическим адаптером) (работает в режимах 0 - 6). Следующий за CGA появился EGA (улучшенный цветной дисплей) адаптер. Он поддерживает режимы, начиная с 0 и заканчивая 10h. Режимы, которые начинаются с 11h и выше поддерживает VGA – адаптер.

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

При работе видеоадаптера в текстовом режиме весь экран рассматривается как набор элементов (текстел). Каждому такому элементу соответствует два байта видеобуфера. Четный байт содержит ASCII-код символа, а нечетный байт – его атрибуты (цвет очертания пикселя, цвет фона).

Номер бита

7

6

5

4

3

2

1

0

Bl

r

g

B

i

r

g

b

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

Мерцание символа(1 – включено, 0 - выключено) Яркость символа (1 – повышенная, 0 - нормальная)

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

Видеопамять адаптера, при его работе в текстовом режиме, доступна для непосредственного доступа из программы. Таким образом, как и при работе с обычной памятью, каждую ячейку видеопамяти можно прочитать или записать туда какие то данные. CGA адаптер, с 16 К байт видеопамяти, содержит 4 страницы видеопамяти. Вывод информации на экран со страницы происходит с некоторого начального адреса, которое называется смешением до видеостраницы. Страница 0 имеет нулевое смещение. Следующая страница имеет смещение 4К байт. При изменении начального смещения происходит переключение страницы, т.е. обновляется экран.

Работая в графическом режиме, мы управляем цветом выводимого пиксела. Сам экран представляет собой матрицу пикселов. Число строк и столбцов пикселов зависит от текущего режима работы видеоадаптера. В процессе работы видеоадаптер хранит коды цветов пикселов в видеобуфере.

В режимах 4 – 6 можно напрямую обратиться к видеопамяти (эти режимы называются CGA режимы). В режимах 4 и 5 (320х200) пикселы могут отображаться 4 различными цветами. Поэтому для кодирования одного пиксела достаточно 2-х бит. В 6 режиме поддерживается только два цвета и поэтому на хранение одного пиксела требуется 1 бит.

При работе адаптера в графических EGA-режимах (0Dh – 10h) меняется логика использования видеопамяти адаптера. Теперь каждому пикселу соответствует 4 бита в видеопамяти. Одному и тому же адресу соответствует 4 байта на битовых планах (I-, R-, G-, B- планы). Эти 4 байта в совокупности кодируют 8 смежных пикселов одной телевизионной строки. Любому пикселу экрана соответствует один бит на каждом из планов.

Этот код цвета пиксела (для EGA-режима) – это номер одного из 16 специальных внутренних регистров адаптера, которые называются регистрами палитры. Регистры палитры EGA-адаптера шестиразрядные, и могут задавать один из 64 возможных цветов.

Структура этого регистра следующая:

r

g

b

R

G

B

Строчные буквы определяют половинную интенсивность нормального цвета (r – красный, g – зеленый, b - голубой), а прописные – нормальную интенсивность соответствующего цвета. Результирующий цветовой сигнал образуется сложением сигналов цвета, управляемых каждым из 6 бит кода цвета. В результате для каждого из основных цветов существует три градации цвета: половинная, нормальная и полуторная.

VGA – адаптер использует подобную схему преобразования кода цвета пиксела в реальный цвет на экране, но значение в регистре палитры задает номер DAC-регистра (регистра цифро-аналогово преобразователя).

В режиме 13h можно отображать сразу 256 цветов, используя для кодирования цвета одного пиксела целый байт видеопамяти. Так же как и в CGA–режимах для данного режима есть возможность напрямую работать с видеобуфером. Однако в режиме 13h, как и в EGA – режимах, коды всех пикселов расположены начиная с адреса А0000h.

Запись напрямую в видеопамять.

Начальный адрес видеопамяти для режимов 4,5,6 – b800:0000h, для режима 13h – a000:0000h, и все эти режимы поддерживают одну страницу видеопамяти.

Для примера осуществим вывод пиксела на экран для режима 13h.

Пример:

offset = 320*y + x;

_ES = 0xA000;

*offset = color;