Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Задание на лабораторную работу. С помощью программного приложения «Видеокарта» смоделировать различные режимы



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

Окно пользовательского интерфейса используемого приложения приведено на рис. 38. В верхней части окна расположены три вкладки: «Управление», «Экран», «Дамп памяти и регистры».

Вкладка «Управление»служит для задания режимов работы видеокарты. При ее выборе в окне пользовательского интерфейса появляется возможность установки видеорежима, инициализации видеокарты и задания содержимого видеобуфера (рис. 38)

Рис. 38. Окно пользовательского интерфейса программы «Видеокарта» (вкладка «Управление»)

 

Вкладка «Экран»служит для просмотра построенных изображений в различных режимах работы видеокарты.

Вкладка «Дамп памяти и регистры»служит для просмотра содержимого всех регистров и видеопамяти (рис. 39).

Рис. 39. Окно пользовательского интерфейса программы «Видеокарта» (вкладка «Дамп памятии регистры»)

В лабораторной работе изучаются два видеорежима:

1) режим 13h - VGA 320x200, 256 цветов;

2) режим SVGA 800x600 с 64К цветами.

Видеорежим 13h - VGA 320x200 задается номером видеослужбы 00h прерывания 10h.

В программе он устанавливается следующим образом.

В поле ввода Номер видеослужбы прерывания 10H(шест.) необходимо ввести число 00, а в поле Режим видеоподсистемы: – число 13 (рис. 40).

 

Рис. 40. Пример задания видеорежима

(режим 13h - VGA 320x200, 256 цветов)

После этого необходимо нажать кнопку Установить. Установка режима подтвердится сообщением в статусной строке (рис. 41).

 

 

Рис. 41. Ссообщение в статусной строке

Этот режим наиболее прост при прямом отображении в видео- память. Пикселы представлены в видеопамяти как массив байтов в двух измерениях, отдельный байт для каждого пиксела. Массив байтов начинается с базового адреса A000 и смещением 0000 (то есть соответствует левой верхней точке экрана) и простирается через вершину экрана на 320 байт.

Следующий байт относится к самой левой точке во второй линии экрана и так далее. Последний байт задает цвет нижней правой точки экрана с адресом A000:FA00. Отображает 256 различных цветовых индексов (рис. 42).

 

 


Рис. 42. Адреса байтов и места отображения точек на экране

 

В окне пользовательского интерфейса программы для записи данных в видеопамять (то есть отображение точки на экране) на вкладке «Управление» имеется раздел, называемый Видеобуфер (рис. 43).

В поле Базовый адрес и смещение (шест.) вводится адрес (в шестнадцатеричном формате) точки в видеопамяти. Например:
A000:0000 соответствует левой верхней точке экрана, A000:0001 – второй точке первой строки и т.д.

В поле Байт данных для записи вводится индекс регистра палитры (о нем рассказывается ниже). После заполнения всех этих полей нужно нажать кнопку Запись, и сразу же после этого появится сообщение о подтверждении в статусной строке (рис. 44).

 

 

Рис. 43. Внешний вид раздела видеобуфер

 

 

Рис. 44. Сообщение в статусной строке

Если переключиться на вкладку Экран, то можно увидеть заданную точку.

Необходимо отметить, что в режиме 13h каждый цветовой номер не задает цвет напрямую. Вместо этого он определяет номер индекса в таблице цветов, так называемой палитре. Она состоит из 256 регистров. Палитра управляется двумя портами: 3С8 – в него помещается индекс (номер) записываемого регистра таблицы цветов; 3С9 – в него записываются данные цвета как три 8-битовых числа. Запись происходит последовательно: 8-бит-красный, затем 8-бит-зеленый и 8-бит-синий, то есть RGB (red, green, blue). Индекс «0» в цветовой палитре устанавливает цвет фона экрана.

Для инициализации палитры в окне пользовательского интерфейса программы на вкладке «Управление» предназначен раздел, называемый Инициализация и управление видеокартой (рис. 45).

 

 

Рис. 45. Внешний вид раздела инициализации и управления видеокартой

 

Рассмотрим управление палитрой на примере. Всего 256 регистров, индексы их начинаются с 0, то есть от 0 до 255. Предположим, нам надо в 0-й регистр записать чисто-красный цвет (0-й регистр отвечает за цвет фона), а в 1-й – чисто-зеленый.

Порядок записи

Сначала необходимо установить индекс регистра, в который будет происходить запись, это делается с помощью порта 3С8, затем поочередно передать цвета в порт 3С9.

Устанавливаем 0-й регистр: для этого в поле Номер порта вводим 3С8, в поле Данные – индекс регистра в двоичной системе счисления– 00000000, как показано на рис. 46.

 

 

 

Рис. 46. Установка индекса регистра палитры для записи цвета

 

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

Для непосредственной записи цвета в 0-й регистр выполняются следующие действия.

В поле Номер порта вводится 3С9, в поле Данные заносим сначала интенсивность красного цвета в двоичной форме счисления (нам нужно записать чисто-красный цвет, значит, нужно поставить все единицы) – 11111111, как показано на рис. 47.

 

Рис. 47. Запись первой составляющей кода цвета в регистр палитры

 

Затем нажать кнопку Запись. Но это еще не все, так как в каждый регистр мы должны записывать обязательно все три цвета. Нам нужен красный цвет, поэтому остальные цвета (зеленый и синий) запишем с 0-й интенсивностью (яркостью), то есть 00000000 (рис. 48, 49).

Рис. 48. Запись второй составляющей кода цвета в регистр палитры

 

Нажимаем кнопку Запись.

 

Рис. 49. Запись третьей составляющей кода цвета в регистр палитры

 

Нажимаем кнопку Запись. Таким образом, запись 0-го регистра закончена. Теперь фон экрана будет красным.

Регистр 1 записывается аналогичным образом: в порт 3С8 необходимо записать 00000001, далее в порт 3С9 передаем: поле Данные: – 00000000 (красный с 0-й интенсивностью), нажимаем кнопку Запись. Поле Данные: – 11111111 (чисто-зеленый), нажимаем кнопку Запись. Поле Данные: – 00000000 (синий с 0-й интенсивностью), нажимаем кнопку Запись. Последовательность действий представлена на рис. 50-53.

 

 

Рис. 50. Установка индекса регистра палитры для записи цвета

 

Нажимаем кнопку Запись.

 

Рис. 51. Запись первой составляющей кода цвета в регистр палитры

 

Нажимаем кнопку Запись.

 

Рис. 52. Запись второй составляющей кода цвета в регистр палитры

 

 

Нажимаем кнопку Запись.

 

 

Рис. 53. Запись третьей составляющей кода цвета в регистр палитры

 

Нажимаем кнопку Запись.

Для просмотра всех регистров и видеопамяти нужно переключиться на вкладку Дамп памяти и регистры (см. рис. 39).

Теперь, если необходимо, например, вывести точку зеленого цвета на экран, в разделе Видеобуфер надо ввести в поле Байт данных для записи индекс регистра, куда был записан чисто-зеленый цвет, в нашем случае индекс этого регистра равен 1, а в двоичной системе – 00000001 (рис. 54).

 

 

 

Рис. 54. Пример задания адреса точки и ее цвета

 

Нажимаем кнопку Запись.

 

 

При переключении на вкладку «Экран» увидим зеленую точку в левом верхнем углу на красном фоне (рис. 55).

 

 

Зеленая точка

 

Рис. 55. Результат выполнения заданных настроек видеорежима

 

 

Для задания параметров режима SVGA 800x600 с 64К цветами в имитаторе видеокарты используется нижняя часть закладки Управление, ее внешний вид представлен на рис. 56.

 

 

 

Рис. 56. Внешний вид интерфейса для задания режима SVGA 800x600

 

Для установки данного режима необходимо выполнить следующие действия (рис.57): в поле ввода Номер видеослужбы прерывания 10H (шест.) вводится число 4F, в поле Подфункция видеослужбы – число 02, в поле Номер видеорежима: – число 114.

 

 

Рис. 57. Пример задания видеорежима SVGA 800x600

 

Нажать кнопку Установить.

Установка режима подтвердится сообщением в статусной строке (рис. 58).

 

 

Рис. 58. Сообщение в статусной строке

В режиме VGA 320x200 с 256 цветами для отображения видеопамяти на основное адресное пространство используются
64 000 байт, располагающихся с адреса A000h:0000h. Дальнейшее увеличение разрешения или числа цветов приводит к тому, что объем видеопамяти превышает максимальные границы сегмента в реальном режиме (65 535 байт), а затем и размер участка адресного пространства, отводимого для видеопамяти (160 Кб, от A000h:0000h до B800h:FFFFh. С адреса C800h:0000h начинается область ROM BIOS).

Чтобы вывести изображение, используется механизм переключения банков видеопамяти для реального режима. В реальном режиме вывод на экран осуществляется по-прежнему копированием данных в 64-килобайтный сегмент, обычно начинающийся с адреса A000h:0000h, но эта область памяти соответствует только части экрана.

Чтобы вывести изображение в другую часть экрана, требуется вызвать функцию перемещения окна (переключения банка видеопамяти), изменяющую область видеопамяти, которой соответствует сегмент A000h. Например, в режиме 800x600 с 64К цветами требуется 960 000 байт для хранения всего видеоизображения.

Заполнение сегмента A000h:0000h – A000h:FFFFh приводит к закраске приблизительно 1/15 экрана, перемещение окна А на позицию 1 (или переключение на банк 1) и повторное заполнение этой же области приводит к закраске следующей 1/15 экрана и т.д. (рис. 59).

 

 

 

 


Рис. 59. Пример использования механизма переключения банков

Перемещение окна осуществляется подфункцией 05 видеофункции 4Fh. В программе имитатора видеокарты банки переключаются следующим образом: в поле ввода Номер видеослужбы прерывания 10H (шест.) вводится число 4F, в поле Подфункция видеослужбы – число 05, в поле Номер видеорежима: – номер банка ( рис. 60).

Рис. 60. Пример задания для перемещения окна

Нажать кнопку Установить.

Установка окна подтвердится сообщением в статусной строке (рис. 61).

 

 

Рис. 61. Сообщение в статусной строке

 

В этом режиме запись в видеобуфер осуществляется точно так же, как было описано выше, но только записывается не байт, который указывал номер регистра палитры (в этом режиме не используется палитра, цвет указывается непосредственно в видеобуфере), а слово, то есть два байта или 16 бит, т.к. 2^16 = 64 Кбайта. Поэтому запись осуществляется только по четным адресам, например: A000:0000, A000:0002, A000:0004 и т.д.

В 16-битных режимах каждый пиксел описывается ровно одним словом и записывается на прямую в видеобуфере. Биты 0 – 4 (5 бит) содержат значение синей компоненты, биты 5 – 10 (6 бит) – зеленой, биты 11 – 15 (5 бит) – красной. Смешивание цветов точно такое же.

Отчет по лабораторной работе должен содержать:

краткий теоретический материал;

перечень используемых команд и их параметров для задания режимов работы видеокарты;

формулы для вычисления смещения в видеобуфере;

содержимое дамп видеобуфера и палитры после завершения выполнения всех заданий;

выводы.

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.