Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование видеоадаптеров EGA, VGA и SVGA.doc
Скачиваний:
138
Добавлен:
01.05.2014
Размер:
4.51 Mб
Скачать

Выбор активной страницы видеопамяти - функция 05h

Функция 05h позволяет изменить активную страницу видеопамяти. Активная страница видеопамяти отображается на экране монитора. Функция не проверяет физического наличия выбранной страницы видеопамяти. Если вы неправильно указали номер страницы результат работы функции не определен.

На входе:

AH

05h

AL

Номер страницы видеопамяти, которая станет активной

На выходе:

Не используются

Свертка окна вверх - функция 06h

Свернуть содержимое окна экрана вверх можно при помощи функции 06h. Окно задается координатами верхнего левого и нижнего правого углов. При свертке окна снизу появляются новые пустые строки (строки, заполненные пробелами). Верхние строки исчезают. Область экрана вне окна не изменяется. Функция позволяет работать только с активной страницей видеопамяти.

На входе:

AH

06h

AL

Количество свертываемых линий. Если оно равно нулю, то окно прокручивается целиком

BH

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

CH

Номер строки верхнего левого угла окна

CL

Номер столбца верхнего левого угла окна

DH

Номер строки нижнего правого угла окна

DL

Номер столбца нижнего правого угла окна

На выходе:

Не используются

Функцию 06h можно использовать не только в текстовых, но и в графических режимах работы видеоадаптера. Если вы используете функцию в графическом режиме, то цвет области, появляющийся внизу окна после его свертки зависит от значения регистра BH и номера режима видеоадаптера.

В монохромном графическом режиме с разрешением 640х200 пикселов значение регистра BH определяет цвет 8-и последовательно расположенных пикселов. Задав разный цвет пикселов вы можете закрасить свертываемую область вертикальными штрихами.

В 4-х цветном графическом режиме с разрешением 320х200 пикселов значение регистра BH определяет цвет 4-х последовательно расположенных пикселов. Благодаря этому вы можете закрасить свертываемую область вертикальными штрихами различного цвета.

В остальных графических режимах значение регистра BH определяет цвет всех пикселов в свертываемой области экрана.

Тот факт, что при свертке в нижней части окна возникают чистые строки, впоследствии заполняющие все окно, можно использовать для быстрой очистки экрана. Для этого достаточно задать размеры окна, равные размерам экрана и прокрутить его вверх на 25 или 0 строк. Приведем фрагмент программы на языке ассемблера, который можно использовать для очистки экрана монитора:

push es ; Сохраняем содержимое регистра ES xor ax,ax ; Устанавливаем регистр ES на нулевой mov es,ax ; сегмент памяти mov ah,6 ; Функция свертки экрана вверх mov al,0 ; Очищаем все окно mov bh,7 ; Устанавливаем нормальный атрибут xor cx,cx ; Устанавливаем левый верхний угол окна в (0,0) ; Определяем число строк в данном режиме mov dh,es:[484h] ; Определяем число символов в строке mov dl,es:[44Ah] dec dl ; Вызываем свертку экрана вверх int 10h ; Восстанавливаем регистр ES pop es

Для определения размеров экрана используется содержимое переменных видеофункций BIOS. Ячейка памяти, расположенная по адресу 0000:0484h содержит число, на единицу меньшее, чем количество строк на экране. По адресу 0000:044Ah находится переменная, определяющая число символов в строке. Более подробно переменные видеофункциий BIOS будут рассмотрены позже.