ВУЗ:
Составители:
14
Вариант 2. Многоцветное изображение без сжатия.
Изображение по-прежнему построено в квадратной матрице 8х8, но теперь оно уже не
одноцветное (или двухцветное, если считать цвет фона) - каждый пиксель может при-
нимать значения из определённого набора цветов. Одного бита на пиксель теперь, ра-
зумеется, недостаточно. Будем, как и в Варианте 1, изображать каждый пиксель закра-
шенным прямоугольником, т.е. символом с кодом 219 = 0DBh; пусть они могут быть
одного из четырёх цветов - белый (атрибут = 15), красный (атрибут = 12), зелёный (ат-
рибут = 10) и синий (атрибут = 9).
Каждые четыре идущих подряд пикселя кодируются одним байтом, который бу-
дем рассматривать как структуру, состоящую из четырёх двухбитовых полей. Каждое
такое поле позволяет представить, очевидно, 2
2
= 4 различных цвета. Вся строка из
восьми пикселей кодируется двумя байтами (или, если угодно, одним машинным сло-
вом).
Пример одной строки:
= 0001 0011 0100 0011 = 13h 43h
00 01 00 11 01 00 00 11
Придумать самостоятельно какое-либо изображение и закодировать его описан-
ным образом (получится массив из 16 байт). Разработать алгоритм и программу для
вывода изображения на экран виртуального дисплея системы AsmEd.
Вариант 3. Многоцветное изображение со сжатием.
Многие графические изображения содержат повторяющиеся фрагменты. Могут повто-
ряться, например, пиксели в пределах одной строки:
11 11 11 11 00 00 00 00
В таких условиях сохранять в памяти цвет (код) каждого пикселя становится, очевидно,
неэффективным. Более предпочтительно запоминать цвет повторяющегося пикселя
(один раз) и количество его повторений. Предлагается испытать следующий способ:
каждый байт разбивается на четыре поля, первое (слева) из них хранит цвет пикселя,
следующее - число повторений, уменьшенное на единицу, далее - цвет следующего
пикселя, и опять число повторений минус 1, как показано на рисунке:
Ц В Е Т k -1 Ц В Е Т k - 1
7 6 5 4 3 2 1 0
Для предыдущего рисунка получится байт 11 11 00 11 = F3h.
Придумать самостоятельно какое-либо изображение и закодировать его описан-
ным образом. Разработать алгоритм и программу для вывода изображения на экран
виртуального дисплея системы AsmEd.
14 Вариант 2. Многоцветное изображение без сжатия. Изображение по-прежнему построено в квадратной матрице 8х8, но теперь оно уже не одноцветное (или двухцветное, если считать цвет фона) - каждый пиксель может при- нимать значения из определённого набора цветов. Одного бита на пиксель теперь, ра- зумеется, недостаточно. Будем, как и в Варианте 1, изображать каждый пиксель закра- шенным прямоугольником, т.е. символом с кодом 219 = 0DBh; пусть они могут быть одного из четырёх цветов - белый (атрибут = 15), красный (атрибут = 12), зелёный (ат- рибут = 10) и синий (атрибут = 9). Каждые четыре идущих подряд пикселя кодируются одним байтом, который бу- дем рассматривать как структуру, состоящую из четырёх двухбитовых полей. Каждое такое поле позволяет представить, очевидно, 22 = 4 различных цвета. Вся строка из восьми пикселей кодируется двумя байтами (или, если угодно, одним машинным сло- вом). Пример одной строки: = 0001 0011 0100 0011 = 13h 43h 00 01 00 11 01 00 00 11 Придумать самостоятельно какое-либо изображение и закодировать его описан- ным образом (получится массив из 16 байт). Разработать алгоритм и программу для вывода изображения на экран виртуального дисплея системы AsmEd. Вариант 3. Многоцветное изображение со сжатием. Многие графические изображения содержат повторяющиеся фрагменты. Могут повто- ряться, например, пиксели в пределах одной строки: 11 11 11 11 00 00 00 00 В таких условиях сохранять в памяти цвет (код) каждого пикселя становится, очевидно, неэффективным. Более предпочтительно запоминать цвет повторяющегося пикселя (один раз) и количество его повторений. Предлагается испытать следующий способ: каждый байт разбивается на четыре поля, первое (слева) из них хранит цвет пикселя, следующее - число повторений, уменьшенное на единицу, далее - цвет следующего пикселя, и опять число повторений минус 1, как показано на рисунке: ЦВЕТ k -1 ЦВЕТ k-1 7 6 5 4 3 2 1 0 Для предыдущего рисунка получится байт 11 11 00 11 = F3h. Придумать самостоятельно какое-либо изображение и закодировать его описан- ным образом. Разработать алгоритм и программу для вывода изображения на экран виртуального дисплея системы AsmEd.