КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Описание языка Макроассемблера для УУМ-32Основой языка Макроассемблера для УУМ-32 является язык Ассемблера для УУМ-32, поэтому необходимо сперва рассмотреть его.
1) Формат строк программы на Ассемблере для УУМ-32 Программа, написанная на языке Ассемблера для УУМ-32, представляет собой последовательность строк, каждая из которых имеет следующий формат: [МЕТКА:] [ДИРЕКТИВА|[+]КОМАНДА [ОПЕРАНДЫ]] [;КООМЕНТАРИЙ] Регистр символов в исходном коде роли не играет, поэтому пользователь имеет возможность оформлять исходный код так, как считает нужным. Рассмотрим каждое поле строки в отдельности. · Поле метки Метки предназначены для символического представления машинных адресов в программе - в процессе трансляции исходного кода программы каждой метке присваивается машинный адрес. Имя метки – это идентификатор. К идентификатору предъявляется ряд требований: § Идентификатор должен начинаться с буквы или символа подчеркивания. § Начиная со второго символа в состав идентификатора помимо букв и символа подчеркивания могут входить цифры. § Максимальная длина идентификатора составляет 32 символа. Метка является необязательным элементом строки программы.
· Поле команды или директивы В этом поле пользователь указывает мнемоническое имя машинной команды либо директиву ассемблера. Машинная команда может предваряться символом «+», что означает использование расширенного формата команды. Список поддерживаемых команд и директив приведен в разделах «Система команд» и «Директивы ассемблера» данного документа. Строка программы может не содержать команды или директивы. · Поле операнда Поле операнда предназначено для указания списка операндов для машинной команды или директивы ассемблера. Операндов может быть несколько, в этом случае они отделяются друг от друга запятыми. Тип операнда зависит от машинной команды или директивы, для которой он указывается. Рассмотрим наиболее часто используемые типы операндов: § Операнд - адрес Данный операнд определяет некий машинный адрес. Операнд может задаваться меткой, числом или специальным символом “*”, который представляет текущее значение программного счетчика (PC). Операнд данного типа можно использовать как для машинной команды, так и для директивы. В случае использования операнда для машинной команды его можно задать с индексированием относительно регистра X (после операнда следует указать «[X]») или относительно базового регистра B (после операнда следует указать «[B]»). Также операнд может быть предварен одним из следующих символов: - # - для операнда, предваренного данным символом, будет использоваться непосредственная адресация - @ - для операнда, предваренного данным символом, будет использоваться косвенная адресация
§ Операнд - регистр Как следует из названия, операнд-регистр предназначен для определения имени регистра. В программе разрешено использовать только так называемые “программно доступные” регистры. Их список приведен в разделе «Программно доступные регистры». Регистровые операнды используют и с машинными командами, и с регистрами.
§ Операнд - натуральное число Данный операнд может задаваться только натуральным числом. Операнды данного типа, как правило, используются для определения номеров или количества элементов как в машинных командах, так и в директивах.
§ Операнд – строковой литерал Операнд этого типа задает строковую константу, которая представляет собой последовательность символов, заключенную в одинарные кавычки (символ “’”). Строковые литералы, в отличие от других операндов, используются только в директивах.
· Поле комментария Комментарии предназначены для документирования исходного кода программы. В языке Ассемблера для УУМ-32 поддерживаются только строчные комментарии. Каждый комментарий начинается с символа “;”.
2) Система команд На сегодняшний день система команд УУМ-32 состоит из 41 команды. Таблица команд приведена в Приложении 1.
3) Директивы ассемблера Все директивы ассемблера приведены в таблице 5.4. Таблица 5.4. Директивы Ассемблера
4) Программно доступные регистры В УУМ-32 имеется 16 программно доступных регистров. Информация о них приведена в таблице 5.5. Таблица 5.5. Программно доступные регистры УУМ-32
5) Язык Макроассемблера для УУМ-32 Язык Макроассемблера для УУМ-32 является расширением языка Ассемблера для УУМ-32. Он появился после добавления в компилятор модуля макропроцессора, что позволило использовать в исходном коде программы макросы. Макрос (макроинструкция) – это удобное средство записи часто используемых групп предложений исходного языка программирования. Макросы в коде задаются при помощи макродиректив. Начало макроопределения в макропроцессоре задается с помощью ключевого слова MACRO. Именем макроопределения служит текст в поле метки. В поле операнда находятся имена формальных параметров макроопределения (каждое имя начинается спецсимволом «&»). Имя и параметры макроса определяют шаблон или прототип используемой разработчиком макроинструкции. После директивы начала макроопределения следуют предложения, составляющие тело макроопределения. Признаком конца макроопределения является директива MEND. Директивы Макроассемблера для УУМ-32 приведены в таблице 5.6. Таблица 5.6. Директивы Макроассемблера для УУМ-32
Пример кода программы для УУМ-32 приведен в Приложении 7.
|