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



         

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


Один из способов запоминания строки, стандартный для Форта, состоит в использовании счетной строки (иногда ее называют нумерованной строкой). Счетная строка представляет собой область памяти, первый байт которой содержит число символов строки, за которым следуют собственно коды ASCII. Мы можем переопределить слово PUTTEST, помещающее строку "TEST" в PAD, следующим образом: : PUTTEST 84 83 69 64 4 PAD С! 4 0 DO PAD I 1+ + С! LOOP ;

4 PAD С! помещает число символов (счетное число) в PAD. Остальная часть определяемого слова размещает строку символов в более старшие адреса. Чтобы посмотреть строку, нужно, ввести с клавиатуры PAD 1+ PAD С@ TYPE

После этого в стеке будет находиться адрес начала строки и на вершине стека - число символов, т.е. стек подготовлен для распечатки словом TYPE. Поскольку этот принцип широко используется, предусмотрены стандартные слова для получения числа символов и адреса символьной строки: : COUNT (адр - адр+1 n) DUP 1+ SWAP C@ ; Поэтому вы сможете увидеть тестовое слово в PAD с помощью PAD COUNT TYPE

В гл. 9 вы увидите, что счетные строки обеспечивают большую гибкость при манипулировании с символьным текстом. Для примера скажем, что эта книга была набрана с помощью редактора текста, написанного на Форте, и эта программа редактора работает не хуже любой подобной программы, написанной на языке ассемблера.

В гл. 1 вы познакомились с более простым способом вывода строк с помощью слова ." (точка-кавычка), т.е. ." This is a test" (Это тест) выведет на дисплей строку "This is a test" (Это тест). Закрывающая кавычка не является словом Форта, это просто символ, который указывает слову ." на необходимость прекращения вывода строки на дисплей. В языке Форт-79 слово ." работает как в определении нового слова, так и вне его, с той лишь разницей, что вне определения строка выводится немедленно, в то время как, находясь внутри определяемого слова, она не выводится, пока определяемое слово не будет исполнено.


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