Программирование EGA и VGA
Вызов функции 7: Прокрутка (скроллинг) активной страницы вниз.
Комментарии
С помощью этой функции выполняется прокрутка текста на экране: строки перемещаются сверху вниз, а вверху осуществляется вставка пустых строк. Функция работает так же, как и описанная выше функция 6.
Исходные данные
Регистры (устанавливаются до вызова функции):
- AH: устанавливается 7
- AL: число прокручиваемых строк (0 - очистка экрана)
- BH: символ атрибута новых строк (см. функцию 8)
- CH: номер верхней строки окна
- CL: номер левого столбца окна
- DH: номер нижней строки окна
- DL: номер правого столбца окна
Приводимая ниже программа печатает сообщение "This line scroll (except for this part)" и прокручивает первую часть вниз на одну строку. Вторая часть сообщения не прокручивается, в результате чего эффект скроллинга окна особенно нагляден.
Пример на языке ассемблера:
data segment public
msg1 db 'This line will scroll (except for'
db 'this part)'
msg2 db 'This line will not scroll'
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 для вызова функции
assume ES:data
mov AX,data
mov DS,AX
assume DS:data
mov AX,3 ;режим 3 (алфавитно-цифровой)
int 10h
mov DH,12 ;строка 12
mov DL,10 ;столбец 10
mov BH,0 ;страница 0
mov BP,offset msg2 ;ES:BP указатель на строку
mov BL,0fh ;белый высокой яркости
mov CX,25 ;длина строки
mov AL,1 ;курсор перемещается
;только строка символов
;атрибут в BL
mov AH,13h ;функция 13h - запись строки
int 10h ;вызов видео-BIOS
mov DH,13 ;строка 13
mov DL,10 ;столбец 10
mov BH,0 ;страница 0
mov BP,offset msg1 ;ES:BP указатель на строку
mov BL,0fh ;белый высокой яркости
mov CX,44 ;длина строки
mov AL,1 ;курсор перемещается
;только строка символов
;атрибут в BL
mov AH,13h ;функция 13h - вывод строки
int 10h ;вызов видео-BIOS
mov CX,2 ;задержка (множитель)
;для увеличения времени
ps1: push CX
mov CX,0ffffh ;длина паузы
ps2: loop ps2 ;пустой цикл для задержки
pop CX
loop ps1 ;цикл через множитель
mov CH,13 ;координата левого верхнего угла 13,0
mov CL,0
mov DH,24 ;правый нижний угол на строке 24
mov DL,31 ;столбец 31
mov AL,1 ;переместить 1 строку
mov BH,0fh ;атрибут новой строки
mov AH,7 ;прокрутка вверх
int 10h ;вызов видео-BIOS
ret
main endp
code ends
end start
Среди функций работы с экраном (0 - 7) наиболее важной является функция установки режима. Как правило, быстрая переустановка режима не требуется, а использование вызова BIOS гарантирует, что режим будет установлен правильно для всех адаптеров, в которых он поддерживается. Функции 1 - 7 наиболее полезны для использования их в качестве прототипов. В случае написания программ, осуществляющих непосредственную работу с экранной памятью, эти функции играют незначительную роль.
