ТОП 10:

Структура программы на языке ассемблера



Предложения (строки) ассемблера

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

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

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

end - определяет логический конец программы, все записанное после нее не будет восприниматься транслятором,

seg - определяет начало новой секции,

db - размещает в памяти константы.

Команды или инструкции процессора порождают машинные команды и выполняются в заданной последовательности во время работы процессора. Примеры команд:

MOV A,B

ADD B

Команды препроцессора являются фактически разновидностью директив, которые выполнятся на первом шаге трансляции. Пример команды препроцессора:

%include f1.asm - помощью данной команды в исходный текст будет вставлен текст из файла f1.asm.

Макрокоманды, а также некоторые конкретные директивы будут рассмотрены ниже.

Комментарии не влияют на результат трансляции и служат для пояснения и описания программы. Комментарии без изменений переносятся в файл, получаемый после трансляции - листинг трансляции. Вся строка ассемблера может являться комментарием. В этом случае она начинается специальным символом: [*] или [;].

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

· поле метки,

· поле мнемоники,

· поле операнда,

· поле комментария.

Таким образом, строка имеет следующий формат:

[метка[:]] <мнемоника> [операнд] [; комментарий]

Здесь, как и обычно, при описании системы команд и синтаксиса языка, для обозначения необязательного элемента конструкции использованы квадратные скобки [ ]. Таким образом, метка, операнд, комментарий являются необязательными элементами и могут отсутствовать.

Примеры ассемблерных строк:

MM2 ADD C ; команда сложения, MM2 - метка

MM3:

SUB D команда вычитания, MM3 - метка

Поле метки

Метка в общем случае является необязательным элементом ассемблерной строки. Для некоторых директив наличие метки обязательно. Метка начинается в первой позиции строки и может содержать (как и любой идентификатор) алфавитно-цифровые знаки (A-Z, a-z, 0-9, _ и $), первым из которых должна являться буква.

Если в первой позиции строки стоит пробел или символ (;), то считается, что метка отсутствует. Метка может заканчиваться двоеточием, которое не входит в состав метки.

На линии может стоять одна метка, а последующие части строки ассемблера располагаться на следующих линиях без знака продолжения строки. В этом случае наличие двоеточия в конце метки обязательно.

Поле мнемоники

Поле мнемоники начинается после первого пробела в строке и заканчивается одним или более пробелами. Поле мнемоники содержит одно из следующих утверждений:

· мнемоническое обозначение команды процессора, например, ADD, MOVE,

· мнемоническое обозначение макрокоманды,

· мнемонику директивы ассемблера,

· мнемонику команды препроцессора.

Ассемблер проверяет допустимость кодов мнемоник по своей внутренней таблице кодов команд и директив, а затем по таблице макрокоманд. В случае отсутствия используемых мнемоник выдается сообщение об ошибке.

Поле операнда

Поле операнда определяет информацию, над которой в соответствии с командами производятся действия. Поле операнда начинается сразу за пробелом (или пробелами), заканчивающим поле мнемоники, и, в свою очередь, заканчивается одним или более пробелами. В поле операнда могут быть записаны константы, символы и выражения, состоящие из символов и констант. Эти конструкции языка описаны ниже. Если команда или директива требует нескольких операндов, то отдельные операнды разделяются запятыми, но не пробелами. Интерпретация поля операнда зависит от мнемоники соответствующей команды или директивы. Операнд определяет объекты, над которыми производятся операции, в качестве таких объектов могут быть конкретные значения (константы, переменные) или в какой-либо форме адреса конкретных значений (регистры процессора, ячейки памяти).







Последнее изменение этой страницы: 2017-01-25; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.235.30.155 (0.011 с.)