Список директив 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