Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Использование символов возврата каретки, конца строки и табуляции для вывода на экран



Один из способов получения более эффективного выводе на экран — использование управляющих символов возврата каретки, перевода строки и табуляции:

Десятичные ASCII Шестнадцатеричные

CR 13 0DH

LF 10 0AH

TAB 09 09H

Эти символы при операциях ввода-вывода выполняют одинаковые действия как в базовой, так и в расширенной версиях DOS. Например:

MESSAGE DB 09, 'PC Users Group Annual Report', 13, 10

MOV AH, 40H; Запрос на вывод

MOV BX, 01; Номер файла

MOV CX, 31; Длина текста

LEA DX, MESSAGE; Адрес текста

INT 21H; Вызов DOS

Использование директивы EQU для определения кодов делает программу более понятной:

CR EQU 13; или EQU 0DH LF

EQU 10; или EQU 0AH TAB

EQU 09; или EQU 09H

MESSAGE DB TAB, 'PC Users Group Annual' DB 'Report', CR, LF

 

 

Расширенные возможности экранных операций

Байт атрибутов

Байт атрибутов в текстовом (не графическом) режиме определяет характеристики каждого отображаемого символа. Байт-атрибут имеет следующие 8 бит:

Фон Текст

Атрибут: BL R G B I R G B

Номер битов: 7 6 5 u 3 2 1 0

Буквы RGB представляют битовые позиции, управляющие красным (red), зеленым (green) и синим (blue) лучом в цветном мониторе. Бит 7 (BL) устанавливает мигание, а бит 3 (I) — уровень яркости.

Для модификации атрибутов можно комбинировать биты следующим oбразом:

Эффект выделения

Фон Текст

RGB RGB

Неотображаемый (черный по черному) 000 000

Подчеркивание (не для цвета) 000 001

Нормальный (белый по черному) 000 111

Инвертированный (черный по белому) 111 000

Цветные мониторы не обеспечивают подчеркивания; вместо этого установка бит подчеркивания выбирает синий цвет для текста и получается отображение синим по черному. Ниже приведены некоторые атрибуты, основанные на комбинации битов фона, текста, мигания и выделения яркостью:

Эффект выделения Двоичный код Шест. код

Неотображаемый (для паролей) 0000 0000 00

Белый по черному (нормальный) 0000 0111 07

Белый по черному (мигание) 1000 0111 87

Белый по черному (яркий) 0000 1111 0F

Черный по белому (инвертированный) 0111 0000 70

Черный по белому (инверт. мигающий) 1111 0000 F0

Эти атрибуты подходят для текстового режима, как для монохромных, так и для цветных дисплеев. Для генерации атрибута можно использовать команду INT 10H. При этом регистр BL должен содержать значение байта-атрибута, а регистр AH один из следующих кодов: 06 (прокрутка вверх), 07 (прокрутка вниз), 08 (ввод атрибута или символа), 09 (вывод атрибута или символа).

В случае, если программа установила некотоpый атрибут, то он остается таким, пока программа его не изменит. В случае, если установить значение байта атрибута равным шест.00, то символ вообще не будет отображен.

Прерывание BIOS INT 10H

Прерывание INT 10H обеспечивает управление всем экраном. В регистре AH устанавливается код, определяющий функцию прерывания. Команда cохраняет содержимое регистров BX, CX, DX, SI и BP. Ниже описывается все возможные функции.

AH=00

Установка режима. Данная функция позволяет переключать цветной монитор в текстовый или графический режим. Установка pежима для выполняемой в текущий момент программы осуществляется c помощью INT 10H.

AH=01

Установка размера курсора. Курсор не является символом из набора ASCII-кодов. Компьютер имеет собственное аппаратное обеспечение для управления видом курсора. Для этого имеется специальная обработка по INT прерыванию. Обычно символ курсоpа похож на символ подчеркивания.

AH=02

Установка позиции курсора. Эта функция устанавливает курcор в любую позицию на экране в соответствии с координатами cтроки и столбца.

AH=03

Чтение текущего положения курсора. Программа может определить положение курсора на экране (строку и столбец), а также pазмер курсора, следующим образом:

AH=04

Чтение положения светового пера. Данная функция используeтся в графическом режиме для определения положения светового пеpа.

AH=05

Выбор активной страницы.

AH=06

Прокрутка экрана вверх. Когда программа пытается выдать текст на строку ниже последней на экране, то происходит переход на верхнюю строку. Даже если с помощью прерывания будет специфициpован нулевой столбец, все равно предполагается новая строка, и нижние строки на экране будут испорчены. Для решения этой проблемы используется прокрутка экрана.

Ранее код 06 использовался для очистки экрана. В текстовом режиме установка в регистре AL значения 00 приводит к полной прокрутке вверх всего экрана, очищая его пробелами. Установка ненулевого значения в регистре AL определяет количество строк прокрутки экрана вверх. Верхние строки уходят с экрана, а чистые строки вводятся снизу. Следующие команды выполняют прокрутку всего экрана на одну строку:

MOV AX, 0601H; Прокрутить на одну строку вверх

MOV BH, 07; Атрибут: нормальный, черно-белый

MOV CX, 0000; Координаты от 00, 00

MOV DX, 184FH; до 24, 79 (полный экран)

INT 10H; Вызвать BIOS

Для прокрутки любого количества строк необходимо установить соответствующее значение в регистре AL. Регистр BH содержит атрибут для нормального или инвертированного отображения, мигания, установки цвета и так далее. Значения в регистрах CX и DX позволяют прокручивать любую часть экрана. Ниже объясняется стандартный подход к прокрутке:

1. Определить в элементе ROW (строка) значение 0 для установки строки положения курсора.

2. Выдать текст и продвинуть курсор на следующую строку.

3. Проверить, находится ли курсор на последней строке (CMP ROW, 22).

4. В случае, если да, то увеличить элемент ROW (INC ROW) и выйти.

5. В случае, если нет, то прокрутить экран на одну строку и, используя ROW переустановить курсор.

AH=07

Прокрутка экрана вниз. Для текстового режима прокрутка экрана вниз обозначает удаление нижних строк и вставка чистых строк сверху.

Регистр AH должен содержать 07, значения остальных регистpов аналогичны функции 06 для прокрутки вверх.

AH=08

Чтение атрибута/символа в текущей позиции курсора. Для чтения символа и байта атрибута из дисплейного буфера, как в текстовом, так и в графическом режиме используются следующие команды:

MOV AH, 08; Запрос на чтение атр./симв.

MOV BH, 00; Страница 0 (для текстового реж.)

INT 10H; Вызвать BIOS

Данная функция возвращает в регистре AL значение символа, а в AH — его атрибут. В графическом режиме функция возвращает шест.00 для не ASCII-кодов. Так как эта функция читает только один cимвол, то для символьной строки необходима организация цикла.

AH=09

Вывод атрибута/символа в текущую позицию курсора. Для вывода на экран символов в текстовом или графическом режиме с установкой мигания, инвертирования и так далее можно воспользоваться следующими командами:

MOV AH, 09; Функция вывода

MOV AL, символ; Выводимый символ

MOV BH, страница; Номер страницы (текст.реж.)

MOV BL, атрибут; Атрибут или цвет

MOV CX, повторение; Число повторений символа

INT 10H; Вызвать BIOS

В регистр AL должен быть помещен выводимый на экран символ. Значение в регистре CX определяет число повторений символа на экране. Вывод на экран последовательности различных символов требует организации цикла. Данная функция не перемещает курсор. В следующем примере на экран выводится пять мигающих «сердечек» в инвертированном виде:

MOV AH, 09; Функция вывода

MOV AL, 03H; Черви (карточная масть)

MOV BH, 00; Страница 0 (текст. режим)

MOV BL, 0F0H; Мигание, инверсия

MOV CX, 05; Пять раз

INT 10H; Вызвать BIOS

В текстовом (но не в графическом) режиме символы автоматически выводятся на экран и переходят с одной строки на другую. Для вывода на экран текста запроса или сообщения необходимо составить программу, которая устанавливает в регистре CX значение 01 и в цикле загружает в регистр AL из памяти выводимые символы текста. Так как регистр CX в данном случае занят, то нельзя использовать команду LOOP. Кроме того, при выводе каждого символа необходимо дополнительно продвигать курсор в следующий столбец (функция 02).

В графическом режиме регистр BL используется для определения цвета графики. В случае, если бит 7 равен 0, то заданный цвет заменяет текущий цвет точки, если бит 7 равен 1, то происходит комбинация цветов с помощью команды XOR.

AH=0A

Вывод символа в текущую позицию курсора. Единственная разница между функциями 0A и 09 состоит в том, что функция 0A не устанавливает атрибут:

MOV AH, 0AH; Функция вывода

MOV AL, символ; Выводимый символ

MOV BH, страница; Номер страницы (для текста)

MOV CX, повторение; Число повторений символа

INT 10H; Вызвать BIOS

Для большинства применений команда прерывания DOS INT 21H более удобна.

AH=0E

Вывод в режиме телетайпа. Данная функция позволяет использовать монитор, как простой терминал.

Для выполнения этой функции необходимо установить в регистре AH шест. значение 0E, в регистр AL поместить выводимый символ, цвет текста (в графическом режиме) занести в регистр BL и номер страницы для текстового режима — в регистр BH. Звуковой сигнал (код 07H), возврат на одну позицию (08H), конец строки (0AH) и возврат каретки (0DH) действуют, как команды для форматизации экрана.

Данная функция автоматически продвигает курсор, переводит символы на следующую cтроку, выполняет прокрутку экрана и сохраняет текущие атрибуты экрана.

AH=0F

Получение текущего видео режима. Данная функция возвращает в регистре AL текущий видео режим, в pегистре AH — число символов в строке (20, 40 или 80), в регистре BH — номер страницы.

 

 

AH=13

Вывод символьной строки (только для AT). Данная функция позволяет на компьютерах типа AT выводить на экран символьные строки с установкой атрибутов и перемещением курсора:

MOV AH, 13H; Функция вывода на экран

MOV AL, сервис; 0, 1, 2 или 3

MOV BH, страница;

LEA BP, адрес; Адрес строки в ES: BP

MOV CX, длина; Длина строки

MOV DX, экран; Координаты на экране

INT 10H; Вызвать BIOS

Возможен следующий дополнительный сервис:

u 0 — использовать атрибут и не перемещать курсор;

u 1 — использовать атрибут и переместить курсор;

u 2 — вывести символ, затем атрибут и не перемещать курсор;

u 3 — вывести символ, затем атрибут и переместить курсор.

Расширенный ASCII код

ASCII-коды от 128 до 255 (шест. 80-FF) представляют собой ряд специальных символов полезных при формировании запросов, меню, специальных значков с экранными атрибутами. Например, используя cледующие символы можно нарисовать прямоугольник:

DA

Верхний левый угол

BF

Верхний правый угол

C0

Нижний левый угол

D9

Нижний правый угол

C4

Горизонтальная линия

B3

Вертикальная линия

Следующие команды с помощью INT 10H выводят горизонтальную линию на 25 позиций в длину:

MOV AH, 09; Функция вывода на экран

MOV AL, 0C4H; Горизонтальная линия

MOV BH, 00; Страница 0

MOV BL, 0FH; Выделение яркостью

MOV CX, 25; 25 повторений

MOV 10H; Вызвать BIOS

Напомним, что курсор не перемещается.

Вывод вертикальной линии включает цикл, в котором курсор перемещается вниз на одну строку и выводится символ шест. B3. Для штриховки может быть полезен символ с точками внутри:

B0

Одна четверть точек (светлая штриховка)

B1

Половина точек (средняя штриховка)

B2

Три четверти точек (темная штриховка)

Можно извлечь много полезных идей, изучая программное обеспечение с профессионально организованным выводом, или самому изобрести оригинальные идеи для отображения информации.


Поделиться:



Популярное:

  1. I.4. СЕМЬЯ И ШКОЛА : ОТСУТСТВИЕ УСЛОВИЙ ДЛЯ ВОСПИТАНИЯ
  2. II. Ассистивные устройства, созданные для лиц с нарушениями зрения
  3. II. Лицензионный договор о предоставлении права на использование.
  4. II. Порядок представления статистической информации, необходимой для проведения государственных статистических наблюдений
  5. II.4. Набор прографки таблицы и вывода
  6. III. Защита статистической информации, необходимой для проведения государственных статистических наблюдений
  7. III. Перечень вопросов для проведения проверки знаний кандидатов на получение свидетельства коммерческого пилота с внесением квалификационной отметки о виде воздушного судна - самолет
  8. Qt-1 - сглаженный объем продаж для периода t-1.
  9. V Методика выполнения описана для позиции Учителя, так как Ученик находится в позиции наблюдателя и выполняет команды Учителя.
  10. V. Порядок разработки и утверждения инструкций по охране труда для работников
  11. VI. Порядок возврата гранта. Ответственность
  12. VII. Перечень вопросов для проведения проверки знаний кандидатов на получение свидетельства линейного пилота с внесением квалификационной отметки о виде воздушного судна - вертолет


Последнее изменение этой страницы: 2017-03-08; Просмотров: 1088; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.037 с.)
Главная | Случайная страница | Обратная связь