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


          

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


------------------------------------------------------------ ------------------------------------------------------------ Рис. 8.2. Ввод и отображение имен
Ассемблер для IBM PC. Глава 8 178
1. Разделим длину 09 на 2 получим 4, и 2. Вычтем это значение из 40, получим 36
Команда SHR в процедуре E10CENT сдвигает длину 09 на oдин бит вправо, выполняя таким образом деление на 2. Значение бит 00001001 переходит в 00000100. Команда NEG меняет знак +4 На -4. Команда ADD прибавляет значение 40, получая в регистре DL номер начального столбца - 36. При установке курсора на строку 12 и столбец 36 имя будет выведено на экран в следующем виде:
Строка 12: TED SMITH | | Столбец: 36 40
В процедуре E10CODE имеется команда, которая устанавлива ет cимвол звукового сигнала (07) в области ввода непосред ственно после имени:
MOV NAMEFLD[BX],07
Предшествующая команда устанавливает в регистре BX значение длины, и команда MOV затем, комбинируя длину в регистре BX и адрес поля NAMEFLD, пересылает код 07. Например, при длине имени 05 код 07 будет помещен по адресу NAMEFLD+05 (замещая значение кода Return). Последняя команда в процедуре E10CODE устанавливает ограничитель "$" после кода 07. Таким образом, когда процедура F10CENT выводит на экран имя, то генериpует ся также звуковой сигнал.
Ввод единственного символа Return
При вводе имени, превышающего по длине максимальное значение, указанное в списке параметров, возникает звуковой сигнал и система oжидает ввода только символа Return. Если вообще не вводить имя, а только нажать клавишу Return, то система примет ее и yстановит в списке параметров нулевую длину следующим образом:
Список параметров (шест.): |14|00|0D|...
Для обозначения конца вводимых имен пользователь может прос то нажать Return в ответ на очередной запрос на ввод имени. Прогpамма определяет конец ввода по нулевой длине.
Замена символа Return
Вводимые значения можно использовать для самых разных целей, например: для печати сообщений, сохранения в таблице, записи на диск. При этом, возможно, появится необходимость замены символа Return (шест.0D) в области NAMEFLD на символ пробела (шест.20). Поле NAMELEN содержит

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