Assembler - язык неограниченных возможностей


Регистры VGA DAC (03C6h– 03C9h)


Таблица цветов VGA на самом деле представляет собой 256 регистров, в каждом из которых записаны три 6-битных числа, соответствующих уровням красного, зеленого и синего цвета. Подфункции INT 10h AX =1010h – 101Bh позволяют удобно работать с этими регистрами, но, если требуется максимальная скорость, программировать их на уровне портов ввода-вывода не намного сложнее.

    03C6h для чтения/записи: Регистр маскирования пикселей (по умолчанию FFh)

    При обращении к регистру DAC выполняется операция AND над его номером и содержимым этого регистра.

03C7h для записи: Регистр индекса DAC для режима чтения

    Запись байта сюда переводит DAC в режим чтения, так что следующее чтение из 03C9h вернет значение регистра палитры с этим индексом.

03C7h для чтения: Регистр состояния DAC

    биты 1 – 0: 00/11 — DAC в режиме записи/чтения

03C8h для чтения/записи: Регистр индекса DAC для режима записи

    Запись байта сюда переводит DAC в режим записи, так что следующие записи в 03C3h будут записывать новые значения в регистры палитры, начиная с этого индекса.

03C3h для чтения/записи: Регистр данных DAC

    Чтение отсюда считывает значение регистра палитры с индексом, записанным предварительно в 03C8h, запись — записывает новое значение в регистр палитры с индексом, записанным в 03C8h. На каждый регистр требуются три операции чтения/записи, передающие три 6-битных значения уровня цвета: красный, зеленый, синий. После третьей операции чтения/записи индекс текущего регистра палитры увеличивается на 1, так что можно считывать/записывать сразу несколько регистров

Команды insb/outsb серьезно облегчают работу с регистрами DAC в тех случаях, когда требуется считывать или загружать значительные участки палитры или всю палитру целиком, — такие процедуры оказываются и быстрее, и меньше аналогичных, написанных с использованием прерывания INT 10h. Посмотрим, как это реализуется на примере программы плавного гашения экрана.

; fadeout.asm ; выполняет плавное гашение экрана




Начало  Назад  Вперед