Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Краткие теоретические сведения. Обзор MPLAB ASM30 Ассемблера




Обзор MPLAB ASM30 Ассемблера

 

Язык Ассемблера – машинно-ориентированный язык низкого уровня с командами, соответствующими командам микроконтроллера.

Условно текст программы на Ассемблере можно разбить на два блока:

– блок определений;

– блок кода.

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

Основу языка Ассемблера составляют директивы и инструкции. Директивы Ассемблера интерпретируются во время выполнения работы Ассемблера и используются для определения секций памяти, инициализации констант, декларирования и определения символов и т.д. Инструкции являются командами микроконтроллера, непосредственно исполняются им во время работы.

Общий формат инструкций и директив

 

Общий формат инструкций и директив Ассемблера следующий:

 

[метка:] инструкция [операнды] [;комментарии]

[метка:] директива [аргументы] [;комментарии]

 

Таким образом, каждая строка исходного файла может содержать до четырёх информационных полей:

- метка;

- мнемоника команды;

- операнды команды;

- комментарии.

Метки используются для отметки позиции в коде. Во время компоновки, метки определяют адреса в памяти. Метки должны начинаться с первой колонки. За меткой должно следовать двоеточие «:». Метка должна начинаться с символа латинского алфавита или двойного символа подчеркивания «__» и может состоять из цифр и букв латинского алфавита и символа подчеркивания «__».

Мнемоники инструкций микроконтроллера, директивы Ассемблера и макрокоманды должны начинаться со второй (и далее) колонки.

Операнды и аргументы следуют за мнемоникой команды. Операнды должны быть отделены от мнемоники не менее чем одним символом пробела либо табуляции. Список операндов разделяется запятыми. Операнды используются в инструкциях для обеспечения информации об источнике и приемнике. Аргументы подобны операндам и используются как источник и приемник информации директив.

Любой текст до конца строки после символа «;» трактуется как комментарий. Комментарии могут следовать за операндами, мнемониками и метками и могут начинаться в любой колонке.

 

Директивы Ассемблера

Существует пять основных типов директив:

- директивы контроля – управляют созданием разделов условно компилированного кода;

- директивы данных – управляют разделением памяти и назначением символических имен переменным и константам;

- директивы листинга – определяют формат и состав файла листинга. Эти директивы позволяют указывать заголовки, нумеровать страницы и настраивать другие параметры;

- макро директивы – управляют работой макросов и распределением данных в теле макроса;

- директивы объектного файла – используются только при создании объектного файла.

Основные директивы Ассемблера перечислены ниже.

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

 

.list p=p33fj32mc204.

Директива .include добавляет содержимое указанного файла в исходный файл. Эффект аналогичен копированию полного текста включаемого файла в место расположения директивы. Параметр директивы – подключаемый файл – может указываться как с полным путем, так и без. Во втором случае поиск файла будет осуществляться в текущей рабочей директории, директории исходного файла и служебных директориях. Пример использования директивы:

.include “p33fj32mc204.inc”.

Директива .global используется для того, чтобы позволить меткам, определённым внутри файла, использоваться в другом файле. Пример использования директивы:

.global __reset.

В данном примере метки сделаны глобальными, чтобы компоновщик мог использовать их как адрес для перехода программы в указанные точки при наступлении соответствующих событий. Метка __reset используется для обозначения начала кода и используется как адрес для перехода из вектора сброса.

Директива .section декларирует секцию памяти. Атрибутами, следующими за директивой, задается расположение секции – например, в памяти RAM либо в программной памяти. Пример использования директивы:

.section.data.

Директива .data используется для информирования Ассемблера, что последующие данные будут помещены в секцию инициализированных данных. Если адрес секции не определен, то он будет назначен автоматически при связи объектных файлов.

Директива .text используется для информирования Ассемблера, что следующий код будет помещён в секцию программной памяти.

Директива .equ используется для определения символа и присвоения ему значения. Пример использования директивы:

.equ FCY, #7370000.

В данном примере символу FCY присваивается литеральное значение 7370000. В таком контексте FCY является константой, которая может использоваться в коде.

Директива .end используется для обозначения окончания ассемблерного исходного файла. Пример использования директивы:

.list p=p33fj32mc204.

; текст программы

.end

 





Поделиться с друзьями:


Дата добавления: 2016-03-27; Мы поможем в написании ваших работ!; просмотров: 967 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Самообман может довести до саморазрушения. © Неизвестно
==> читать все изречения...

2487 - | 2329 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.007 с.