Начальный курс программирования на языке Форт

         

КОД ДЛЯ ПРЕДСТАВЛЕНИЯ СИМВОЛЬНОЙ ИНФОРМАЦИИ (ASCII)


Если числа в компьютере хранятся в двоичной форме, то как в нем хранятся буквы или другие символы? Тоже в двоичной форме, только в специальном коде, который был принят в качестве промышленного стандарта много лет назад, ASCII1 (стандартный американский код для обмена информацией). В табл. 7.1 приводятся все символы системы и их цифровые представления как в шестнадцатиричной, так и в десятичной форме.

Символы, помещенные в первом столбце (имеющие шестнадцатиричные коды 0 - 1F), называются управляющими, так как они указывают, что терминал или компьютер должен выполнить, например подать звуковой сигнал, вернуть каретку на одну позицию, начать новую строку и т. д. Остальные символы называются печатными, поскольку они выводят на печать видимые символы, включая буквы, цифры от 0 до 9, все доступные символы и даже пробел (шестнадцатиричный код 20). Единственным исключением является символ DEL (шестнадцатиричный код 7F), который предписывает компьютеру игнорировать последний переданный символ.

В первой главе мы ввели слово EMIT, которое берет из стека значение в коде ASCII и посылает его на терминал для распечатки этого значения в виде символа, например: 65 EMIT A ok 66 EMIT В ok

(Мы используем десятичное, а не шестнадцатиричное представние, потому что ваш современный компьютер больше всего приспособлен ко вводу именно в таком представлении2.)

Почему бы нам не проверить действие EMIT на каждом печатном символе «автоматически»? : ОТОБРАЖАЕМЫЕ 127 32 DO I EMIТ SPACE LOOP ;

1 Код ASCII совпадает с применяемым в СССР семиразрядным кодом КОИ-7. В реализациях Форта на отечественных ЭВМ используются восьмиразрядные коды (например, КОИ-8) с добавлением кодов русских букв, что и позволяет использовать русские слова. - Примеч ред.

2 Для специалистов Не тратьте время на раздел для начинающих.

Таблица 7.1. Символы в коде ASCII и их числовые эквиваленты

Символ Шестн Дес. Символ Шестн. Дес. Символ Шестн. Дес. Символ Шестн Дес.
NUL 00 0 SP 20 32 @ 40 64

60 96
SOH 01 1 ! 21 33 A 41 65 а 61 97
STX 02 2 " 22 34 В 42 66 b 62 98
ETX 03 3 # 23 35 С 43 67 с 63 99
EOT 04 4 $ 24 36 D 44 68 d 64 100
ENQ 05 5 % 25 37 E 45 69 е 65 101
ACK 06 6 & 26 38 F 46 70 f 66 102
BEL 07 7 '

27 39 G 47 71 9 67 103
BS 08 8 ( 28 40 H 48 72 h 68 104
HT 09 9 ) 29 41 I 49 73 i 69 105
LF 0A 10 * 2A 42 J 4A 74 j 6A 106
VT 0B 11 + 2B 43 К 75 k 6B 107
FF 12 ,

2C 44 L 4C 76 l 6C 108
CR 0D 13 - 2D 45 M 4D 77 m 6D 109
SM 0E 14 . 2E 46 N 4E 78 n 6E 110
SI 0F 15 / 2P 47 O 4F 79 o 6F 111
DLE 10 16 0 30 48 P 50 80 p 70 112
DC1 11 17 1 31 49 Q 51 81 q 71 113
DC2 12 18 2 32 50 R 52 82 r 72 114
DC3 13 19 3 33 51 S 53 83 s 73 115
DC4 14 20 4 34 52 Т 54 84 t 74 116
NAK 15 21 5 35 53 U 55 85 u 75 117
SYN 16 22 6 36 54 V 56 86 v 76 118
ETB 17 23 7 37 55 W 57 87 w 77 119
CAN 18 24 8 38 56 X 58 88 x 78 120
EM 19 25 9 39 57 Y 59 89 y 79 121
SUB 1A 26 : ЗА 58 Z 5A 90 z 7A 122
ESC 1B 27 ; 3B 59 [ 91 { 7B 123
FS 1C 28 < 3C 60 \ 5C 92 | 7C 124
GS 1D 29 = 3D 61 ] 5D 93 } 7D 125
RS 1E 30 > 3E 62 ^ 5E 94 ~ 7E 126
US 1F 31 ? 3F 63 _ 5F 95 DEL (RB) 7F 127
<
В первом столбце перечислены символы в коде ASCII или, если это управляющие символы, в общепринятых обозначениях; в двух последующих столбцах даются их шестнадцатиричные и десятичные эквиваленты

Слово ОТОБРАЖАЕМЫЕ выведет на печать каждый требуемый символ из кода ASCII, т. е. символы с кодами от десятичного 32 до десятичного 126. (Мы используем коды ASCII в качестве индекса цикла DO.) ОТОБРАЖАЕМЫЕ ! " # $ & ' ( ) * + ... ok

Начинающие могут поинтересоваться, как поведет себя EMIT с управляющими символами; наберите на клавиатуре такой текст:



Вы услышите какой-то сигнал, который является вариантом звонка печатающей машинки для дисплея. (В некоторых системах слово EMIT вместо того чтобы выполнить команду, выводит специфические символы.)

Неплохо знать следующие управляющие символы: НАЗВАНИЕ ОПЕРАЦИЯ ДЕСЯТИЧНЫЙ ЭКВИВАЛЕНТ

BS Возврат назад на одну 8 позицию ("забой") LF Перевод строки 10 CR Возврат каретки 13

Поэкспериментируйте с этими управляющими символами и посмотрите, как они выполняются.

Код ASCII разработан таким образом, что каждый символ в нем может быть представлен одним байтом. В приводимых здесь таблицах буква «с» означает, что содержимое некоторого байта соответствует символу в коде ASCII.

В некоторых Форт-системах имеется слово ASCII, которое используется для улучшения читабельности определений, поскольку переводит отдельные символы в шестнадцатиричные значения. Вспомним, к примеру, следующее определение: : STAR 42 EMIT ;

Если в вашей системе есть это слово, то вы можете определить его так: : STAR ASCII * EMIT ;

В обоих случаях элементы словаря после трансляции определений будут абсолютно одинаковы, однако последнее определение легче воспринимается. ASCII ( -- c) перевод следующего символа из входного потока в его ASCII-эквивалент


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