Int 15h, функция 86h
Вызов: AH = 86h, СX: DX = время задержки в мксек. Возврат: CF = 0 – нормальное исполнение, CF = 1 – функция не поддерживается. Пример: CX: DX = 0098 h: 9680 h = 10 000 000 мксек = 10 сек. Варианты индивидуального задания 1. Инициализировать экран с определённым атрибутом. Наложить на него локальное окно меньшего размера с другим атрибутом цвета. В центральную часть окна вывести текст (несколько строк) из памяти с циклической реализацией скроллинга окна в несколько строк вверх и вниз. Смена типа скроллинга задаётся программной задержкой (2...3 сек.). Предусмотреть выход из программы. 2. Инициализировать две видеостраницы, каждая со своим атрибутом и записанным текстом (некоторые символы текста обязательно должны иметь отличный от других цвет). Организовать циклическую смену видеостраниц с периодом 2...3 сек. Предусмотреть выход из программы с восстановлением текущей страницы. 3. На экране инициализировать 2 локальных окна. Каждое окно со своим атрибутом и текстом с несколькими строками. Организовать циклическое переключение атрибутов первого окна на второе и обратно. Цикл переключения задаётся временной задержкой в 2...3 сек. Предусмотреть выход из программы. 4. На экране инициализировать 2 локальных окна. Каждое окно со своим атрибутом и текстом в несколько строк. Организовать циклическое переключение текста из одного окна в другое с временной задержкой 2...3 сек. Предусмотреть выход из программы. 5. На экране инициализировать окно_1 с атрибутом и текстом в несколько строк. Спустя время задержки 2...3 сек частично наложить на него окно_2 с другим атрибутом и текстом. Процесс зациклить. Предусмотреть выход из программы. 6. На экране инициализировать локальное окно с атрибутом (и текстом), сообщить ему дрейф в горизонтальном (вертикальном) направлении. При достижении границы экрана окно изменяет дрейф в противоположную сторону. Шаг движения локального окна в пространстве экрана должен быть во много раз меньше размеров самого экрана. 7. На экране инициализировать локальное окно с атрибутом (и текстом). После нажатия командной клавиши окно начинает изменять свои размеры (пульсировать), увеличиваясь и уменьшаясь с определённым периодом. Временной шаг изменения размера окна должен быть много меньше периода 8. Инициализировать экран и локальное окно в нём со своими атрибутами. Организовать режим вывода текста в локальное окно с клавиатуры. Предусмотреть возможность редактирования текста, а также скроллинга окна при его заполнении. 9. Инициализировать экран и два небольших локальных окна в нём. С помощью клавиши < Tab > организовать переключение курсора из одного окна в другое. Выбранное клавишей < Tab > окно приобретает повышенную яркость. Предусмотреть выход из программы. 10. Инициализировать экран и два локальных окна в нём. В левое окно вывести первую половину таблицу ASCII, а в правое – вторую половину. Предусмотреть очистку окон и выход из программы. 11. Инициализировать экран и два локальных окна в нём (каждое со своим атрибутом и текстом). Организовать циклическое переключение бита " яркость фона/мерцание". Выход из программы должен восстанавливать значение бита по умолчанию. 12. Инициализировать экран и два локальных окна в нём. В левое окно вывести вторую половину таблицы ASCII c символами псевдографики. Используя навигацию курсора, c помощью клавиш (, , ®, ¯) организовать возможность непрерывного воспроизведения прямых линий во втором окне. 13. Разработать программу вывода текста на экран путём непосредственного программирования видеобуфера с использованием элементов форматирования (отступ от левой границы, перенос текста на следующую строку после пересечения словом правой границы). Вход: DS: SI – адрес ASCI- строки, AH – атрибуты; CX – число выводимых символов; DH/DL – строка (row)/столбец (clm); Indent_L, Indent_R – поля отступа (в столбцах) слева и справа. Необходимо оптимизировать расчёт адреса видеобуфера ES: DI. Процедура должна возвращать исходное значение регистра ES. 14. Используя прямое программирование видеопамяти, заполнить несколько страниц видеобуфера с последующим просмотром их (выводом на экран) в циклическом режиме. При выходе из программы обеспечить восстановление текущей страницы. 15. Разработать программу рисования прямоугольника, используя графические символы в кодировке ASCII. Координаты верхнего левого угла (строка, столбец) и нижнего правого должны вводиться с клавиатуры после соответствующего приглашения. Контрольные вопросы 1. Краткая характеристика возможностей, предоставляемых программисту базовой системой ввода-вывода BIOS, в сравнении с сервисными функциями DOS. 2. Назовите объём видеопамяти для изображения одного символа и, соответственно, одной видеостраницы монитора в текстовом режиме. 3. Дайте характеристику атрибута символа в видеобуфере. 4. Разработайте макросы для: ¨ очистки экрана с установкой курсора в левый верхний угол экрана; ¨ позиционирования курсора в произвольную точку экрана с запоминанием его координат в памяти с помощью переменных row и clm; ¨ вывода сообщения mes длиною leng и атрибутом цвета attrib с позиции, определяемой переменными row и clm. 5. Какая функция BIOS предоставляет пользователю исчерпывающую информацию о нажатой клавише клавиатуры.
|