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

Большинство регистров являются доступными косвенно. Каждая группа регистров (за исключением внешних регистров) включает адресный регистр. Адресный регистр используется для выбора модифицируемого регистра. Bce безадресные регистры (кроме внешних peгистров и регистров графической позиции) имеют индекс. Индекс помещается в адресный регистр, после чего выполняется доступ к нужному регистpy.

EGA и VGA также имеют 4 регистра-защелки, используемые во время доступа к памяти процессора. Регистры-защелки применяются для сохранения информации, находящейся в памяти, во время записи памяти процессора, для последующей передачи содержимого памяти в процессе чтения памяти процессора. Работа регистров-защелок в основном незаметна для пользователя и не связана непосредственно c процессором. Однако некоторые регистры графического контроллера непосредственно работают c содержимым регистров-защелок.

Большинство регистров EGA доступны только для записи и не доступны для чтения. Регистры VGA доступны для чтения/записи, за некоторым исключением.

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

Пример 1. Работа через BIOS

Приведенная ниже программа "пролистывает" четыре видеостраницы, останавливаясь на каждой из них. С каждым следующим циклом пауза становится короче. На каждой из страниц добавляется одно слово, формируя сообщение "This shows four pages".

data  segment

                msg1    db ' This'

                msg2    db ' shows'

                msg3    db ' four'

                msg4    db ' pages.'

                pse     dw 0F000h ;длительность паузы при выводе

data  ends

        code    segment public

                assume  CS:code

        main    proc    far

        start:  push    DS

                sub     AX,AX

                push    AX

                mov     AX,data ;получить размещение сегмента данных

                mov     ES,AX   ;установить ES для вызова функции