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


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

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



В ходе работы нужно выполнить следующее:

установить режим VGA 320x200 256 цветов;

заполнить 1-й регистр палитры чисто-красным цветом, цвет фона установить белый;

нарисовать квадрат на экране в верхнем левом углу шириной в 10 пикселов, для каждой точки установить номер регистра палитры 1;

установить режим SVGA 800x600 64К цветов;

вывести по две точки в начале и в конце 0-го и 1-го банка, цвет точек – синий;

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

Выполнение

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

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

 

Рис. 62. Задание видеорежима VGA 320x200, 256 цветов

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

 

 

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

 

 

 

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

 

Режим установлен. Первая задача выполнена.

Устанавливаем белый цвет фона, то есть заполняем 0-й регистр палитры. Для этого в поле Номер порта вводим 3С8, в поле Данные – индекс регистра, т.е. 0 ( в двоичной системе счисления – 00000000), как показано на рис. 64.

 

 

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

 

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

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

 

 

 

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

 

Затем нажать кнопку Запись. Так как нам нужен белый цвет, то и остальные цвета (зеленый и синий) запишем тоже с 63-й интенсивностью (яркостью), то есть 11111111.

(Зеленый – рис. 66, синий – рис. 67).

 

 

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

 

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

 

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

 

Нажимаем кнопку Запись. Теперь фон экрана будет белым.

Установка 1-го регистра на запись: устанавливаем красный цвет в первом регистре палитры. Для этого в поле Номер порта вводим 3С8, в поле Данные – индекс регистра, то есть 1 (в двоичной системе счисления – 00000001), как показано на рис. 68.

 

 

 

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

 

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

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

 

 

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

 

Затем нажать кнопку Запись. В каждый регистр мы должны записывать обязательно все три цвета. Так как нам нужен красный цвет, остальные цвета (зеленый и синий) мы запишем с 0-й интенсивностью (яркостью), то есть – 00000000. (Зеленый – рис. 70, синий – рис. 71.)

 

 

 

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

 

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

 

 

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

 

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

Теперь в 1-м регистре палитры записан чисто-красный цвет. Вторая задача выполнена.

Рисование квадрата

Формула вычисления смещения в видеобуфере (пикселы нумеруются с нуля):

СМЕЩЕНИЕ = НОМЕР_ПИКСЕЛА_В_СТРОКЕ +320*НОМЕР_СТРОКИ.

Согласно заданию квадрат начинается с верхнего левого угла, координата самого левого пиксела равна

НОМЕР_ПИКСЕЛА_В_СТРОКЕ = 0;

НОМЕР_СТРОКИ = 0;

СМЕЩЕНИЕ = 0000 – в шестнадцатеричной системе счисления, если вы не знаете систему счисления, можете воспользоваться калькулятором, он находится:

Пуск-> Программы->Стандартные->Калькулятор (ОС Windows).

Следующий пиксел этой же строки будет с координатами:

НОМЕР_ПИКСЕЛА_В_СТРОКЕ = 1;

НОМЕР_СТРОКИ = 0;

СМЕЩЕНИЕ = 0001 – в шестнадцатеричной системе счисления и т.д.

Последний, то есть 9 пиксел в этой же строке будет с координатами:

НОМЕР_ПИКСЕЛА_В_СТРОКЕ = 9;

НОМЕР_СТРОКИ = 0;

СМЕЩЕНИЕ = 0009 – в шестнадцатеричной системе счисления.

Координаты нулевого пиксела в следующей строке:

НОМЕР_ПИКСЕЛА_В_СТРОКЕ = 0;

НОМЕР_СТРОКИ = 1;

СМЕЩЕНИЕ = 0140 – в шестнадцатеричной системе счисления и т.д.

Вычислив смещение каждого пиксела, приступим к рисованию квадрата.

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

 

 

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

 

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

Вывод первой точки на экран (рис. 73).

 

 

Рис. 73. Задание адресапервой точки квадрата и ее цвета

 

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

Точка записана в видеобуфер. Меняя смещение, рассчитанное для всех точек, вырисовываем заданный квадрат. Открываем закладку Экран, и вот что должно получиться (рис. 74).

 

 

Рис. 74. Пример выполнения задания (рисование квадрата)

 

Дамп видеобуфера и палитры (только те адреса и значения в них, которые задавались в ходе лабораторной работы):

Режим VGA 320x200 с 256 цветами

Палитра 256 регистров:

Индекс регистра Номер цвета (шест.)

0. 0X00FFFFFF

1. 0X000000FF

 

Дамп видеобуфера:

0xa0000: 01 01 01 01 01 01 01 01| 01 01 00 00 00 00 00 00 |

0xa0140: 01 00 00 00 00 00 00 00| 00 01 00 00 00 00 00 00 |

0xa0280: 01 00 00 00 00 00 00 00| 00 01 00 00 00 00 00 00 |

0xa03c0: 01 00 00 00 00 00 00 00| 00 01 00 00 00 00 00 00 |

0xa0500: 01 00 00 00 00 00 00 00| 00 01 00 00 00 00 00 00 |

0xa0640: 01 00 00 00 00 00 00 00| 00 01 00 00 00 00 00 00 |

0xa0780: 01 00 00 00 00 00 00 00| 00 01 00 00 00 00 00 00 |

0xa08c0: 01 00 00 00 00 00 00 00| 00 01 00 00 00 00 00 00 |

0xa0a00: 01 00 00 00 00 00 00 00| 00 01 00 00 00 00 00 00 |

0xa0b40: 01 01 01 01 01 01 01 01| 01 01 00 00 00 00 00 00 |

 

Устанавливаем режим SVGA 800x600 64К цветов.

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

 

 

 

Рис. 75. Задание видеорежима SVGA 800x600

 

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

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

 

 

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

 

Вывести две точки в начале и в конце 0-го и 1-го банка, цвет точек –синий.

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

 

 

Рис. 77. Задание банка видеопамяти

 

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

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

 

 

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

 

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

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

 

 

0000000000011111

 

 


Формула вычисления смещения в видеобуфере (пикселы номеруются с нуля):

СМЕЩЕНИЕ = (НОМЕР_ПИКСЕЛА_В_СТРОКЕ +

+800*НОМЕР_СТРОКИ)*2.

Координата вернего левого пиксела 0-го банка:

НОМЕР_ПИКСЕЛА_В_СТРОКЕ = 0;

НОМЕР_СТРОКИ = 0;

СМЕЩЕНИЕ = 0000 - в шестнадцатеричной системе счисления.

Координата нижнего правого пиксела:

НОМЕР_ПИКСЕЛА_В_СТРОКЕ = 799;

НОМЕР_СТРОКИ = 39;

СМЕЩЕНИЕ = F9FE – в шестнадцатеричной системе счисления.

Вывод первой точки на экран (рис. 79).

 

 

Рис. 79. Вывод первой точки

 

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

Вывод второй точки на экран (рис. 80).

 

 

Рис. 80. Вывод второй точки

 

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

Устанавливаем банк номер 1 (рис. 81).

 

Рис. 81. Задание банка видеопамяти

 

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

Вывод первой точки на экран (рис. 82).

 

Рис. 82. Вывод первой точки

 

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

Вывод второй точки на экран (рис. 83).

 

 

Рис. 83. Вывод второй точки

 

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

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

Режим SVGA 800x600 с 64К цветами

Содержимое окна № 0

0xa0000: 1F 00 00 00 00 00 00 00| 00 00 00 00 00 00 00 00 |

0xaf9f0: 00 00 00 00 00 00 00 00| 00 00 00 00 00 00 1F 00 |

 

Режим SVGA 800x600 с 64К цветами

Содержимое окна № 1

0xa0000: 1F 00 00 00 00 00 00 00| 00 00 00 00 00 00 00 00 |

0xaf9f0: 00 00 00 00 00 00 00 00| 00 00 00 00 00 00 1F 00 |

Варианты заданий

Вариант 1

1. Установить режим VGA 320x200 256 цветов.

2. Заполнить 2-й регистр палитры чисто-синим цветом, цвет фона установить белый.

3. Нарисовать квадрат на экране в верхнем правом углу шириной в 10 пикселов, для каждой точки установить номер регистра палитры 2.

4. Установить режим SVGA 800x600 64К цветов.

5. Вывести по две точки в начале и в конце банка №2 и №3, цвет точек красный.

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

Ответы

Режим VGA 320x200 с 256 цветами

Палитра 256 регистров:

Индекс регистра Номер цвета (шест.)

0 0X00FFFFFF

1 0X00000000

2 0X00FF0000

 

0xa0130: 00 00 00 00 00 00 02 02| 02 02 02 02 02 02 02 02 |

0xa0270: 00 00 00 00 00 00 02 00| 00 00 00 00 00 00 00 02 |

0xa03b0: 00 00 00 00 00 00 02 00| 00 00 00 00 00 00 00 02 |

0xa04f0: 00 00 00 00 00 00 0200| 00 00 00 00 00 00 00 02 |

0xa0630: 00 00 00 00 00 00 02 00| 00 00 00 00 00 00 00 02 |

0xa0770: 00 00 00 00 00 00 02 00| 00 00 00 00 00 00 00 02 |

0xa08b0: 00 00 00 00 00 00 02 00| 00 00 00 00 00 00 00 02 |

0xa09f0: 00 00 00 00 00 00 0200| 00 00 00 00 00 00 00 02 |

0xa0b30: 00 00 00 00 00 00 02 00| 00 00 00 00 00 00 00 02 |

0xa0c70: 00 00 00 00 00 00 02 02| 02 02 02 02 02 02 02 02 |

 

Режим SVGA 800x600 с 64К цветами

Содержимое окна № 2

0xa0000: 00 F8 00 00 00 00 00 00| 00 00 00 00 00 00 00 00 |

0xaf9f0: 00 00 00 00 00 00 00 00| 00 00 00 00 00 00 00 F8 |

 

Режим SVGA 800x600 с 64К цветами

Содержимое окна № 3

0xa0000: 00 F8 00 00 00 00 00 00| 00 00 00 00 00 00 00 00 |

0xaf9f0: 00 00 00 00 00 00 00 00| 00 00 00 00 00 00 00 F8 |

Вариант 2

1. Установить режим VGA 320x200 256 цветов.

2. Заполнить 3-ый регистр палитры чисто-зеленым цветом, цвет фона установить белый.

3. Нарисовать квадрат на экране в нижнем правом углу шириной в 10 пикселов, для каждой точки установить номер регистра палитры 3.

4. Установить режим SVGA 800x600 64К цветов.

5. Вывести по две точки в начале и в конце банка №4 и №5, цвет точек – зеленый.

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

Ответы

Режим VGA 320x200 с 256 цветами

Палитра 256 регистров:

Индекс регистра Номер цвета (шест.)

0. 0X00FFFFFF

1. 0X00000000

2. 0X00000000

3. 0X0000FF00

0xaeeb0: 00 00 00 00 00 00 03 03| 03 03 03 03 03 03 03 03 |

0xaeff0: 00 00 00 00 00 00 0300| 00 00 00 00 00 00 00 03 |

0xaf130: 00 00 00 00 00 00 03 00| 00 00 00 00 00 00 00 03|

0xaf270: 00 00 00 00 00 00 03 00| 00 00 00 00 00 00 00 03|

0xaf3b0: 00 00 00 00 00 00 03 00| 00 00 00 00 00 00 00 03|

0xaf4f0: 00 00 00 00 00 00 0300| 00 00 00 00 00 00 00 03 |

0xaf630: 00 00 00 00 00 00 03 00| 00 00 00 00 00 00 00 03||

0xaf770: 00 00 00 00 00 00 03 00| 00 00 00 00 00 00 00 03|

0xaf8b0: 00 00 00 00 00 00 03 00| 00 00 00 00 00 00 00 03|

0xaf9f0: 00 00 00 00 00 00 03 03| 03 03 03 03 03 03 03 03 |

 

Режим SVGA 800x600 с 64К цветами

Содержимое окна № 4

0xa0000: F0 01 00 00 00 00 00 00| 00 00 00 00 00 00 00 00 |

0xaf9f0: 00 00 00 00 00 00 00 00| 00 00 00 00 00 00 F0 01 |

 

 

Режим SVGA 800x600 с 64К цветами

Содержимое окна № 5

0xa0000: F0 01 00 00 00 00 00 00| 00 00 00 00 00 00 00 00 |

0xaf9f0: 00 00 00 00 00 00 00 00| 00 00 00 00 00 00 F0 01 |

 

Вариант 3

1. Установить режим VGA 320x200 256 цветов.

2. Заполнить 4-й регистр палитры чисто-красным цветом, цвет фона установить белый.

3. Нарисовать квадрат на экране в нижнем левом углу шириной в 10 пикселов, для каждой точки установить номер регистра палитры 4.

4. Установить режим SVGA 800x600 64К цветов.

5. Вывести по две точки в начале и в конце банка №6 и №7, цвет точек зеленый.

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

Ответы

Режим VGA 320x200 с 256 цветами

Палитра 256 регистров:

Индекс регистра Номер цвета (шест.)

0. 0X00FFFFFF

1. 0X00000000

2. 0X00000000

3. 0X00000000

4. 0X000000FF

0xaed80: 04 04 04 04 04 04 04 04| 04 04 00 00 00 00 00 00 |

0xaeec0: 04 00 00 00 00 00 00 00| 00 04 00 00 00 00 00 00 |

0xaf000: 04 00 00 00 00 00 00 00| 00 04 00 00 00 00 00 00 |

0xaf140: 04 00 00 00 00 00 00 00| 00 04 00 00 00 00 00 00 |

0xaf280: 04 00 00 00 00 00 00 00| 00 04 00 00 00 00 00 00 |

0xaf3c0: 0400 00 00 00 00 00 00| 00 04 00 00 00 00 00 00 |

0xaf500: 04 00 00 00 00 00 00 00| 00 04 00 00 00 00 00 00

0xaf640: 04 00 00 00 00 00 00 00| 00 04 00 00 00 00 00 00 |

0xaf780: 04 00 00 00 00 00 00 00| 00 04 00 00 00 00 00 00 |

0xaf8c0: 04 04 04 04 04 04 04 04| 04 04 00 00 00 00 00 00 |

 

Режим SVGA 800x600 с 64К цветами

Содержимое окна № 6

0xa0000: F0 01 00 00 00 00 00 00| 00 00 00 00 00 00 00 00 |

0xaf9f0: 00 00 00 00 00 00 00 00| 00 00 00 00 00 00 F0 01 |

 

 

Режим SVGA 800x600 с 64К цветами

Содержимое окна № 7

0xa0000: F0 01 00 00 00 00 00 00| 00 00 00 00 00 00 00 00 |

0xaf9f0: 00 00 00 00 00 00 00 00| 00 00 00 00 00 00 F0 01 |

Вариант 4

1. Установить режим VGA 320x200 256 цветов.

2. Заполнить 1-й регистр палитры чисто-красным цветом, цвет фона установить белый.

3. Нарисовать квадрат на экране в верхнем левом углу шириной в 10 пикселов, для каждой точки установить номер регистра палитры 1.

4. Установить режим SVGA 800x600 64К цветов.

5. Вывести по две точки в начале и в конце банка №0 и №1, цвет точек синий.

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

Ответы

 

Режим VGA 320x200 с 256 цветами

Палитра 256 регистров:

Индекс регистра Номер цвета (шест.)

0. 0X00FFFFFF

1. 0X000000FF

0xa0000: 01 01 01 01 01 01 01 01| 01 01 00 00 00 00 00 00 |

0xa0140: 01 00 00 00 00 00 00 00| 00 01 00 00 00 00 00 00 |

0xa0280: 01 00 00 00 00 00 00 00| 00 01 00 00 00 00 00 00 |

0xa03c0: 01 00 00 00 00 00 00 00| 00 01 00 00 00 00 00 00 |

0xa0500: 01 00 00 00 00 00 00 00| 00 01 00 00 00 00 00 00 |

0xa0640: 01 00 00 00 00 00 00 00| 00 01 00 00 00 00 00 00 |

0xa0780: 01 00 00 00 00 00 00 00| 00 01 00 00 00 00 00 00 |

0xa08c0: 01 00 00 00 00 00 00 00| 00 01 00 00 00 00 00 00 |

0xa0a00: 01 00 00 00 00 00 00 00| 00 01 00 00 00 00 00 00 |

0xa0b40: 01 01 01 01 01 01 01 01| 01 01 00 00 00 00 00 00 |

 

Режим SVGA 800x600 с 64К цветами

Содержимое окна №0

0xa0000: 1F 00 00 00 00 00 00 00| 00 00 00 00 00 00 00 00 |

0xaf9f0: 00 00 00 00 00 00 00 00| 00 00 00 00 00 00 1F 00 |

 

Режим SVGA 800x600 с 64К цветами

Содержимое окна №1

0xa0000: 1F 00 00 00 00 00 00 00| 00 00 00 00 00 00 00 00 |

0xaf9f0: 00 00 00 00 00 00 00 00| 00 00 00 00 00 00 1F 00 |

 




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

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