Приложение П.2.2. Esc-последовательности
Esc- последовательности [4, 12] вводятся программой-драйвером Ansi.sys, входящей в состав DOS, и дают пользователю дополнительные возможности управления экраном в сравнении с существующими функциями DOS[5]. Этот драйвер не предоставляет никаких добавочных возможностей, которые нельзя было бы добиться с помощью функций BIOS, однако он делает управление выводом на экран более простым, но, к сожалению, и более медленным. Если в символьной строке, выводимой на экран, встречается код клавиши < Exc> (27 = = 1Bh), за которым следует символ[ (91 = 5Bh), то ansi –драйвер перехватывает последующие символы и интерпретирует их как команды управления экраном или клавиатурой. С помощью Esc- последовательностей можно очищать экран, перемещать по нему курсор, выбирать цвет фона и символа, изменять видеорежим, а также переопределять клавиши клавиатуры. В основном Esc- последовательности используются для формирования цветных информационных кадров. Перечень основных Esc- последовательностей с кратким комментарием сведён в табл. П.2.1 (Ansi- драйвер чувствителен к регистру клавиатуры, на котором вводится завершающая Esc- последовательность буква). Для вывода Esc- последователь-ностей на экран используются обычно функции DOS 09h и 40h (можно использовать и соответствующие средства языков высокого уровня, которые выдают символы на консоль). Таблица П.2.1 Esc- последовательности для управления экраном и клавиатурой
Параметры Esc -последовательности приведены в табл. П.2.2. Ниже приведена программа, иллюстрирующая использование Esc- последовательностей. Программа выводит в середину пустого экрана текст в рамке. Таблица П.2.2 Параметры Esc- последовательности
Листинг 2.5. Демонстрация_1 Esc- последовательности Ideal Model small Stack 256 Dataseg ; Сообщение, оконтуренное рамкой mes db 27, '[2J', 27, '[5; 31; 46m'; Очистка экрана и задание цвета (красные на ; бирюзовом фоне) db 27, '[12; 30H', 0C9h, 22 dup (0CDh), 0BBh; Позиционирование (строка, столбец) и ; символы db 27, '[13; 30H', 0BAh, 'ESC-последовательности', 0BAh; Позиционирование и символы db 27, '[14; 30H', 0C8h, 22 dup (0CDh), 0BCh; Позиционирование и символы db 27, '[0m', 27, '[01; 01H', '$'; Отмена цвета и позиционирование Codeseg Start: mov ax, @data; Установка в ds адреса mov ds, ax; сегмента данных mov ah, 09h; Функция вывода mov dx, offset mes int 21h Exit: mov ax, 04C00h; Функция DOS 4Сh: выход из программы int 21h; Вызов DOS. Останов End Start; Конец программы/точка входа Как известно, кроме обычных символов и других знаков, имеющихся на клавиатуре, на экран можно выводить символы псевдографики, которым соответствуют коды от 0B0h до 0DFh. В приведённой выше программе для формирования двойной рамки используются следующие коды: ║ 0BAh ╗ 0BBh ╝ 0BCh ╚ 0C8h ╔ 0C9h ═ 0CDh Можно предложить и другой способ использования ESC- последовательностей при выводе на экран сообщений функцией 09h int 21h с использованием атрибутов цвета для фона и символов. Данный способ иллюстрируется следующим фрагментом программы. Листинг 2.6. Демонстрация_2 Esc- последовательности Macro outstr message; макрос вывода строки mov ah, 09h mov dx, offset message int 21h Endm outstr DATASEG mes1 db 'Афанасьев В.А.', 10, 13, '$' mes2 db '*** Кафедра ВТ ***$' red_blue db 27, '[31; 44m$'; Задание атрибутов цвета " Красный по синему" ; для изображения текста на экране, выводимого с помощью функции 09h int 21h green_white db 27, '[32; 47m$'; " Зелёный по белому" cancel db 27, '[0m$'; Восстановление атрибутов цвета по умолчанию CODESEG Start: mov ax, @data; Установка в ds адреса mov ds, ax; сегмента данных outstr red_blue; Установка атрибутов цвета outstr mes1; Вывод сообщения mes1 outstr green_white; Установка атрибутов цвета outstr mes2; Вывод сообщения mes2 outstr cancel; Восстановление атрибутов цвета .... Назначения атрибутов цвета будут действовать на все последующие команды вывода (включая функции BIOS прерывания 10h) до тех пор, пока не будут сделаны другие назначения. Приложение П.2.3. Таблица символов в кодировке ASCII В данном приложении приведена полная таблица отображаемых символов ASCII, состоящая из двух равных частей по 128 символов. Номера строк соответствуют первой цифре 16-теричного кода символа, номера столбцов – второй, так что, например, код прописной латинской буквы А = 41h. Первая половина таблицы символов с кодами 00h – 7Fh является Американским стандартным кодом для обмена информации (английская аббревиатура ASCII) и имеет международный стандарт, вторая – соответствует одному из широко распространённых в России вариантов кодирования символов для IBM- совместимых компьютеров. Первая половина таблицы ASCII содержит символы двух типов: управляющие (коды 00h – 1Fh, 7F) и алфавитно-цифровые (20h-7E), вторая – символы кириллицы и псевдографики.
|