Процесс разработки программы
На рисунке 1 приведена общая схема процесса разработки программы на ассемблере. Название программы – cikl. На схеме выделено четыре этапа этого процесса. На первом этапе, когда вводится код программы, можно использовать любой текстовый редактор. В Windows таким редактором может быть Блокнот (Notepad). При выборе редактора нужно учитывать, что он не должен вставлять «посторонних» символов (специальных символов форматирования). С этой точки зрения Microsoft Word в качестве основного редактора ассемблерных программ не годится.
Созданный с помощью текстового редактора файл должен иметь расширение .asm.
Для выполнения остальных этапов разработки требуются специализированные программные средства из пакета MASM или TASM. Все пакеты ассемблера выполняют практически одну работу, но по-разному, например, маскируют ее с помощью интегрированный среды или объединяют некоторые этапы разработки. Рассмотрим процесс разработки программы на примере работы ассемблера TASM. Поняв суть преобразований исходной программы, выполняемых пакетом TASM, освоить другие пакеты Ассемблера будет на порядок легче.
Трансляция программы
Следующий шаг на пути создания исполняемого модуля — трансляция программы. Для трансляции нужен подготовленный и записанный на диск исходный текст программы.
На этапе трансляции решается несколько задач:
перевод команд ассемблера в соответствующие машинные команды;
построение таблицы символов;
расширение макросов;
формирование файла листинга и объектного модуля.
Программа, которая реализует эти задачи, называется ассемблером. Итог работы ассемблера — два файла: файл объектного модуля и файл листинга.
Объектный модуль включает в себя представление исходной программы в машинных кодах и некоторую другую информацию, необходимую для отладки и компоновки его с другими модулями. При использовании пакета TASM получение объектного модуля исходного файла производится программой (ассемблером) tasm.exe. Формат командной строки для запуска tasm.exe следующий:
TASM [ключи] имя_исходного_файла [,имя_объектного_файла] [ ,имя_файла_листинга] [,имя_файла_перекрестных_ссылок]
Помнить формат командной строки tasm.exe необязательно. Получить быструю справку о нем на экране можно, если запустить tasm.exe без параметров. Большинство параметров заключено в квадратные скобки. Это общепринятое соглашение по обозначению необязательных параметров. Из этого следует, что обязательным аргументом командной строки является лишь имя исходного файла. Этот файл должен находиться на диске и обязательно иметь расширение .asm. За именем исходного файла через запятую могут следовать необязательные параметры, обозначающие имена объектного файла, файла листинга и файла перекрестных ссылок. Если не задать их, то соответствующие файлы попросту не будут созданы. Если же их нужно создать, то необходимо учитывать некоторые моменты.
Если имена объектного файла, файла листинга и файла перекрестных ссылок должны совпадать с именем исходного файла (наиболее типичный случай), то ужно просто поставить запятые вместо имен этих файлов:
tasm.exe cikl, , ,
В результате будут созданы файлы с одинаковыми именами и разными расширениями, как показано на рис. 1 для второго этапа.
Если имена объектного файла, файла листинга и/или файла перекрестных ссылок не должны совпадать с именем исходного файла, то нужно в командной указать имена нужных файлов в соответствующем порядке, к примеру:
tasm.exe cikl , , cikllist ,
В результате на диске будут созданы файлы cikl.obj, cikl.lstlist, cikl.crf
Если требуется выборочное создание файлов, то вместо ненужных файлов необходимо подставить параметр nul. Например:
tasm.exe cikl , ,nul
В результате на диске будут созданы файлы cikl.obj, cikl.crf.
Необязательный аргумент [ключи] позволяет задавать режим работы транслятора TASM.
Трансляция программы cikl.asm выполняется командной строкой вида:
TASM.EXE /zi cikl, , ,
О нормальном окончании процесса трансляции можно судить по отсутствию строк с сообщениями об ошибках и предупреждениях.
Изучая внимательно файл листинга, следует обратить внимание на то, что не все строки исходной программы имеют соответствующий машинный код. Это обстоятельство обусловлено тем, что исходный файл на ассемблере в общем случае может содержать конструкции следующих типов:
команды ассемблера — конструкции, которым соответствуют машинные команды;
директивы ассемблера — конструкции, которые не генерируют машинных команды а являются указаниями транслятору на выполнение некоторых действий и служат для задания режима его работы;
макрокоманды — конструкции, которые, будучи представлены одной строкой в исходном файле программы, после обработки транслятором генерируют в объектном модуле последовательность команд, директив или макрокоманд ассемблера.