Список директив MPASM
Типы директив MPASM
Директивы MPASM
Комментарии
Операнды
Мнемоники
Мнемоника инструкций микроконтроллера, директивы ассемблера и макрокоманды должны начинаться во второй (и далее) колонке. Если в той же строке имеется метка, то она должна быть отделена двоеточием или одним (и более) символом пробела (табуляции).
Операнды должны быть отделены от мнемоники одним (или более) символом пробела (табуляции). Многократные операнды разделяются запятыми.
Любой текст после (;) трактуется как комментарий и все символы до конца строки игнорируются. Допускаются строковые константы содержащие (;), как комментарий они не воспринимаются.
Директивы MPASM - команды, которые входят в состав исходного текста программы, но непосредственно не включаются в выходной код. Они используются для управления MPASM, параметрами ввода-вывода и распределением данных.
Многие директивы ассемблера имеют дополнительные имена и форматы. Они предназначены для обеспечения совместимости с более ранними версиями ассемблера и индивидуальными методами программирования.
Существует пять основных типов директив:
директивы контроля - управляют созданием разделов условно компилированного кода;
директивы данных - управляют распределением памяти и назначением символических имен переменным и константам;
директивы листинга - определяют формат и состав файла листинга. Эти директивы позволяют: указывать заголовки, нумеровать страницы и настраивать другие параметры;
макро директивы - управляют работой макросов и распределением данных в теле макроса;
директивы объектного файла - используются только при создании объектного файла.
В таблице представлен список директив поддерживаемых MPASM.
Директива | Описание | Синтаксис |
BADRAM | Идентификация нереализованного ОЗУ | _ _badram <expr>[-<expr>][, <ехрг>[-<ехрг>]] |
BANKISEL | Выбор банка для косвенной адресации | bankisel <label> |
BANKSEL | Выбор банка для прямой адресации | banksel <label> |
CBLOCK | Определение блока констант | cblock [<expr>] |
CODE | Начало кода объектного файла в памяти программ | [<name>] code [<address>] |
CONFIG | Установка битов конфигурации MK | _ _config <expr> OR _ _config <addr>, <expr> |
CONSTANT | Определить символьную константу | constant <label>[=<expr>,...,<label>[=<expr>] ] |
DA | Сохранение строки в памяти программ | [<label>] da <expr> [, <expr2>, ..., <exprn>] |
DATA | Сохранение значений или текста в памяти программ | [<label>] data <expr>,[,<expr>,...,<expr>] [<label>] data "<text_string>"[,"<text_string>",...] |
DB | Побайтное сохранение данных в памяти программ | [<label>] db <expr>[,<expr>,...,<expr>] [<label>] db "<text_string>"[,"<text_string>",...] |
DE | Резервирует 8-разрядное значение в EEPROM памяти | [<label>] de <expr>[,<expr>,...,<expr>] [<label>] de "<text_string>"[,"<text_string>",...] |
#DEFINE | Определяет замену текста | #define <name> [<string>] #define <name> [<arg>, . . . ,<arg>] <string> |
DT | Определяет таблицу данных | [<label>] dt <expr>[,<expr>,...,<expr>] [<label>] dt "<text_string>"[,"<text_string>",...] |
DW | Резервирует слова памяти программ | [<label>] dw <expr>[,<expr>,...,<expr>] [<label>] dw "<text_string>"[,"<text_string>",...] |
ELSE | Начало альтернативного условия IF | else |
END | Окончание программы | end |
ENDC | Окончание автоматического блока констант | endc |
ENDIF | Окончание условного блока программы | endif |
ENDM | Окончание макроса | endm |
ENDW | Завершает цикл While | endw |
EQU | Определение константы ассемблера | <label> equ <expr> |
ERROR | Формирует сообщение об ошибке | error "<text_string>" |
ERRORLEVEL | Настройка вывода сообщений об ошибках | errorlevel 0 | 1 | 2 | <+ | -Xmessage number> |
EXITM | Выход из макроса | exitm |
EXPAND | Включение текста макроса в файл листинга | expand |
EXTERN | Определение внешних меток | extern <label>[ ,<label>] |
FILL | Запись значения в память программ | [<label>] fill <expr>, <count> |
GLOBAL | Внешняя метка | global <label>[ ,<label>] |
IDATA | Объявляет начало инициализации данных в объектном файле | [<name>] idata [<address>] |
IDLOCS | Установка значения ID | _ _idlocs <expr> |
IF | Начало блока условия | if <expr> |
IFDEF | Выполнение, если определена символьная метка | ifdef <label> |
IFNDEF | Выполнение, если символьная метка не определена | ifndef <label> |
INCLUDE | Подключение дополнительного исходного файла | include <<include_file>> |"<include_file>" |
LIST | Список параметров | list [<list_option>,...,<list_option>] |
LOCAL | Объявить локальную переменную макроса | local <label>[,<label>] |
MACRO | Определить макрос | <label> macro [<arg>,...,<arg>] |
MAXRAM | Определяет максимальный объем ОЗУ | _ _maxram <expr> |
MESSG | Сформировать сообщение | messg "<message_text>" |
NOEXPAND | Не разворачивать текст макроса | noexpand |
NOLIST | Выключить вывод в файл листинга | nolist |
ORG | Установить адрес программы | <label> org <expr> |
PAGE | Вставить страницу в файл листинга программы | page |
PAGESEL | Произвести выбор страницы | pagesel <label> |
PROCESSOR | Выбор типа микроконтроллера | processor <processsor_type> |
RADIX | Система счисления по умолчанию | radix <default_radix> |
RES | Резервирование памяти | [<label>] res <mem_units> |
SET | Определение константы | <label> set <expr> |
SPACE | Вставить пустые строки | space <expr> |
SUBTITLE | Определение подзаголовка программы | subtitle "<sub_text>" |
TITLE | Определение заголовка программы | title "<title_text>" |
UDATA | Начало инициализации данных с обычным размещением в памяти (для объектного файла) | [<label>] udata [<RAM address>] |
UDATA_ACS | Начало инициализации данных быстрого доступа (для объектного файла) | [<label >] udata_acs [<RAM address>] |
UDATA_OVR | Начало инициализации временных данных (для объектного файла) | [<label >] udata_ovr [<RAM address>] |
UDATA_SHR | Начало инициализации разделяемых данных (для объектного файла) | [<label >] udata_shr [<RAM address>] |
#UNDEFINE | Отменить замену текста | #undefine <label> |
VARIABLE | Определение символьной переменной | variable <label>[=<expr>,...,<label>[=<expr>] ] |
WHILE | Цикл While | while <expr> |
В описании всех директив содержаться пункты: синтаксис; описание; пример.
_ BADRAM - Идентификация нереализованного ОЗУ
Синтаксис _ _badram <expr>[-<expr>][, <ехрг>[-<ехрг>]]
Описание Директивы _ _MAXRAM и _ _BADRAM определяют адреса нереализованных регистров ОЗУ. _ _BADRAM определяет индивидуальный адрес нереализованного регистра. Данная директива предназначена для использования совместно с директивой MAXRAM. Каждое значение <ехрг> , директивы BADRAM, должно быть меньше указанного в MAXRAM. После директивы MAXRAM, в тексте программы, точная карта нереализованного ОЗУ создается директивами BADRAM. Для указания диапазона адресов нереализованного ОЗУ используйте синтаксис <minloc> - <maxloc>.
Пример См. пример для MAXRAM