Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Эрни Каспер Программирование на языке Ассемблер...doc
Скачиваний:
118
Добавлен:
09.11.2019
Размер:
954.88 Кб
Скачать

2.7.Директивы управления вводом и выводом

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

• INCLUDE файл

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

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

.PW ширина .PL высота

По умолчанию строка содержит 132 символа, а страница содержит 61 строку. При достижении заданной границы по ширине ассемблер выдает код перевода строки. При достижении заданной границы по высоте ассемблер выдает код перевода страницы. Если обнаруживается ошибка, то после выдачи сообщения об ошибке ассемблер выдает код перевода страницы. Страницы нумеруются. Для управления числом строк от верхней кромки страницы до номера страницы используется директива .ТОР число

По умолчанию используется значение 0.

На каждой странице листинга можно выводить заголовок и строкой ниже подзаголовок при помощи директив

.TITLE строка

.SUBTITLE строка

Строка печатается у верхнего края каждой страницы. Если строка не задана (пустой операнд), то действие предыдущей директивы с таким же мнемокодом отменяется. Заголовок и подзаголовок могут изменяться произвольное число раз независимо друг от друга. Они могут быть отменены в любой момент времени. Длина строки не должна превышать 80 символов. Кроме того, первые два символа табуляции между самой директивой и началом строки (если они существуют) будут игнорироваться. Все распо­ложенные далее символы пробела и табуляции будут включаться в заго­ловок. Синонимами директивы вывода заголовка являются NAM, TTL и HEADING. Синонимами директивы вывода подзаголовка являются STTL и SUBTTL.

Для перевода страницы до завершения вывода заданного количества строк можно выдать директиву .PAGE Синонимами этой директивы являются PAG и EJECT.

Кроме управления форматом печати можно отключать вывод в лис­тинг некоторой части протокола трансляции или включать его. В некото­рых случаях одна строка исходного текста транслируется в несколько строк объектного кода. Чтобы уменьшить размер листинга, можно не печатать дополнительные строки объектного кода. Вывод на печать всех строк объектного кода задается директивой .ASCLIST ON

Этот режим является стандартным (используемым по умолчанию). Вывод на печать только одной строки объектного кода для каждой строки ис­ходного текста задается директивой

.ASCLIST OFF

Можно полностью отключать и снова включать вывод результатов транс­ляции в листинг директивами

.LIST OFF .LIST ON

При запуске программы подразумевается, что задана директива LIST ON. Синонимом директивы отключения вывода являются NOLIST и NLIST, а синонимом директивы включения вывода - LIST. Аналогичным образом можно управлять выводом в листинг результатов трансляции сложных текстовых подстановок (макросов):

.MACLIST OFF .MACLIST ON

Стандартным является режим раскрытия текста подстановок. Синони­мом директивы отключения вывода подстановок является MNLIST, а синонимом директивы включения вывода подстановок — MLIST. Для управления выводом тех частей исходного текста, которые не транслируются в соответствии с условными директивами, используются директивы

.CONDLIST OFF .CONDLIST ON

Стандартным является режим включенной генерации листинга ассемб­лерных блоков, которые не ассемблируются в силу ложности условия.

Обычно протокол трансляции выводится в листинг при втором проходе. Но при выдаче сообщения 'Symbol value changed between passes' об измене­нии при втором проходе адреса, приписываемого имени, требуется выяснить причину ошибки. Для управления выводом результатов первого прохода транслятора в листинг используются директивы .PASS1 ON .PASSI OFF

Данные директивы могут также оказаться полезными для обнаружения ошибок, возникающих во вложенных ассемблерных блоках, которые ассемблируются в зависимости от выполнения условий. Они могут быть использованы в качестве вспомогательного средства для поиска ошибок, возникающих из-за различных маршрутов обработки, которые ассемблер реализует при выполнении прохода 1 и прохода 2.

При необходимости общения с программистом во время трансляции можно использовать директиву запроса имя: ASK запрос

По этой директиве на дисплей выдается текст запроса, в ответ на который программист должен нажать цифровую клавишу. Из кода введенного символа вычитается 30h и полученное число присваивается имени, ука­занному в поле метки. Это значение может быть использовано в качестве аргумента директивы условной трансляции. Нажатие клавиши "Enter" без ввода цифры вызывает повторный запрос.

Программист может управлять выдачей сообщений о катастрофических ошибках, вставляя в условные директивы директиву вывода сообщения на дисплей .EXIT "сообщение"

Длина задаваемого программистом сообщения не должна превышать 79 символов. После вывода сообщения работа транслятора завершается.

Существуют директивы, которые позволяют управлять компоновкой объектных файлов. При записи исполняемых файлов в ПЗУ может пона­добиться заполнение пустых мест между специальными кодами, отлич­ными от 0. В этом случае используется директива

.FILLCHAR код

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

Эта директива выполняется только совместно с опцией записи на диск. По этой директиве редактор связей преобразует ассемблерные листинги таким образом, что выполняемый адрес, адреса в полях кода объектных модулей и значения в таблице перекрестных ссылок представляют собой фактические значения в период выполнения. Для выбора опций редактора связей используется директива .OPTIONS опции

В опциях можно указать выходной формат файла. По умолчанию выходной файл имеет шестнадцатеричный формат фирмы Intel. Можно заказать запись на дисковый файл карты памяти, списка глобальных имен и ошибок компоновки. Опции могут быть заданы при работе с компоновщиком в диалоговом и командном режимах или под управлением из файла. Информация об опциях приведена в описании диалогового режима работы с компоновщиком. Директива выбора опций выполняется только тогда, когда они не заданы при вызове компоновщика. Для изменения длины записей в таблицах имен может использоваться директива .REC SIZE значение

Указанное значение принимает длина записи выходного файла вместо 32 байт данных формата фирмы Intel или вместо 131 байт данных формата S фирмы Motorola. Компоновщик может создавать файлы с несколькими различными типами таблиц имен. Эти форматы поддерживают десятибу-квенные и тридцатидвухбуквенные глобальные имена. Для размещения таблицы имен в выходном файле редактора связей нужно использовать директиву

.SYMBOLS ON

Она обеспечивает вывод таблицы в форматах фирм Microtek и Zax.