|
Цветной графический адаптер имеет два
режима отображения, в которых
можно управлять отдельными точками экрана.
Эти режимы называются
режимами Полной Адресации точек (APA: All
Points Addressable),
поскольку с помощью этих режимов можно
адресовать и изменять все
точки. В действительности цветная плата
допускает более двух
режимов APA, но мы рассмотрим только те
два, которые поддерживаются
системой программирования. Используя
информацию из технического
описания, вы можете попробовать и другие
режимы.
Графический режим среднего разрешения
обеспечивает вывод
изображения из 320 точек и 200 строк
растра. Каждая из этих точек
может иметь один из четырех цветов. Это
означает, что для каждой
точки требуется для представления цвета 2
бита. В каждом байте
графической памяти помещается четыре точки
или пиксела (от англ.
picture element - графический элемент,
которые называют также
"пелами"). Если вы умножите
горизонтальный размер на вертикальный,
а затем разделите на 4 - число точек в
байте, то увидите, что в
режиме среднего разрешения требуется 16000
байт. Именно поэтому
цветная плата имеет память объемом 16K.
На Фиг. 8.13 показано расположение
элементов в каждом байте.
Пара бит с номерами 6 и 7 отображается
первой точкой (0), а биты 0
и 1 представляют последнюю точку (3),
отображаемую из этого байта.
Впервых 80 байтах графической памяти
содержится 320 точек
строки растра 0, т.е. первой строки
экрана.
765 432 10
ЪДДДДДДДДДВДДДДДДДДДВДДДДДДДДДВДДДДДДДДДї
іііі і
і точка 0 і точка 1 і точка 2 і точка 3 і
ііііі
іііі
АДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДЩ
Фиг. 8.13 Битовая структура для графики 320*200
Но байт 80 уже не содержит первые четыре
точки строки 1. По
причинам, которые объясняются конструкцией
аппаратуры, четные и
нечетные строки хранятся в разных концах
графической памяти. Все
нечетные строки имеют смещение 2000H байт
от соответствующих четных
строк. Поэтому строка 1 лежит в байтах от
2000H до 204FH. Строка 2
- четная и находится по адресам от байта
50H до 9FH; строка 3
находится по адресам от 2050H до 209FH, и
так далее.
На Фиг. 8.12в изображена программа,
которая иллюстрирует
структуру графической памяти. Эта
программа рисует диагональную
линию на дисплее 320*200. Линия начинается
в точке (0, 0), верхнем
левом углу, и идет до точки (199, 199), в
самый низ и слегка правее
центра. Первая часть программы вводит
дисплей в режим APA среднего
разрешения с помощью вызова программы
BIOS. В следующей главе
рассматривается, как это делается.
В программе регистр DI используется в
качестве указателя
нужного байта в буфере дисплея. В целом
программа выводит 200
точек. В регистр BL загружается число 50,
так как внутренний цикл
пишет по четыре точки за одну итерацию. В
регистр CL заносится 2 -
значение счетчика переключений. Цикл
заносит в регистр AL код 0C0H,
что устанавливает старшие два бита на цвет
3; остальные три точки
байта имеют цвет 0, т.е. цвет фона. После
записи этого байта
регистр AL сдвигается вправо на 2 бита, и
теперь активизируется
вторая точка байта. Прибавление значения
2000H к содержимому
регистра DI смещает указатель на нечетную
строку. Третья точка
снова получается сдвигом регистра AL и
вычитанием числа (2000H -
80) из содержимого регистра DI. Это
возвращает регистр DI назад в
четную строку, но уже на следующие 80
байт. Наконец, после записи
четвертого байта, регистр DI снова
возвращается в четное поле, но
еще и увеличивается, смещаясь тем самым на
следующий байт строки
растра. В примере цикл работает с четырьмя
байтами, так как на
каждый байт приходится четыре элемента.
|