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