Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Сборка Часть2 / АВМиС / Лабораторные / Лабораторная работа_Видеоадаптер.doc
Скачиваний:
38
Добавлен:
15.09.2014
Размер:
128.51 Кб
Скачать

Лабораторная работа № 6

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

1. Цель работы

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

2. Темы для предварительного изучения

  • Организация видеопамяти в текстовом и графическом режиме.

  • Структура видеоадаптера.

3. Постановка задачи

Задания на лабораторную работу

№ 1.

Написать программу – заставку «Matrix». Работа должна производиться в текстовом режиме работы видеоадаптера. Символы выводятся сверху – вниз, цвет символа должен изменятся. Работа организуется напрямую c памятью видеоадаптера. Набор символов используемых для реализации задания – фамилия имя отчество и номер группы.

№ 2.

Необходимо вывести на экран 3-d объект (куб, пирамида и т.п.) и вращать его вокруг одной из осей. При работе должен использоваться графический режим работы видеоадаптера. Для прорисовки объекта на экране должны использоваться функции прерывания BIOS. Направление вращения объекта задается при помощи стрелок курсора

Теоретические сведения

Для вывода информации на экран используются следующие аппаратные средства: видеоадаптер и монитор (экран).

Сам видеоадаптер состоит из двух частей: контроллера ЭЛТ (электронно-лучевой трубки) и видеопамяти (видеобуфера). Основная задача видеобуфера - хранение образа информации экрана. Изображение на экране строиться из набора пикселов (элементы покрытия экрана). Сами пикселы объединяются в телевизионные строки.

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

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

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

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

Таблица 1 - Основные характеристики режимов работы видеоадаптера

Режим

Тип

Число

цветов

Разрешение

Начало видеобуфера

Максималь-ное число страниц

Поддерживаемые работы дисплеи

0, 1

Text

16

40х25

b8000h

8

CGA EGA VGA

Text

16/64

40х25

b8000h

8

EGA VGA

Text

16/64

40х25

b8000h

8

VGA

2,3

Text

16

80х25

b8000h

4

CGA

Text

16/64

80х25

b8000h

8

EGA VGA

Text

16/64

80х43

b8000h

8

EGA

Text

16/64

80х50

b8000h

8

VGA

Text

16/64

80х25

b8000h

8

EGA VGA

Text

16/64

80х25

b8000h

8

VGA

4,5

Графический

4

320х200(гр.)

40х25(текс.)

b8000h

1

CGA EGA VGA

6

Графический

2

640х200(гр.)

80х25(текс.)

b8000h

1

CGA EGA VGA

7

Text

Моно

80х25

B0000h

1,4

EGA VGA

Dh

Графический

16/64

320х200(гр.)

40х25(текс.)

A0000h

8

EGA VGA

Eh

Графический

16/64

640х200(гр.)

80х25(текс.)

A0000h

4

EGA VGA

Fh

Графический

Моно

640х350(гр.)

80х25(текс.)

A0000h

2

EGA VGA

10h

Графический

16/64

640х350(гр.)

80х25(текс.)

A0000h

2

EGA VGA

11h

Графический

2

640х480(гр.)

80х30(текс.)

A0000h

1

VGA

12h

Графический

16

640х480(гр.)

80х30(текс.)

A0000h

1

VGA

13h

Графический

256

320х200(гр.)

40х25(текс.)

A0000h

1

VGA

Номер бита

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-х бит. Т.о. в одном байте можно хранить информацию сразу о 4-х пикселах. Следовательно на хранение всего экрана требуется 16 000 байт. В 6 режиме поддерживается только два цвета и поэтому на хранение одного пиксела требуется 1 бит. При разрешении 640х200 потребуется тоже 16000 байт видеопамяти. Есть также и особенность хранения пикселов. Коды пикселов нечетных и четных телевизионных строк в видеобуфере CGA адаптера оказываются сгруппированными в два массива: по смещению 0 от начала памяти видеостраницы располагаются коды пикселов четных строк (0,2,4, ….); начиная с 2000h располагаются коды нечетных строк (1,3,5, …).

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

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

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

r

g

b

R

G

B

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

VGA – адаптер использует подобную схему преобразования кода цвета пиксела в реальный цвет на экране, но значение в регистре палитры задает номер DAC-регистра (регистра цифро-аналогово преобразователя). Это происходит потому что для VGA – адаптеров используются аналоговые мониторы, а не цифровые. На вход аналогового монитора подается аналоговый сигнал (уровень напряжения), соответствующий яркости основных цветов: красного, зеленого и голубого. Монитор получает шесть сигналов типа «вкл/выкл» в соответствии с шестибитовым кодом, записанным в регистре палитры. Цифро-аналоговый преобразователь имеет в своем составе 256 трехбайтовых внутренних регистров (по одному байту для красного, зеленого и синего цветов). Шесть бит байта кодируют уровень интенсивности цвета (26 = 64 оттенка яркости). Таким образом, число возможных цветов формируемых VGA- адаптером равно 64 * 64 * 64 = 262 144 цвета.

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