Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ZX Spectrum для пользователей и программистов.doc
Скачиваний:
56
Добавлен:
28.09.2019
Размер:
1.92 Mб
Скачать

_____________________________Команды условной трансляции

Иногда бывает необходимо, в зависимости от выполнения тех или иных условий, получать различные варианты объектного кода программы. Работая в GENS4, Вы сможете добиться этого, используя команды условной трансляции IF, ELSE и END . С их помощью можно устанавливать или сбрасывать флаг разрешения трансляции, чем соответственно разрешать или запрещать ассемблирование фрагментов текста программы.

IF <выражение>

Сбросить флаг разрешения трансляции при нулевом значении выражения — следующие за командой строки программы не ассемблировать*. Если значение выражения отлично от нуля, то ассемблирование продолжить нормально.

ELSE

Инвертировать флаг разрешения трансляции. Если перед появлением ELSE ассемблирование было разрешено, то запретить его, и наоборот.

END

Установить флаг разрешения трансляции. После этой команды-

*)Обратите внимание, что проверка синтаксиса программы осуществляется и при запрещенной трансляции.

ранее прерванное ассемблирование продолжается нормально.

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

____________________________________Команды ассемблера

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

Команды ассемблера записываются в поле метки и не должны содержать разделителей (табуляций). В командах и *F операнд необходимо отделить пробелом.

*Е

Вставить в листинг три пустые строки. Полезно использовать для разделения программных модулей.

*Н string

Напечатать заголовок. В листинг включается строка string. Она будет выводиться также после каждого выполнения команды *Е.

*S

Приостановить выдачу листинга ассемблирования. Продолжить трансляцию можно, нажав любую клавишу.

*L+

Разрешить выдачу листинга.

*L-

Запретить выдачу листинга.

*D+

Выводить значение счетчика адресов в десятичном виде.

*D-

Выводить значение счетчика адресов в шестнадцатиричном виде.

*C-

Выводить сокращенный листинг ассемблирования. Строки сокращенного листинга не содержат объектного кода. Таким образом, они укорачиваются на 9 символов, что делает листинг более удобным для чтения. Команда используется преимущественно в 32-символьной версии GENS4.

*С+

Выводить полный листинг ассемблирования.

*M+

Разрешить распечатку текста макроопределений.

*M-

Запретить распечатку текста макроопределений.

*F filename

Включить в процесс трансляции фрагмент программы, записанный на ленте или диске. Из файла с указанным именем считываются и ассемблируются блоки текста. Использование команды *F позволяет значительно сократить объем текстового файла, находящегося в памяти, и, следовательно, дает возможность создавать объектный код, занимающий почти всю доступную память. При работе с магнитофоном файл необходимо предварительно записать на ленту с помощью команды редактора Т.

СТРОЧНЫЙ РЕДАКТОР

Встроенный в GENS4 строчный редактор позволяет вводить и редактировать текст программы на языке ассемблера. Управление редактором осуществляется с помощью команд редактора, которые вводятся на подсказку > и имеют следующий формат:

C[N1],[N2],[S1],[S2]

где С — собственно команда;

N1,N2 — числа в пределах от 1 до 65535 включительно;

S1,S2 — строки, состоящие не более чем из 20 символов.

Команды редактора могут вводиться как в верхнем, так и в нижнем регистрах клавиатуры. Если в числовом параметре будет встречен нечисловой символ, не являющийся разделителем, то текст командной строки, начиная с этого места и до конца строки, будет проигнорирован.

Редактор запоминает введенные параметры и может затем использовать их для некоторых команд в качестве значений, устанавливаемых по умолчанию.

Если введена некорректная командная строка, например:

РР1,20000,G.WINDOWS

то команда выполнена не будет, а редактор сделает Вам замечание: Pardon?. Исправьте ошибку и введите команду правильно:

P1,20000,G.WINDOWS

КОМАНДЫ РЕДАКТОРА

Команды редактора вводятся нажатием клавиши с соответствующей латинской буквой, которая в названии команды выделена полужирным шрифтом.

___________________________________________Вставка строк

Insert [N][,M]*

Автоматически генерировать строки, начиная со строки N и шагом М. После ввода команды Вы можете производить последовательный набор текста программы. Отказаться от генерации строк можно, нажав клавишу Edit (Caps Shift/1). Если в процессе ввода программы номер строки превысит 32767, то генерация строк прекратится._________________________

*)Аргументы в квадратных скобках являются необязательными, при их пропуске, как правило, используется Значение параметра по умолчанию.

Строку также можно вставить в программу, введя на подсказку > ее номер и через пробел — текст.

____________________________Вывод листинга программы

List [N][,M]

Вывести на экран листинг программы со строки N по строку М включительно. По умолчанию N равно 1, М — 32767. Листинг выводится по страницам. Переход к следующей странице происходит по нажатию любой клавиши, кроме Edit, нажатие которой прервет выдачу листинга и вернет управление редактору.

Konfigure list N

Установить количество строк в странице листинга.

Write text [N][,M]

Распечатать на принтере текст программы со строки N по М включительно.

Если N и М не указаны, то будет распечатана вся программа.

_________Редактирование текста ассемблерной программы

reNumber [N][,M]

Перенумеровать строки программы, начиная с первой строки, которой присваивается номер N, с шагом М. Если в результате выполнения команды номер какой-либо строки может превысить 32767, то команда не выполняется.

Delete N,M

Удалить строки от N до М включительно. Если М меньше N, или определено менее двух аргументов, то команда игнорируется. Отдельная строка может быть удалена просто введением ее номера.

Move [N][,M]

Копировать строку с номером N в строку с номером М. Если строки с номером N не существует, то команда игнорируется. Если строка с номером М существует, ее содержимое заменяется содержимым строки N. Аккуратно используйте эту команду — старайтесь не вызывать ее без аргументов.

Find [N][,M][,Fs][,Ss]

Найти стринг (строку текста) Fs в программе, начиная со строки N и до строки М. Если такая строка найдена, то она отображается на экране и GENS4 переходит в режим редактирования строки, причем курсор устанавливается на начало найденного стринга. В режиме редактирования можно заменить стринг Fs на стринг Ss (см. команду редактора Е).

Edit N

Редактировать строку с номером N. Вызванная на редакцию строка копируется в буфер и отображается на экране вместе с номером. Редактирование происходит в буфере, поэтому исходная строка не изменяется и в любой момент может быть восстановлена. При отсутствии строки с номером N команда игнорируется. Редактирование осуществляется с помощью следующих подкоманд (клавиш):

SPACE — переместить курсор на одну позицию вправо;

CAPS SHIFT/0 — переместить курсор на одну позицию влево;

CAPS SHIFT/8 — переместить курсор на следующую позицию табуляции;

List - отобразить на экране текущее состояние строки;

Kill — удалить символ в указанной курсором позиции;

Zap — удалить все символы, начиная с указанного курсором и до конца строки;

Find — найти следующее появление в тексте программы стринга, ранее определенного командой редактора F;

Swap — заменить найденный стринг Fs на стринг Ss, ранее определенный командой редактора F, и искать следующее появление стринга Fs;