Консалтинговая компания Консалтер.Ру
Главная Новости Библиотека Исследования Законодательство Консалтинг Бизнес-форумы Контакты

Реклама

Рекомендуем



Консалтер.Ру > Библиотека > Информационные технологии

В.А. Авдеев, В.Ф. Гузик
Компьютеры: шины, контроллеры, периферийные устройства

Учебное пособие. Таганрог: ТРТУ, 2001. - 536 с.

Предыдущая

9. Устройство отображения информации

9.6. Графический режим

Графический режим – это режим с адресацией всех точек экрана, позволяющий получать сложные, цветные и движущиеся изображения и связанный с обработкой процессором больших массивов информации. В этом режиме каждый байт видеобуфера хранит цветные значения одного или нескольких пикселов. Если пиксел кодируется n битами видеобуфера, то на экране одновременно можно наблюдать 2n цветов. В адаптере CGA графический режим 320´200 использует 2 бита для кодирования цвета пиксела, т.е. на экране одновременно можно наблюдать 4 цвета из 16 цветов палитры. В каждом байте видеобуфера CGA хранятся значения четырех пикселов, причем левый младший пиксел в байте соответствует старшим байтам D7 и D6. В адаптере CGA реализуется прямое соответствие (без преобразования) между битами видеобуфера и пикселами экрана, а адаптерах EGA и VGA – косвенное отображение с использованием 16 регистров палитры, как и в текстовом режиме. На рис. 9.9 показаны схемы отображения содержимого видеобуферов CGA, EGA и VGA на экраны мониторов.

видеобуфер ® экран CGA

видеобуфер ® регистры палитры ® экран EGA

видеобуфер ® регистры палитры ® регистры ЦАП® экран VGA

Рис. 9.9. Схемы отображения видеобуферов на экраны CGA, EGA, VGA

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

Хранение значений пикселов в видеобуферах CGA, EGA и VGA выполняется следующим образом (рис. 9.10).

Рис. 9.10. Представление видеобуферов CGA, EGA и VGA в графическом режиме

В CGA графические данные хранятся в двух блоках видеобуфера. Первый блок с начальным адресом B800:0000h предназначен для хранения значений пикселов 100 четных строк, а второй блок с начальным адресом B800:2000h – 100 нечетных строк. Видеобуфер VGA и EGA, как уже отмечалось, в текстовом режиме состоит из четырех блоков или двоичных плоскостей 0 – 3, адресуемых параллельно, т.е. адрес относится к четырем байтам соответственно четырех плоскостей. Если в CGA возможен прямой доступ к видеобуферу, то в EGA и VGA непосредственное обращение к видеобуферу исключено. При чтении содержимого видеобуфера VGA (EGA), связанного с выполнением команд MOV, CMP, LODS и т.д., происходит параллельная выборка четырех байтов, которые загружаются в соответствующие регистры‑защелки, т.е. байт из двоичной плоскости 0 загружается в регистр-защелку 0 и т.д. Каждый байтовый срез четырех регистров хранит 4-разрядные значения пиксела. В EGA используется 4 бита для хранения значения пиксела, а в VGA – 8 бит. Регистры‑защелки содержат 8 4-разрядных значений пикселов.

При выполнении команд MOV, CMP, LODS и т.д., П осуществляет запись данных в видеобуфер при указании в них соответствующего адреса. При этом выполняется параллельная модификация байт во всех четырех плоскостях с учетом содержимого четырех регистров‑защелок и байта данных П. Регистры-защелки представляют собой ортогональную память, допускающую обращение как по байтам, так и по разрядам (пикселам) всех байтов, что упрощает программирование графического режима. Передачами данных между П, регистрами-защелками и видеобуфером управляет графический контроллер со средствами маскирования, реализующий с помощью программно доступных регистров пикселные и байтные операции.

Как уже отмечалось, графический режим называют режимом АРА (All Points Addressable) с адресацией всех точек. В этом режиме видеопамять хранит битовый образ пикселного представления изображения на экране. Каждый байт видеопамяти хранит значение одного или значения нескольких пикселов, причём нумерация битов и пикселов противоположная, т.е. самому левому, младшему, пикселу соответствуют старшие биты байта. Число одновременно наблюдаемых цветов на экране определяется числом битов, соответствующих каждому пикселу. Так, например, в 16-ти цветном графическом режиме под любой пиксел отводится четыре бита. Если разрешающая способность цветного режима АРА 640´480, то необходимый объем страницы видеопамяти равен

(640´480´4)´18=153600 байтов.

Характеристики графических режимов адаптера VCA приведены в табл. 9.5.

Таблица 9.5

Номер режима

Разрешающая способность

Начальный адрес видеопамяти

Число байтов в странице

Цвета

Текстовый формат

Размер матрицы символа

4,5

320 x 200

B8000

2000

4

40 x 25

8 x 8

6

640 x 200

B8000

16000

2

80 x 25

8 x 8

D

320 x 200

A0000

32000

16

40 x 25

8 x 8

E

640 x 200

A0000

64000

16

80 x 25

8 x 8

F

640 x 350

A0000

56000

Моно

80 x 25

8 x 14

10

640 x 350

A0000

112000

16

80 x 25

8 x 14

11

640 x 480

A0000

38000

2

80 x 30

8 x 16

12

640 x 480

A0000

153600

16

80 x 30

8 x 16

13

320 x 200

A0000

64000

256

40 x 25

8 x 8

Из табл. 9.5 видно, что на рост емкости страницы видеопамяти влияют увеличение разрешающей способности и количество одновременно наблюдаемых цветов.

Режимы 4, 5 и 6 необходимы для реализации стандартов CGA, а режимы D, G, F и 10 – для поддержания стандарта EGA. Стандарту VGА принадлежат режимы 11, 12, 13, из которых наиболее употребительным является режим 12.

Видеопамять в зависимости от режима может иметь одну, две или четыре битовых плоскостей. Битовые плоскости иначе ещё называют банками. На рис. 9.11 показана организация видеопамяти в виде четырёх битовых плоскостей (0–3) для режимов D, E, 10, 12 (рис. 9.11, а), двух плоскостей, например, 0 и 2 для режимов 4 и 5 (рис. 9.11, б) и одной плоскости для режимов 6 и 11 (рис. 9.11, в).

Рис. 9.11. Организация видеопамяти для режимов D, E, 10 и 12а),
режимов 4, 5 б) и режимов 6 и 11 в)

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

На рис. 9.12 для 16-цветного режима изображена схема связи битовых плоскостей с соответствующими 8-битовыми режимами-защелками R0-R3.

Рис. 9.12. Схема связи двоичных плоскостей 0-3 видеопамяти с регистрами-защелками R0-R3

Считанный из битовых плоскостей битовый срез байтов определяет количество одновременно наблюдаемых цветов. Таким образом, цвет пиксела на экране обуславливается четырьмя битами (рис. 9.11, а), двумя битами (рис. 9.11, б) или одним битом (рис. 9.11, в) с учетом шестнадцати 6-битовых регистров палитры атрибутного контроллера, т.е. указанные 4, 2 или 1 бит задают номер цвета в соответствующем регистре палитры. Для двух- или четырехцветного режимов используются первые 2 или 4 регистра палитры. Затем 6-битовое значение выбранного регистра палитры преобразуется в 8-битовый индекс (адрес) для доступа к одному из двухсот пятидесяти шести 18-битовых регистров ЦАП. Каждый 18-битовый регистр хранит определенный цвет и содержит три 6-битовых части, соответствующие красному, зеленому и синему цветам. В регистры ЦАП записывается таблица цветов, которую можно программно изменить.

В режиме 13 атрибутный контроллер не участвует. В этом случае каждый байт видеопамяти поступает непосредственно в ЦАП для выбора желаемого цвета пиксела с помощью таблицы цветов.

В адаптере VGA обработку данных, передаваемых между процессором и видеопамятью, выполняет графический контроллер, содержащий 9 регистров, доступ к которым осуществляется через регистр данных (3CFh) и регистр индекса (3CEh), выбирающего желаемый регистр. К числу регистров графического контроллера относятся: регистр установки/сброса (индекс 0), индекс разрешения установки/сброса (индекс 1), регистр сдвига данных (индекс 3), регистр режима (индекс 5) и регистр маски битов (индекс 8).

Адаптер реализует 3 режима записи и 2 режима чтения из видеопамяти. По умолчанию BIOS устанавливает режим записи 0 и режим чтения 0. При осуществлении режима записи необходимо предварительно в регистры-защелки загрузить текущее содержимое байтов видеопамяти. В регистре режима биты 0-1 задают режимы записи (00 – режим записи 0, …, 11 – режим записи 3), бит 3 указывает на режим чтения (0 – режим чтения 0, 1 – режим чтения 1).

Рассмотрим выполнение наиболее сложного режима записи 0. Для реализации этого режима секвенсер адаптера содержит регистр маски карты (индекс 2). Секвенсер координирует передачу данных из видеопамяти или графического контроллера в атрибутный контроллер и имеет 5 программно-доступных регистров, обращение к которым выполняется с помощью регистра данных (3C5h) и регистра индекса (3С4h), предназначенного для выбора конкретного регистра по его индексу.

Регистр маски битов (индекс 8) графического контроллера используется для защиты соответствующих битов регистров-защелок от воздействия содержимого регистра данных процессора, например AL. Если в регистре маске битов разряды D0=D1=D3=0, то в регистрах-защелках запрещается изменение битов D0, D1 и D3. Единичное значение какого-либо бита регистра маски битов разрешает модификацию соответствующих битов в регистрах-защелках.

Рассмотрим следующий пример. Пусть необходимо представить пиксел коричневого цвета в строке 0 и столбце 1 экрана в режиме записи 0. На рис. 9.13 изображена схема очистки текущего содержимого регистров-защелок. Рис. 9.13 показывает выбор первых байтов в битовых плоскостях видеопамяти по его начальному адресу. Затем в регистре маске устанавливается код 010…0b, маскирующий все биты, кроме шестого, в регистрах-защелках. После этого необходимо выполнить чтение содержимого видеопамяти в регистры-защелки путем выполнения команды MOV AL,ES:[BX], причем содержимое регистра AL здесь игнорируется. После этого в регистр AL заносится нулевое значение и выполняется команда MOV ES:[BX],AL, которая очищает шестой битовый срез в регистрах-защелках (шестые биты в первых байтах двоичных плоскостей (3-0) видеопамяти).

Рис. 9.14 показывает вывод пиксела коричневого цвета на экран.

Рис. 9.13. Схема очистки битового среза регистров-защелок
и фрагмент программы

Рис. 9.14. Схема вывода пиксела на экран и фрагмент программы

Вначале устанавливается код 0110 в регистре маски карты, задающий коричневый цвет выводимой точки. Код в регистре маски карты определяет цвет пиксела на экране. После этого любое значение с D6=1 в регистре AL при выполнении команды MOV ES:[BX],AL устанавливает требуемую точку коричневого цвета на экран. Если в регистре маски карты поместить код 0001 или 0010, то это будет соответствовать изображению на экране точки синего или зеленого цвета.

При выполнении операции записи пиксела в видеопамять необходимо выполнить следующие действия:

- установить тип графического режима с помощью функции 0 прерывания Int 10h;

- задать режим записи 0 в регистре режима графического контроллера.

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

Здесь следует отметить, что при выполнении процессором команд: MOV RG,VRAM, CMP RG,VRAM или AND RG,VRAM из четырех двоичных плоскостей видеопамяти по одному и тому же заданному в команде адресу видеопамяти извлекаются четыре байта, которые затем автоматически помещаются в соответствующие регистры-защелки.

Аналогичным образом при выполнении, например, команды: MOV VRAM,RG производится модификация содержимого регистров-защелок и параллельная запись их в битовые плоскости по заданному в команде адресу видеопамяти.

В режиме записи 0 на формирование данных выводимых из регистров-защелок в битовые плоскости видеопамяти в режимах D, E, 10 и 12 влияет содержимое регистра маски битов, регистра маски карты, регистра установки/сброса, регистра разрешения установки/сброса, регистра данных процессора и регистра сдвига данных (рис. 9.15)

Рис. 9.15. Структурная схема реализации режима записи 0

Регистр установки/сброса, содержащий биты В0-В3 по числу регистров-защелок, управляет установкой единичных значений или сбросом в нулевое состояние битов выбранных регистров-защелок. Так, если в регистре установки/сброса бит В3=0 и бит В0=1, то все немаскируемые биты третьего регистра-защелки сбрасываются в нулевое состояние, а немаскируемые биты нулевого регистра-защелки устанавливаются в единичное состояние. Работа регистра установки/сброса координируется регистром разрешения установки/сброса. Если, например, в регистре разрешения установки/сброса бит В3=1, то это соответствует разрешению работы бита В3 регистра установки/сброса.

Регистр установки/сброса обладает более приоритетным воздействием на значения регистров-защелок, чем регистр маски карты, т.е. разрешенный бит регистра установки/сброса запрещает действие одноименного бита регистра масок карты. Если в регистре маски карты какой-либо бит равен нулю, то этот бит защищает соответствующий регистр-защелку от записи в него значения регистра данных процессора с учетом того, что одноименный бит регистра установки/сброса неразрешен.

Таким образом, передача содержимого регистра данных процессора осуществляется в немаскируемые биты немаскируемого регистра-защелки с запрещенным сбросом или установкой его битов.

Более сложные операции над содержимым регистров-защелок выполняются с использованием регистра сдвига данных, в формате которого биты 0-2 определяют количество сдвигов вправо в выбранном регистре-защелке и биты 3-4 задают логические функции И, ИЛИ и исключающее ИЛИ. По умолчанию биты регистра сдвига равны 0.

Наиболее простым является режим записи 1. В этом режиме содержимое регистров-защелок передается в соответствующие выбранные байты битовых плоскостей видеопамяти без использования дополнительных регистров маскирования. Режим записи 1 наиболее пригоден для организации сдвигов изображения на экране путем считывания байтов битовых плоскостей видеопамяти в регистры-защелки и перезаписи их в видеопамять по новому адресу. На рис. 9.16 показана схема реализации режима записи 1 и фрагмент программы копирования содержимого одной строки в другую.

Режим записи 1, как и любой другой режим, устанавливается по известной методике, связанной с доступом к регистру режима графического контроллера:

MOV DX , 3CEh ; задаем регистр индекса

MOV AL , 5 ; указываем индекс регистра режима

OUT DX , AL ;

INC DX ; устанавливаем адрес регистра данных

MOV AL , 1 ;

OUT DX , AL

Рис. 9.16. Схема реализации режима записи 1 и фрагмент программы
копирования из одной области VRAM в другую

В режиме записи 2 младшие четыре бита регистра AL процессора выполняют те же функции, что и разряды 4-битного регистра маски карты в режиме записи 0, т. е. определяют цвет пиксела экрана (рис. 9.17).

Рис. 9.17. Схема реализации режима записи 2

Программа установок пиксела заданного цвета на экране в режиме записи 2 почти аналогична программе того же назначения, что и для режима записи 0. В режиме записи 2 может быть использован и регистр установки/сброса (на рис. 9.17 этот регистр не показан).

В режиме записи 3 байт данных в регистре AL процессора может быть сдвинут вправо на заданное число битов, которое определено в регистре сдвига данных. После этого полученный результат объединяется по И с содержимым регистра маски битов и затем используется в качестве маски битов регистров-защелок. Действие разрешенных битов регистра установки/сброса аналогично действию битов этого регистра в режиме записи 0.

Адаптер VGA (EGA) выполняет два режима чтения 0 и 1.

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

Рис. 9.18. Схема реализации режима чтения 0

Режим чтения 0 или 1 определяется значением бита 3 регистра режима графического контроллера. Для доступа к этому регистру необходимо записать индекс 5 в регистр адреса (порт 3СЕh), а в регистр данных (порт 3CFh) значение бита 3, равное 0 или 1.

Режим чтения 1 заключается в том, что каждый битовый срез регистров-защелок, считанных четырех байтов из битовых плоскостей 0-3 видеопамяти сравнивается с 4-битовым кодом заданного цвета, предварительно записанного в регистр сравнения цвета (индекс 2). В том случае, если сравниваемые коды совпадают, то в регистре AL процессора соответствующий бит устанавливается в 1, в противном случае – сбрасывается в 0. Таким образом, режим чтения 1 позволяет определить цвет пиксела на экране. Для выполнения этого режима, кроме того, применяется 4-битовый регистр безразличия цвета, позволяющий игнорировать некоторые биты кода цвета. Регистру безразличия цвета присвоен индекс 7, засылаемый в регистр адреса (порт 3CEh). Сброс бита этого режима с помощью порта 3CFh приводит к игнорированию соответствующей битовой плоскости. На рис. 9.19 показана схема выполнения режима чтения 1.

Рис. 9.19. Схема реализации режима чтения 1

Предыдущая

Похожие материалы:
Графические режимы дисплея
Графитировщик асбестовых технических изделий (Часть №2 выпуска №36 ЕТКС)
Графитировщик
Графический режим принтера. Символы псевдографики
Графопостроители (плоттеры) - Авдеев В.А. и др., 2001
Гример-пастижер



О сайте   Авторам   Реклама и услуги   Контакты
Copyright © 2007-2021, Консалтер.Ру