Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых

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

© Александр Фролов, Григорий Фролов
Том 21, М.: Диалог-МИФИ, 1993.

[Назад] [Содеожание] [Дальше]

Свертка окна вверх - функция 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 будут рассмотрены позже.

[Назад] [Содеожание] [Дальше]