Ассемблер и программирование для IBM PC



       

ГЛАВА 8. Экранные операции I: Основные свойства - часть 5


------------------------------------------------------------ ------------------------------------------------------------ Рис. 8.1. Вывод на экран набора символов кода ASCII

Так как символ доллара не выводится на экран и кроме того коды от шест. 08 до шест. 0D являются специальными управляющими cимволами, то это приводит к перемещению

Ассемблер для IBM PC. Глава 8 176

курсора и другим управляющим воздействиям. Задание: введите программу (рис.8.1), выполните ассемблирование, компановку и преобразование в COM-файл. Для запуска программы введите ее имя, например, В:ASCII.COM. Первая выведенная строка начинается с пробельного символа (шест.00), двух "улыбающихся лиц" (шест. 01 и 02) и трех карточных символов (шест.03, 04 и 05). Код 07 выдает звуко вой сигнал. Код 06 должен отобразиться карточным символом "пики", но управляющие символы от шест.08 до 0D сотрут его. Код 0D является "возвратом каретки" и приводит к переходу на новую (следующую)строку. Код шест.0E - представляется в виде музыкальной ноты. Символы после шест. 7F являются графически ми. Можно изменить программу для обхода управляющих символов. Ниже приведен пример фрагмента программы, позволяющий обойти все символы между шест. 08 и 0D. Вы можете поэкспериментировать, oбходя только, скажем, шест. 08 (возврат на символ) и 0D (возврат каретки):

CMP CTR,08H ;Меньше чем 08? JB D30 ; да - принять CMP CTR,0DH ; Меньше/равно 0D? JBE D40 ; да - обойти D30: MOV AH,40H ;Вывод символов < 08 ... ; и > 0D INT 21H D40: INC CTR

ВВОД ДАННЫХ С КЛАВИАТУРЫ: БАЗОВАЯ ВЕРСИЯ DOS ------------------------------------------------------------

Процедура ввода данных с клавиатуры проще, чем вывод на экран. Для ввода, использующего базовую DOS, область ввода требует наличия cписка параметров, содержащего поля, которые необходимы при выполнении команды INT. Во-первых, должна быть определена максимальная длина вводимого текста. Это необходимо для предупреждения пользователя звуковым сигна лом, если набран слишком длинный текст; символы, превышающие максимальную длину не принимаются. Во-вторых, в списке параметров должно быть определенное поле, куда команда возвращает действительную длину введенного текста в байтах. Ниже приведен пример, в котором определен список парамет ров для области ввода. LABEL представляет собой директиву с атрибутом BYTE. Первый байт содержит максимальную длину вводимых данных. Так как это однобайтовое поле, то возможное максимальное значение его - шест. FF или 255. Второй байт необходим DOS для занесения в него действительного числа введенных символов. Третьим байтом начинается поле, которое будет содержать введенные символы.




Содержание  Назад  Вперед