5.5 Язык ассемблера и директивы для микроконтроллеров AVR
В прил. 1–4 приведены наборы команд процессора. Например, квадрат-
ные корни, экспоненты, синусы и т. п., содержащиеся в математическом выра-
жении на языке высокого уровня (Си), будут преобразованы компилятором в
простейшие команды. Список команд для каждого микроконтроллера уника-
лен. В новые модели производители контроллеров обычно стараются добавить
поддержку дополнительных команд (например, аппаратное деление чисел,
умножение, экспоненты…).
Компилятор поддерживает ряд директив. Директивы представляют собой
команды управления компилятором. Их не следует путать с командами микро-
процессора. Директивы не прошиваются в контроллер, а используются для
удобства написания и отладки кода; для указания положения в программной
памяти, определения макросов, инициализации памяти и т. д. Конечный размер
выходного файла hex (прошивка) не увеличится при использовании директив.
Все директивы начинаются с точки, их общее число – более 20 – и зависит от
компилятора (т. к. это команды компилятору).
Часто используемые:
INCLUDE – вложить другой файл.
EXIT – выйти из файла.
LIST/NOLIST – включить/выключить генерацию листинга.
EQU – установить постоянное выражение.
SET – установить переменный символический эквивалент выражения.
DEF – назначить регистру символическое имя.
DB – определить байты во флеш или EEPROM.
DW – определить слова во флеш или EEPROM.
BYTE – зарезервировать байты в ОЗУ.
CSEG – определить программный сегмент.
DSEG – определить сегмент данных.
ESEG – определить сегмент EEPROM.
ORG – установить положение в сегменте.
DEVICE – определить устройство, для которого компилируется про-
грамма.
Директива .include подставляет текстовый файл в то место программы,
где происходит его употребление. Внутри подставляемого файла можно ис-
61
пользовать другие .include файлы. Путь к файлу указывается либо полный,
либо просто имя файла, если файл расположен в директории проекта или в од-
ной из служебных папок.
Директива .include
Синтаксис .include "{путь к файлу}"
Пример:
.include "m16def.inc"; вставка стандартного заголо-
вочного файла
Директива .exit указывает ассемблеру место окончания файла исходно-
го текста. Все команды, находящиеся после директивы, становятся недоступ-
ными для компилятора. Если .exit встречается в подключаемом файле, то
сборка проекта заканчивается строкой, где расположена директива .include.
При отсутствии директивы .exit концом программы считается последняя
строка исходного текста.
Директива .exit
Синтаксис .exit
Пример:
.exit ; конец файла
Директивы .nolist и .list служат для управления файлом листинга,
который обычно генерируется после сборки проекта. Первая из них запрещает,
а другая, соответственно, разрешает вывод информации в файл. Директива
.list отменяет действие .nolist, и наоборот.
Директива .nolist, .list
Синтаксис .nolist, .list
Пример:
.nolist ;запретить вывод текста файла “m16def.inc”
.include "m16def.inc" ;в файл листинга программы
.list ;продолжить вывод информации
Директива .equ присваивает символьному имени некоторое числовое
значение. Символьное имя должно быть уникальным, не может начинаться с
точки, цифры и специальных символов и не может быть изменено в процессе
написания программы. Директива не может применяться для назначения сим-
62
вольных имен регистрам общего назначения. Математические формулы, ис-
пользуемые в выражении, вычисляются компилятором, а не микроконтролле-
ром.
Do'stlaringiz bilan baham: |