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



         

Глава 5. Ввод и вывод - часть 5


если игнорировать значение старшего бита.

Можно определить через EMIT два стандартных слова, действие которых столь очевидно, что мы приводим только их определение: : SPACE 32 EMIT ; (пробел) и : CR 13 EMIT 10 EMIT ; (перевод строки + возврат каретки) Не столь очевидно определение стандартного слова "пробелы": : SPACES 0 DO SPACE LOOP ;

Оно выводит пробелы, количество которых определяется числом на вершине стека. Нестандартное слово BL (пробел) включено во многие версии Форта. Оно помещает на вершину стека 32, т.е. ASCII-код пробела. Таким образом, можно дать иное определение пробела: : SPACE BL EMIT ;

Более сложное слово с использованием EMIT - это TYPE (печать). Его подробное описание вы найдете в гл. 9, где мы объясним символьные строки, но, чтобы начать пользоваться им раньше, мы рассмотрим его уже сейчас. Слово TYPE просматривает последовательность однобайтовых (8-разрядных) чисел (символов) из памяти и посылают их ASCII-эквивалент на экран. Для него требуется число на вершине стека, а ниже него - адрес. Слово TYPE выводит указанное число символов, начинающихся с этого адреса, на экран. Рассмотрим пример. Может быть, вам потребуется освежить в памяти счетные циклы DO-LOOP (гл. 1) и слово PAD из гл. 4. Слово I помещает текущее значение параметра цикла на вершину стека. Определим слово : PUTTEST 84 83 69 84 4 0 DO PAD I + С! LOOP ; , которое поместит символы ASCII символьной строки "TEST" в памяти, начиная с адреса, выдаваемого словом PAD. Теперь введите с клавиатуры PAD 4 TYPE и на экране появится строка "TEST". Обратите внимание, что коды ASCII должны быть помещены в стек в обратном порядке. А вот одно из возможных определений слова TYPE; попробуйте разобраться, как оно работает : : TYPE (адр n --) 0 DO DUP I + С@ EMIT LOOP DROP ;

Теперь нам следует познакомиться с символьными строками, о которых более подробно вы узнаете из гл. 9. Чтобы напечатать или сделать что-нибудь еще с символьной строкой, нам надо знать не только входящие в нее символы, но также их количество.




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