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

Программирование видеоадаптеров CGA, EGA и VGA

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

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

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

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


На входе:   AH = 06h - свертка окна вверх;

   AL = число прокручиваемх линий, если оно равно
      нулю, то окно прокручивается целиком;

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

   CH = номер строки верхнего левого угла окна;

   CL = номер колонки верхнего левого угла окна;

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

   DL = номер колонки нижнего правого угла окна.

На выходе:   Не используются.

Тот факт, что при свертке в нижней части окна возникают чистые строки, впоследствии заполняющие все окно, можно использовать для быстрой очистки экрана. Для этого достаточно задать размеры окна, равные размерам экрана и прокрутить его вверх на 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)

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

mov   dh,es:[484h]   ; определяем число строк в данном режиме
mov   dl,es:[44Ah]   ; определяем число символов в строке
dec   dl

int   10h         ; вызываем свертку экрана вверх

pop   es         ; восстанавливаем регистр es
[Назад] [Содеожание] [Дальше]