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

Include buffer? (Размер входного буфера?)

Macro buffer? (Размер буфера макроопределений?)

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

Размер буферов рекомендуется задавать перед сеансом работы — сразу после загрузки GENS4.

Separator [,,D]

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

use RAM Until [H]

Установить верхнюю границу используемой памяти равной Н. Если аргумент не указан, то на экран выводится текущая верхняя граница памяти: GENS4 не может размещать текст программ или объектный код в области памяти выше указанной границы. При ее достижении выдается сообще­ние об ошибке:

Out of memory!

current Values

Выдать на экран служебную информацию: значение параметров N1, N2, S1, S2 по умолчанию, символ разделителя, адреса начала и конца текста.

X catalogue [N]

Вывести на экран каталог диска, номер которого определен аргументом N. По умолчанию выводится каталог диска "А".

Zap text

Удалить текст программы, находящейся в памяти. Выводится запрос: Delete text (Y/N) (Удалить текст (Да/Нет))

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

Help

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

Assemble [O][,T][,F]

Ассемблировать программу.

Этой команде посвящен следующий раздел описания GENS4.

Ассемблирование программы

Ассемблирование (оно же — транслирование, оно же — генерация объектного кода) — это процесс перевода программы, написанной на ассемблере, на единственно понятный для процессора язык — язык кодов команд.

Как уже упоминалось, ассемблирование программы запускается командой строчного редактора А. Приведем еще раз ее формат:

Assemble [O][,T][,F]

где

О — ключи ассемблирования (описаны ниже).

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

No Symbol Table space!

F — имя файла на диске, в который будет записан объектный код. Во время трансляции объектный код предварительно помещается в буфер, расположенный либо сразу за таблицей символов (ключ 16, см. ниже), либо начиная с адреса, заданного первой встреченной в программе директивой ORG. Конец буфера определяется верхней границей доступ- ной памяти, установленной командой редактора U. При заполнении буфера его содержимое переписывается на диск, и ассемблирование продолжается в буфер.

Если имя файла не указано, объектный код будет помещен в память по адресам, заданным директивами ORG либо ключами ассемблирования.

Режим записи объектного кода на кассету в процессе ассемблирования не поддерживается.

Ключи ассемблирования:

1 — выдать таблицу символов в конце листинга ассемблирования;

2 — отменить генерацию объектного кода (фактически, в процессе ассем­блирования производить только проверку синтаксиса программы); 4 — выводить листинг ассемблирования; 8 — переопределить вывод на принтер;

16 — размещать объектный код непосредственно после таблицы символов; адрес, определенный директивой ENT, игнорировать.

32 — не производить проверку расположения объектного кода в памяти. Приводит к незначительному ускорению процесса ассемблирования.

Для того, чтобы одновременно задать несколько условий трансляции, нужно сложить значения соответствующих ключей. Например, трансляция текста программы с выдачей листинга ассемблирования (ключ 4) на принтер (ключ 8) без генерации объектного кода (ключ 2) будет выполнена по команде редактора А14.

При записи объектного кода на диск полезно пользоваться ключом 16, так как в этом случае под буфер ассемблера отводится максимальный размер памяти. Кроме того, ключ 16 незаменим, если необходимо разместить программу в области, недоступной GENS4 при обычном режиме ассемблирования (например, в видеопамяти). Полученный таким образом код может быть записан на магнитный носитель с помощью команды редактора О. Началь­ный адрес в заголовке файла указывает на реальное местоположение файла в памяти после трансляции.

Ассемблирование происходит в два прохода: на первом проходе проверяется синтаксис и формируется таблица символов, в которую заносятся имена и значения встреченных в программе меток; на втором — создается объектный код.

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

Pass 1 errors: NN

где NN — количество ошибок, Найденных во время первого прохода. При обнаружении ошибок второй проход выполняться не будет. Во время второго прохода параллельно с генерацией объектного кода на экран выводится листинг ассемблирования (если, конечно, это разрешено соответствующими командами ассемблера). В строке листинга содержится информация как об исходном тексте программы, так и о результатах трансляции — последовательно выводятся значение счетчика адресов, объектные коды, номер транслируемой строки и ее текст. Не пугайтесь, если Вы обнаружите «пропажу» части объектных кодов — в строке листинга ассемблирования выводятся только первые четыре байта оттранслированной программы. Выдачу листинга ассемблирования, а вместе с ним и процесс трансляции, можно приостановить клавишей Space. После чего, нажав Е, Вы вернетесь в редактор, а нажатие любой другой клавиши продолжит процесс трансляции.

При втором проходе могут быть обнаружены лишь две ошибки: *ERROR* 10 и Bad ORG!. Ошибка *ERROR* 10 не фатальная, поэтому после выдачи сообщения о ней ассемблирование можно продолжить нажатием на любую клавишу кроме Е (клавиша Е вернет Вас в редактор). При обнаружении ошибки Bad ORG! управление сразу передается в редактор.

Если в процессе трансляции не была обнаружена необходимая метка, последует предупреждение:

*WARNING* LabeLName absent

где LabeLName — имя необнаруженной метки.

В конце второго прохода на дисплей выводятся сообщения:

Pass 2 errors NN

Table used: AAAAA from BBBBB

где NN — общее количество ошибок после второго прохода;

ААААА — размер таблицы символов;

ВВВВВ — максимальный размер таблицы символов.

Если в тексте программы была встречена директива ENT, то выдается сообщение:

Executes: CCCCC

указывающее адрес запуска программы командой редактора R.