Язык программирования Форт


Американский стандартный код для обмена информацией (ASCII)


Кроме представления чисел разряды в памяти могут представлять алфавитно-цифровые символы. Символы просто кодируются числами, при этом наиболее распространенным является код ASCII, полное наименование которого приведено в заголовке. Первоначально код ASCII предназначался не для компьютеров, а для телекоммуникаций. Это привело к тому, что некоторые коды имеют странные названия. Например, код 7 (называемый BEL -- звонок) предназначался для звонка в момент возврата каретки с целью привлечения внимания оператора. Код 5 называется WRU (от Who aRe yoU -- кто там?), предназначался для запроса служебного позывного оператора на другом конце линии, код 25 -- ЕМ (End of Media -- конец носителя) может быть использован для индикации конца телеграфной ленты. Хотя мы еще увидим в , как Форт обращается со строками символов сейчас мы рассмотрим, как он воспринимает отдельные символы. Несмотря на то, что код ASCII не предназначался для ЭВМ, символы в нем все же упорядочены логично с точки зрения ЭВМ т.е. в порядке расположения букв алфавита. Полный набор кодов ASCII приведен в . В показано только, как он организован.

Таблица 3.3, Сводка кодов ASCII в десятичной и двоичной форме

От До Десятичный Двоичный Десятичный Двоичный Назначение

000 00000000 031 00011111 Коды управления ЭВМ 032 00100000 064 01000000 Цифры и знаки пунктуации 065 01000001 090 01011010 Буквы A-Z 091 01011011 096 01100000 Разные знаки 097 01100001 122 01111010 Буквы a-z 123 01111011 127 01111111 Разные символы 128 10000000 255 11111111 Кодами ASCII не являются

Вы можете заметить, что в стандартном коде фактически используется только 7 разрядов из байта. Это объясняется тем, что для телетайпов использовалась семидорожечная бумажная лента с семью отверстиями поперек ленты. (Она же использовалась для хранения программ и данных до сравнительно недавнего времени.) Числа с восьмым разрядом, установленным в 1 (128 - 255), не являются кодами ASCII как в Форт-79, так и в Форт-83, но в некоторых версиях Форт и большинстве микрокомпьютеров частично используются.
Например, в MMSFORTH с ЭВМ TRS-80 и IBM PC они используются для графических и специальных символов. Первые 31 код называются управляющими кодами. Хотя их назначение стандартизовано для передачи данных, но в микрокомпьютерах они применяются для разных целей, т.е. стандарт нарушается. Тем не менее некоторые из них все же стандартизованы, как, например, 8 -- код возврата на позицию влево, 13 -- возврат каретки, 10 -- перевод строки.

Управляющие коды посылаются с клавиатуры путем нажатия клавиши "Control" (управление, иногда обозначается "Ctrl") и одновременно какой-то литерной клавиши, например для возврата влево на позицию -- это Ctrl-H. Если на клавиатуре нет клавиши "Ctrl", то в вашей версии Форта должна быть предусмотрена какая-либо другая клавиша, которая действует как "Ctrl", например в MMSFORTH с ранними моделями ЭВМ TRS-80 использовалась клавиша "Clear" (очистка). Вам нужно посмотреть по своей документации, какие управляющие коды используются в вашей версии форта и какую клавишу нужно использовать, если у вас нет клавиши "Ctrl". Чтобы узнать как в вашей версии Форта используются коды ASCII, воспользуйтесь двумя словами EMIT и KEY.

Введите

65 EMIT

и на экране должно появиться

A ok.

Слово EMIT берет число с вершины стека и посылает его ASCII-эквивалент на экран. Испытайте со словом EMIT другие числа, сравнивая получаемые результаты с таблицей в , чтобы получше прочувствовать, как ваше оборудование обращается с кодами ASCII. Некоторые особые символы, такие как тильда "~", "стрелка вверх" (^), квадратные скобки ([]) на различных компьютерах могут выглядеть по-разному, и то, что печатает ваш принтер, также может отличаться от того, что выводится на экране. (Предупреждение: использование чисел меньше 32 может привести к неожиданным результатам, так как это управляющие коды.)

Если слово EMIT позволяет вывести символы ASCII, соответствующие числу, находящемуся в стеке, то слово KEY позволяет выдать в стек код символа ASCII, вводимого с клавиатуры.Введите слово

KEY

Ничего заметного при этом не случится, даже сообщение "ok" не появится. Теперь нажмите клавишу "В", а потом . ; после этого вы увидите, что в стек было положено число 66. Слово KEY приказало Форту приостановить то, что он делал, и подождать, когда будет нажата какая-либо клавиша, тогда код, соответствующий символу клавиши, кладется в стек. Когда вы нажали клавишу "В", вы поместили значение кода ASCII в стек и увидели этот код, когда ввели . (точку). Что вы увидите, если введете с клавиатуры

KEY EMIT

Попробуйте после этого нажать какую-либо клавишу. Можете ли вы объяснить результат ? Если у вас нет компьютера под рукой, то вот, что вы должны увидеть, если, скажем, нажмете Z после :

Z ok

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


Содержание раздела