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

       

Свертка текстового окна вверх - функция 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



Содержание раздела