После того, как исходный файл уже создан, можно применить
ассемблер. Существуют две версии ассемблера: полная версия,
называемая Макроассемблером, которая на специальной, отведенной для
программы ассемблера дискете, именуется MASM.EXE, и менее полная
версия - Ассемблер, или ASM.EXE - без возможности работать с
макроопределениями. Если для эффективного использования программы
MASM требуется объем памяти 96К, то для программы ASM достаточно
64К. Указанные значения никак не связаны с объемом памяти,
занимаемой исходной программой. Они относятся к объему памяти,
необходимой для ассемблирования, а не выполнения уже
оттранслированной программы. Поэтому возможна ситуация, когда для
разработки пользовательской программы, требующей для своего
выполнения только 4К, необходима ЭВМ с объемом памяти не менее 64К.
Входной информацией для ассемблера является исходный файл,
созданный редактором EDLIN, либо аналогичным редактором. Исходный
файл - это текстовый файл в кодах ASCII. В результате работы
ассемблера может получиться до трех выводных файлов. Объектный файл
представляет собой вариант исходной программы, записанной на
машинном языке. Объектный файл - это еще не совсем готовая для
выполнения программа, однако она близка к реальномй машинному
языку. Листинговый файл является текстовым явйлом в кодах ASCII,
включающим как исходную информацию, так и информацию, полученную в
результате работы ассемблера. Приведенные в данной книге примеры
являются ассемблерными листинговыми файлами. И наконец, ассемблер
может сформировать файл перекрестных ссылок. Этот файл, не
являющийся ни программой на машинном языке, ни текстовым файорм,
содержит информацию об использовании символов и меток в
ассемблерной программе. Как и в случае объектного файла, перед
использованием файла перекрестных ссылок требуется его
дополнительная обработка.
Запуск ассемблера осуществляется командой DOS
A> ASM
или
A>MASM
Команда ASM запускает усеченный вариант ассемблера, а команда
MASM - Макроассемблер. После того, как ассемблер начинает
выполняться, он просит указать: какие файлы будут использованы при
ассемблировании. На Фиг. 5.10 приводится последовательность команд
для запуска ассемблера.
После того, как команда ASM введена, DOS загружает в память
ассемблер. Ассемблер выводит на экран название версии и переходит
к выдаче запросов к оператору. Если в вашей системе имеется только
один дисковод с гибким диском, то на этом этапе вы можете вынуть
дискету с ассемблером и вставить дискету с данными. Ассемблер
запрашивает: какой файл будет транслироваться, при этом достаточно
ввести только имя этого файла без указания типа .ASM. Кроме этого,
ассемблер запрашивает имена выходных файлов. Объектному файлу
ассемблер присваивает то же имя, что и у исходного файла, но с
расширением .OBJ, если только вы не захотите его изменить. В
данном примере ответ оператора "B:" является указанием ассемблеру,
чтобы он записал объектный яайл на диск в дисковод B:. Аналогичные
ответы оператора на запросы по поводу листингового файла и файла
перекрестных ссылок сообщают ассемблеру, чтобы эти файлы он также
записал на диск в дисководе B:. В справочнике диска,
установленного в дисководе B:, можно увидеть все полученные в
результате ассемблирования файлы.
Для всех запросов имеются режимы, применяемые по умолчанию.
Если в ответ на любой из этих запросов нажать клавишу возврата, то
ассемблер использует режим по умолчанию. Для листингового файла и
файла перекрестных ссылок по умолчанию принимается значение NUL.
Для DOS файл типа NUL - это специальный файл: все, что записывается
в файл NUL не доступно и не может быть восстановлено. Файл
NUL относится к файлам типа WOF (write=only file - файл только для
-------------------------------------------------------
A>ASM
The IBM Personal Computer Assembler
Version 1.00 (C)Copyright IBM Corp 1981
Source filename [.ASM]: B:FIG5_10
Object filename [FIG5_10.obj] B:
Source lisying [NUL.LST] B:
Cross reference [NUL.CRF] B:
Warning Severe
Errors Errors
0 0
A>DIR B:FIG5_10.*
FIG5_10 ASM 44 1-01-83 12:00a
FIG5_10 LST 426 1-01-83 12:00a
FIG5_10 OBJ 40 1-01-83 12:00a
FIG5_10 CRF 19 1-01-83 12:00a
A>
A>B:
A>A:ASM FIG5_10,,,,
The IBM Personal Computer Assembler
Version 1.00 (C)Copyright IBM Corp 1981
Warning Severe
Errors Errors
0 0
B>
----------------------------------------------------
Фиг. 5.10 Выполнение ассемблирования
записи).
Если ассемблер во время ассемблирования обнаружит какие- нибудь
ошибки, он записывает их в листинговый файл. Кроме того, он выводит
их на дисплей, в результате чего можно непосредственно исправить
любые из обнаруженных ощибок и нет необходимости выискивать их в
листинговом файле. Если вы пользуетесь сокращенной версией
ассемблера, ASM, то информация об ошибках содержит только их коды.
В случае Макроассемблера, MSAM, выводится и код, и информация об
ошибке. В уменьшенном варианте ассемблера не остается места для
текстового сообщения об ошибке. В нижней части Фиг. 5.10 показан
более простой способ запуска Макроассемблера. Этот метод удобен,
когда в системе имеется два дисковода с гибкими дисками. В этом
случае дискета с ассемблером устанавливается в дисковод A:, а
дискета с информацией, содержащий исходный файл, - в дисковод B:.
Устанавливается режим выбора по умолчанию дисковода B:. Ассемблер
запускается с помощью команды A:ASM. В оставшейся части команды -
FIG5=10,,,; - содержится вся информация для ассемблера, которая
запрашивалась у оператора в предыдущем примере. FIG5=10 определяет
имя файла, который нужно ассемблировать, а последовательность
запятых служит указанием ассемблеру сгенерировать объектный,
листинговый файл и файл перекрестных ссылок в соответствии со
стандартным соглашением об именах файлов. При этом методе
ассемблирования получаются точно такие же результаты, что и в
первом случае.
Существует много способов того, как указать ассемблеру имена
файлов. Дап рассмотренных выше примера соответствуют крайним
случаям. В первом примере в ответ на запрос указывалось имя каждого
из файлов. Во втором случае не было необходимости ни в каких
запросах. Более подробно различные варианты, возможные в команде
ASM (или MASM), описываются в справочном руководстве по
Макроассемблеру.
После окончания ассемблирования можно воспользоваться
полученными выходными файлами. Объектный файл является исходным для
следующего этапа формирования выполняемой программы на машинном
языке. Это - этап редактирования связей LINK, который описывается в
следующем разделе.
В листинговом файле соединяются исходный файл и читабельный
вариант программы на машинном языке. Этот файл может быть выведен
на дисплей с помощью команды дисковой операционной системы TYPE,
например,
A> TYPE B:FIG5=11.LST
Команда TYPE загружает в память
содержимое файла и выводит его
на дисплей. Одновременно этот же файл
может быть выведен на печать,
если перед выполнением команды TYPE нажать
клавиши Ctrl=PrtSc.
Нажатие Ctrl=PrtSc предписывает DOS
осуществлять вывод как на
экран, так и на принтер. В результате
листинг выводится и на
дисплей, и на печать. Ширину листинга
следует задать равной 132
символам. Это выполняется с помощью
команды ассемблера PAGE,
которая, как вы могли заметить, присутствует
почти во всех
приводимых примерах программ. Команда
PAGE ,132
предписывает ассемблеру установить ширину
листингового файла
равной 132 символам. Кроме того, перед
выводом на принтер нужно
установить ширину печатаемой колонки. Это
можно выполнить с помощью
команды MODE дисковой операционной
системы.
A> MODE LPT1:132.
Данная команда устанавливает режим, при
котором на принтере
фирмы IBM печатается 132 колонки. В этом
случае листинговый файл
распечатывается без смещения строк,
которого нельзя избежать на
дисплее.