Рекомендации по использованию видеосервиса BIOS
1. Программы (учебный практикум), выполняемые в операционной среде DOS, используют по умолчанию текстовый режим 3, страницу 0. 2. Программы более широкого назначения должны запрашивать текущий видеорежим и страницу (функция 0Fh, int 10h) с последующим их применением в используемых функциях BIOS. ....... Mov ah, 0Fh; Запрос текущего режима Int 10h Mov v_mode, al; Сохраним режим Mov current_page, bh; Сохраним строку 3. Если программа выводит изображение на разные страницы, то последовательность действий с каждой страницей может быть следующей (предполагается режим по умолчанию с " 0" – страницей): – установка страницы функцией 05h; – установка позиции курсора функцией 02h; – построчное форматирование текста BIOS или DOS. В дальнейшем может быть организован циклический просмотр содержания страниц путём их переключения функцией 05h, int 10h. При выходе из программы обязательно восстанавливаем искомую " 0" -страницу. Сделать это, к примеру, можно так. .......... continue: .......... ; Анализ буфера клавиатуры функцией DOS 06h int 21h с целью её завершения нажатием; произвольной клавиши mov ah, 06h; Функция ввода без ожидания mov dl, 0FFh; Ввод int 21h jnz out_program; zf=0, есть символ, на выход jmp continue; zf=1, символа нет, продолжим работу out_program:; Восстановим страницу функцией 05h, int 10h .......... exit: mov ax, 4C00h; Вызов функции завершения программы int 21h End start Страницы видеобуфера могут быть последовательно отформатированы и способом непосредственного программирования памяти. Выбор страниц при этом осуществляется соответствующей инициализацией сегментного регистра ES (см. п. 8.2.2). Просмотр содержимого страниц также может быть выполнен путём их последовательного переключения с помощью функции 05h, int 10h. 4. Структура демонстрационной программы, исследующей функцию " мерцание – яркость фона" (функция 10h, подфункция 03h, int 10h). ; Очистка экрана .......... ; Инициализация 2-х локальных окон, каждое со своим атрибутом и текстом. При задании ; атрибутов цвета старший (7-ой по номеру) бит выбран равным " 1". ......... continue:; Включим мерцание mov ah, 10h mov al, 03h mov bl, 1; Мерцание int 21h; ; Введём задержку на 3 сек ......... ; Включим повышенную яркость ......... ; Введём задержку на 3 сек ......... ; Анализ буфера клавиатуры функцией DOS 06h int 21h с целью её завершения нажатием ; произвольной клавиши ......... jnz out_program; zf=0, есть символ, на выход jmp continue; zf=1, символа нет, продолжим работу out_program:; Восстановим мерцание (по умолчанию) .......... exit: mov ax, 4C00h; Вызов функции завершения программы ......... 5. Если в программе организован бесконечный цикл вывода данных на экран функциями BIOS (09h, 0Ah, 0Eh, 13h), то его нельзя будет аварийно прервать с помощью нажатия клавиш Ctrl+C (т.е. выйти из программы, как это можно сделать при использовании соответствующих функций DOS). Чтобы можно было это сделать, включите в тело цикла функцию 0Bh прерывания Int 21h.
|