Главная » Ассемблер, Железо » Режимы адресации и распределение видеопамяти

1

Как было указано выше, существует два основных метода адресации видеопамяти в графических режимах: устаревший сегментный и современный линейный. В режиме сегментации видеопамять поделена на 64-килобайтные кусочки — окна, причем в каждый момент времени для работы доступен только один такой сегмент. Доступ ко всем сегментам осуществляется через 64-килобайгный участок адресного пространства процессоров х86 с абсолютным адресом AOOOOh. Режим сегментации имеет два серьезных недостатка, заметно снижающих скорость работы видеосистемы:

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

•       при пересечении границ сегментов приходится выполнять их переключение посредством программных процедур VESA BIOS, поскольку механизм переключения при помощи регистров видеоконтроллера так и не был стандартизирован.

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

Линейная адресация обеспечивает гораздо более простой и удобный режим работы — вся видеопамять представляет собой с точки зрения процессора единый (непрерывный) участок адресного пространства. В линейном режиме нет никаких искусственных границ и, соответственно, не нужно тратить время на контроль их пересечения. Основным недостатком метода линейной адресации является невозможность его использования в реальном режиме DOS и режиме виртуальных процессоров. Линейная адресация доступна только в защищенном режиме и режиме линейной адресации данных. Видеорежим и способ адресации видеопамяти задаются одновременно — кодом номера режима при вызове функции переключения видеорежимов VESA BIOS (прерывание Int 10h, функция 4Fh, подфункция 02h). Прежде чем устанавливать режим, желательно убедиться, что видеоконтроллер его поддерживает, для чего нужно использовать подфункцию Olh функции 4Fh прерывания Int 10h (см. листинг 4.1).

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

При работе с анимацией часто используют две видеостраницы, а память реорганизуют с целью максимального ускорения вывода изображения. Пока процессор перерисовывает изображение в одной области памяти, видеоконтроллер осуществляет вывод предыдущего кадра на экран из другой области (рис. 4.10). Для реорганизации памяти применяются подфункции 06h и 07h функции 4Fh прерывания Int 10h. Подфункция 06h позволяет сделать логическую длину строки больше физической и используется для выравнивания длины строки на 2N. Выравнивание позволяет ускорить вычисление координат, упростить контроль границ и создать невидимую вертикальную защитную полосу. Подфункция 07h позволяет выбирать положение страниц в видеопамяти и переключать страницы.

Рис. 4.10. Распределение видеопамяти при использовании механизма переключения страниц

Источник: Кулаков В. К90 Программирование на аппаратном уровне: специальный справочник (+дискета). 2-е издание. — СПб.: Питер, 2003. — 847 е.: ил.

По теме:

  • Комментарии

1 комментарий

  1. Спасибо,очень пригодилось!