Введение в технологию программирования на языке Ассемблера, страница 5

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

1. Макроассемблер MASM фирмы Microsoft.

2. Турбо-ассемблер TASM фирмы Borland.

3.  Ассемблер   фирмы   WASM.

Наибольшее распространение получили первые два пакета. У этих пакетов много общего, а символика команд и их назначение практически не отличаются. При этом пакет программ TASM характерен двумя режимами работы. Один из них, так называемый режим  MASM, поддерживает все основные возможности макроассемблера MASM, почему и получил такое название. Второй режим, получивший название IDEAL, предлагает более удобный синтаксис написания программ и более эффективное использование памяти при трансляции. В связи с этим нам наиболее рационально пользоваться пакетом TASM, так как, пользуясь им, одновременно можно получить возможность изучить и основные принципы пользования пакетом MASM.

Наиболее важными для нас программами пакета TASM можно считать следующие программы:

1. 16- и 32-разрядные трансляторы (компиляторы) tasm.exe и tasm32.exe;

2. 16- и 32-разрядные компоновщики (редакторы связей) tlink.exe и

    tlink32.exe;

3. Turbo Debugger – отладчик программ, работающий на уровне

    исходного текста. Также имеет 16- и 32-разрядные версии td.exe

    и td32.exe;

4. tdump.exe – утилита, позволяющая получить информацию о структуре

    и содержании исполняемого файла. Например, при вводе в командной

    строке команды - tdump.exe myprog.exe>p.txt – мы получим текстовый

    файл p.txt, которыйбудет содержать полезную для нас информацию об

    исполняемом файле myprog.exe.

Общая схема процесса разработки программ на языке ассемблера изображена на рис. П.4.

   Рис. П.4   Схема разработки программы на языке ассемблера.

В соответствии с алгоритмом решаемой задачи, используя тот или иной текстовый редактор (F4, Блокнот, и др.), пишется программа на языке ассемблера, которая затем подвергается трансляции на машинный язык с помощью транслятора tasm.exe пакета программ TASM.

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

Tasm.exe [опции] имя исходного ассемблерного файла [,имя объектного файла] [,имя файла листинга] [,имя файла перекрестных ссылок].

Обязательным является имя исходного ассемблерного файла, который должен иметь расширение «.asm». Все параметры, заключенные в квадратные скобки, в принципе могут отсутствовать. Если, например не будет указано имя объектного файла, то его имя будет просто совпадать с именем исходного ассемблерного файла. Если желательно, чтобы имена объектного файла, файла листинга, и файла перекрестных ссылок совпадали с именем исходного ассемблерного файла (что обычно и делается), то вместо имен этих файлов достаточно просто оставить их разделительные запятые. Однако для отображения в отладчике исходного ассемблерного файла, при дальнейшей отладке программы, следует использовать опцию «/zi», которая указывает транслятору сохранять связь символических имен в программе с их эффективными адресами в кодовом сегменте. Это позволяет производить отладку, используя символические имена.

Кроме того, весьма целесообразно использовать также опцию «/l», которая указывает Ассемблеру о необходимости формирования файла листинга транслируемой программы с указанием строк и синтаксических ошибок в программе. Файл перекрестных ссылок с расширением «.crf» (cross-reference file) представляет собой таблицу меток, идентификаторов и переменных с указанием номеров строк листинга, в которых они встречаются. CRF-файл бывает полезен при отладке очень больших программ.

Таким образом, пример практически удобной в нашем случае командной строки при трансляции может иметь следующий вид:

                           Tasm.exe /zi /l myprog.asm

При трансляции программы, Ассемблер, в любом случае, предоставит список синтаксических ошибок с указанием номеров строк, где они были обнаружены, причем заголовок сообщения «Error» говорит о том, что имеются недопустимые, с точки зрения синтаксиса, комбинации символов. А заголовок «Warning» означает, что конструкция предложения синтаксически в основном правильна, но не соответствует некоторым соглашениям языка, и это может послужить источником последующих ошибок.

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

·  Номера строк в файле листинга, которые используются для локализации ошибок и формирования таблицы перекрестных ссылок;

·  Эффективный адрес – смещение в байтах начала команды, указанной в данной строке, относительно начального адреса кодового сегмента;

·  Машинный код данной команды;

·  Ассемблерное представление данной команды;

·  Директивы ассемблера – конструкции, которые не генерируют машинные команды, а являются указаниями транслятору на выполнение некоторых действий или служат для задания режима его работы;

·  Сообщения об синтаксических ошибках в программе.

Кроме того, в конце листинга TASM формирует таблицы, которые содержат информацию о метках и сегментах, используемых в программе.