Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Assembler (Уч_пос_Лаб_Ч1).doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.43 Mб
Скачать

8.2.3.2. Рекомендации по использованию видеосервиса 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.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]