- •Видеосистема
- •Введение
- •Компоненты видеосистемы
- •Монитор
- •Область памяти дисплея
- •Видеоконтроллер
- •Видео-bios
- •Видеорежимы
- •Атрибуты
- •Функции прерывания iнт 10н
- •Функция 0н прерывания int10н: установка видеорежима
- •Функция 01н прерывания int10н: установка размера курсора
- •Функция 02н прерывания int10н: установка положения курсора
- •Функция 0зн прерывания int10н: получение состояния курсора
- •Функция 05н прерывания int10н: выбор активной страницы
- •Функция 06н прерывания int10н: прокрутка экрана вверх
- •Функция 07н прерывания int10н: прокрутка экрана вниз
- •Функция 08н прерывания int10н: считывание символа и его атрибутов в положении курсора
- •Функция 09н прерывания int10н: вывод том символа и атрибутов в положение курсора
- •Функция 0ан прерывания int10н: вывод символа в положение курсора
- •Непосредственный вывод на экран
Функция 05н прерывания int10н: выбор активной страницы
Функция 05Hпозволяет выбирать страницу, выводимую на экран в текстовом или графическом режиме. Можно создать несколько различных страниц и переключаться между ними с помощью этой функции. Эта операция – просто запрос, не возвращающий значений:
Функция 06н прерывания int10н: прокрутка экрана вверх
Эта операция в текстовом или графическом режиме прокручивает экран вверх в выбранной области (на активной видеостранице). Выводимые строки прокручиваются вверх за пределы выводимой на экран области, а внизу прокручиваемой области появляются пустые строки.
Эта функция уже использовалась в гл. 8, где установка регистра АLв 0 вызывала прокрутку всего экрана вверх, очищая его. Установка ненулевого числа в АLвызывает прокрутку этого числа строк вверх. Для выполнения функции загрузите следующие значения в регистры:
АL= число строк (00 для всего экрана) СХ = начальные строка:столбец
ВН = атрибут или значение пикселя DX= конечные строка:столбец
В следующем примере в текстовом режиме устанавливается атрибут цвета и весь экран прокручивается вверх на одну строку:
Операция не возвращает значений. Вот стандартный способ прокрутки одной
строки вверх.
Для установки строки, в которой находится курсор, определите элемент данных, например, ROW, проинициализировав его значением 0;
Выведите строку и переместите курсор на следующую строку;
Проверьте, не близка ли ROWк нижнему краю экрана (СМРROW,22);
Если да, прокрутите одну строку, используйте ROWдля установки курсора и очиститеROWв 0;
Если нет, увеличьте ROWна 1 (INCROW).
Пара регистров СХ:DХ позволяет прокручивать любую прямоугольную часть экрана. Будьте внимательны и соразмеряйте значение в ФД с размером в СХ:DХ, особенно когда прокручивается только некоторая часть экрана. В ниже следующем примере создается окно (с отдельными атрибутами) из 7 строк и 30 столбцов, с верхним левым углом в координатах 12:25, верхним правым — в 12:54, нижним левым — в 18:25 и нижним правым — в 18:54:
В примере прокручиваются 7 строк, то есть все строки с 12 по 18 включительно, так что только эта область очищается. Обычно при создании окна прокручиваются (и очищаются) все его строки, а в дальнейшем — по одной. Поскольку атрибуты окна сохраняют свои значения, пока они не будут изменены, можно устанавливать различные атрибуты для различных окон одновременно.
В графическом режиме в BHвместо атрибутов помещается значение пикселов. Вот пример, устанавливающий строки в красный цвет:
Функция 07н прерывания int10н: прокрутка экрана вниз
Для текстового и графического режимов прокрутка экрана вниз вызывает сдвиг нижних строк за пределы экрана и появление пустых строк сверху. За исключением того, что экран прокручивается вниз, эта функция работает так же, как и 06Н, рассмотренная ранее. Для выполнения функции загрузите значения в следующие регистры:
АL= число строк (00 — для всего экрана) СХ = начальные строка:столбец
ВН = атрибут или значение пикселя DX= конечные строка:столбец
Функция 08н прерывания int10н: считывание символа и его атрибутов в положении курсора
Функция 08Н считывает как символ, так и его атрибут из области данных дисплея в текстовом или графическом режимах. Считываемый символ определяется положением курсора. Загрузите номер страницы в BH, как показано ниже:
Операция помешает символ в AL, а атрибуты — в АН. В графическом режиме операция возвращает 00Н для не-ASCIIсимволов. Поскольку операция считывает только один символ, для чтения последовательности символов придется использовать цикл.