в разных концах графической памяти.
нечетные строки хранятся в разных концах графической памяти. Все
нечетные строки имеют смещение 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 снова возвращается в четное поле, но
еще и увеличивается, смещаясь тем самым на следующий байт строки
растра. В примере цикл работает с четырьмя байтами, так как на
каждый байт приходится четыре элемента.
Содержание Назад Вперед