Программирование видеоадаптеров, регисторв и видеоподсистемы, страница 2

Цифро-аналоговый преобразователь выполняет преобразование цифровой информации в аналоговый сигнал для передачи его по кабелю на монитор.

Программирование видеоадаптеров

С точки зрения программиста видеоподсистема интересна прежде всего способами ее программирования. Такими способами являются:

1.  Использование стандартных процедур управления видеоподсистемой, представленных прерыванием INT 10h.

2.  Регистровое программирование, при котором выполняется чтение и запись необходимых значений непосредственно в управляющие регистры видеоадаптера.

3.  Прямая запись в видеопамять.

Каждый из указанных способов имеет свои преимущества и недостатки и требует хорошего знания его особенностей.

Программирование с использованием программ BIOS часто представляет собой самый простой и правильный способ программирования видеоадаптеров. Например, обращения к BIOS, написанные для CGA, будут работать на EGA и VGA, что, однако, нельзя утверждать про все регистровые функции. Для изображения пиксела с помощью BIOS используется один и тот же метод, для которого применяемая комбинация адаптер/разрешение не имеет значения, однако запись в память у CGA и EGA/VGA сильно отличаются.

Программирование с использованием BIOS также позволяет расширить степень совместимости между компьютерами и адаптерами, изготовленными разными фирмами. Некоторые регистры EGA и VGA могут быть изменены только в определенные временные интервалы или должны восстанавливаться в интервалы между записями. Эта задача решается BIOS автоматически. Однако даже использование BIOS не гарантирует полной совместимости между компьютерами и даже простыми модификациями кода, выполненного в различных операционных системах. Простота работы с вызовами BIOS объясняется тем, что для обращения достаточно установить соответствующие значения всех необходимых регистров и выполнить прерывание INT 10h. Загрузка каждого из требующихся регистров со значениями обязательна.

Стандартный BIOS VGA предусматривает 20 основных программ для работы с экраном. Эти функции пронумерованы от 0 до 13h. Для доступа к функции необходимо поместить ее номер в регистр AH, после чего выполнить прерывание INT 10h. Для работы большинства программ требуются дополнительные исходные данные, которые должны быть помещены в регистры AL, BX, CX и/или DX. Ниже приведен краткий обзор некоторых функций прерывания INT 10h: