"DVDXpert" - компас в мире Hi-Fi и High End техники и другой stereo и home cinema аппаратуры.

ЦИФРОВЫЕ КОНСТАНТЫ И СИСТЕМЫ СЧИСЛЕНИЯ

IT & hi-tech
4.6 / 5 (43 оценок)

MPASM поддерживает следующие форматы представления значений: шестнадцатеричный, десятичный, восьмеричный, двоичный и ASCII. По умолчанию установлен шестнадцатеричный формат. Формат по умолчанию означает, что если для переменных и присоединенных к ним значений явно не указан формат, то при генерации исполняемого кода они воспринимаются в формате по умолчанию. Константы могут иметь знак плюс или минус. Отсутствие знака означает положительное число.

В тексте программы константы записываются следующим образом:

Десятичные 0'<цифры>'или .<цифры> D'lOO' .100

Шестнадцатеричные Н'<цифры>' или 0х<цифры> H'9f 0x9f

Восьмеричные 0'<цифры>' 0777'

Двоичные В'<цифры>' В'ООШООГ

Строковые ASCII А'символ' или 'символ' А'С' 'С'

ДИРЕКТИВЫ АССЕМБЛЕРА

Ниже приводится полный перечень директив ассемблера MPASM. Тому, кто впервые сталкивается с программами на языке ассемблера и программами для ассемблера следует четко понимать разницу между инструкциями микроконтроллера, которые ассемблер преобразует в исполняемый код микроконтроллера, с директивами самого ассемблера При помощи директив ассемблера может быть написана целая программа, с циклами, функциями и условными переходами, но это будет программа, которая руководит работой самого ассемблера: управляет внешним видом листинга, принудительно формирует некоторые фрагменты исполняемого кода и т.д. В исходном тексте программы наряду с инструкциями микроконтроллера всегда присутствуют хотя бы несколько директив ассемблера. Начинающему программисту достаточно знать только некоторые из них. Некоторые директивы применяются только для управления листингом, который часто рассматривают как официальный документ законченного проекта. Но при подготовке объектных кодов, при создании сложных приложений, которые могут ассемблироваться в нескольких различных версиях, потребуется более глубокое знание директив и макроязыка.

_ _BADRAM

Идентификатор недоступной области памяти

badram ]

Директивы BADRAM и MAXRAM совместно закрывают доступ к неиспользуемым ячейкам памяти. Директива BADRAM оп

ределяет расположение недоступных ячеек памяти. Эта директива

разработана для применения совместно с директивой MAXRAM

Каждое значение <ехрг> должно быть меньше или равно значению,

указанному для MAXRAM. Когда применяется директива

MAXRAM и проверка выделенного адреса ОЗУ включена, использование карты памяти определяется директивой BADRAM Чтобы

определить диапазон неприменимых ячеек, используется синтаксис , где начальный адрес диапазона, конечный адрес

Пример см пример для директивы MAXRAM

См также MAXRAM

BANKISEL

Генерация кода косвенного выбора банка bankisel

Используется при генерации объектного файла Эта директива является инструкцией для компоновщика, генерирующего соответствующий код выбора банка для косвенного доступа и адресу, определяемому меткой

Пример

movlw Varl

movwf FSR

bankisel Varl

movwf INDF

См также BANKSEL, PAGESEL BANKSEL

Генерация кода выбора банка banksel

Используется при генерации объектного файла Эта директива является инструкцией компоновщику для генерации кода выбора банка, чтобы установить банк, в котором находится

MOVLB Если контроллер содержит только один банк памяти, никакие инструкции не генерируются Пример

banksel Varl movwf Varl

См также BANKISEL, PAGESEL CBLOCK

Определение блока констант cblock

Определяет список именованных констант Каждая метка

Установка битов конфигурации процессора config <ехрг> или _config ,

Устанавливает биты конфигурации процессора в значения, описываемые выражением <ехрг>. Для семейства PIC18CXXX также должен быть указан адрес байта конфигурации. Для получения информации о значении каждого бита обращайтесь к описанию соответствующего контроллера. Перед применением директивы CONFIG процессор должен

быть объявлен в командной строке ассемблера, либо директивой LIST, либо директивой PROCESSOR. Если используется процессор семейства PIC17CXX, то в командной строке или в директиве LIST должен быть установлен формат выходного файла INHX32.

Пример:

list р=17с42, f=INHX32 config H’FFFF'

См. также IDLOCS, LIST, PROCESSOR

CONSTANT

Объявляет символьную константу

constant

Создает символы для использования в выражениях MPASM. Константы, будучи единожды объявленными, не могут быть переустановлены и выражения должны быть полностью разрешимыми в момент их создания. Это является принципиальным различием между симво лами, объявленными директивой CONSTANT и директивой VARIABLE или созданными директивой SET. Во всем остальном константы и переменные могут использоваться в выражениях на равных условиях.

Инициализирует одно или более слов, содержащих данные, в программной памяти. Данные могут иметь форму константы, перемещаемой или внешней метки или выражения идущих по одному или подряд. Данные могут состоять также из текстовой строки ASCII, заключенной в одиночные кавычки для одиночной буквы и двойные кавычки для строки. Одиночный символ помещается в младший байт слова, символы из строки пакуются по два в слово Если число символов в строке нечетное, то завершающим байтом является ноль. Для всех семейств микроконтроллеров, исключая PIC18CXXX, первая буква является старшим значащим байтом слова У PIC18CXXX первая буква является младшим байтом спова Когда генерируется объектный файл, эта директива может быть использована для объявления инициализированных значений блока данных. Для более подробного изучения этого вопроса обратитесь к описанию директивы IDATA.

Резервирует в программной памяти слово со сжатым 8битным значением. Множество значений <ехрг> продолжает заполнение байтов последовательно до тех пор, пока не закончится список значений. Если число значений нечетное, то последний байт получит нулевое значение. Когда генерируется объектный файл, эта директива может быть использована для объявления инициализированных значений блока данных. Для более подробного изучения этого вопроса обратитесь к описанию директивы IDATA.

Резервирует слово в памяти под 8битные данные. Каждое значение <ехрг> должно выражаться 8битным числом. Старшие биты программного слова равняются нулю. Каждая буква текстовой строки сохраняется в отдельном слове. Несмотря на то, что директива разработана специально для инициализации данных в EEPROM контроллера PIC16C8X, она может быть использована для любого размещения данных в любом процессоре.

Определяет метку подстановочной строки #define

Директива определяет текст подстановочной строки. Где бы ни находилось в ассемблируемом коде имя , вместо него будет подставлена строка . Директива используется без непосредственного указания значения , если соответствующее имя является внешним и его значение может быть проверено директивой IFDEF. Эта директива эмулирует стандарт ANSI С для #define. Символы, определенные этим методом, недоступны для просмотра при помощи MPLAB.

Резервирует слова программной памяти для данных, заполняя их описанными в директиве значениями. Для контроллеров PIC18CXXX инструкция DW предпочтительнее, чем DB. Значения сохраняются в последовательных ячейках памяти и счетчик каждый раз увеличивается на единицу. Выражение <ехрг> может быть текстовой строкой, которая сохраняется в соответствии с описанием для директивы DATA. Когда генерируется объектный файл, эта директива может быть использована для объявления инициализированных значений блока данных. Для более подробного изучения этого вопроса обратитесь к описанию директивы IDATA.

Окончание цикла no директиве WHILE

Эта директива завершает цикл, начатый по директиве WHILE. До тех пор, пока условие, специфицированное директивой WHILE будет оставаться истинным, исходный код между директивами WHILE и ENDW будет продолжать повторно вставляться в ассемблируемый поток исходного текста. Директива может быть использована внутри обычного программного блока или макроса.

MESSG ERRORLEVEL

Устанавливает уровень вывода сообщений

errorlevel {0|l|2|+| }

Директива устанавливает типы сообщений, которые печатаются в файле листинга и файле ошибок.

0Печатаются сообщения, предупреждения и ошибки.

1Печатаются предупреждения и ошибки.

2Печатаются только ошибки.

исключая печать сообщения с номером . + включая печать сообщения с номером Значения с расшифровкой приведены в приложении к главе. Сообщения об ошибках не могут быть отключены. Устанавливая значения 0, 1 или 2 можно управлять выводом каждого сообщения в отдельности.

Пример:

errorlevel 1,202 См. также LIST EXITM

Выход из макроса exitm

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

test macro filereg

if filereg == 1 ; check for valid file exitm else

error "bad file assignment" endif endm

См. также ENDM, MACRO EXPAND

Разворачивает макросы в листинге

expand

Разворачивает все макросы в файле листинга. Эта директива приблизительно похожа на опцию /т в командной строке MPASM, но может быть отключена следующей за ней в исходном тексте директивой NOEXPAND. Если разворачивание включено, то каждый раз, когда вызывается макрос, в текст листинга вставляется его полное содержание. Вставка полного текста макроса может обчегчить отладку и анализ программы, но если макрос вызывается рекурсивно, листинг в этом месте становится почти нечитаемым и значительно удлиняется В таких случаях макрорасширение отключают директивой NOEXPAND Включать и отключать вывод макрорасширений можно сколь угодно много раз.

EXTERN

Объявляет внешнюю метку extern

Применяется при генерации объектных файлов. Объявляет символьное имя некой процедуры, которая может быть использована в текущем модуле, но описана как глобальная в другом модуле. Директива EXTERN должна быть помещена в исходном тексте до того, как будет использована метка

EXTERN, GLOBAL, TEXT, UDATA, UDATA_ACS, UDATA_OVR, UDATA_SHR

JDLOCS

Задает расположение IDномера процессора

idlocs или idlocs ,

В случае применения микроконтроллеров PIC12CXX, РІС 14000 и

РІС16СХХ, директива idlocs устанавливает значения четырех ячеек

иденнтификатора ID в соответствии с шестнадцатеричным значением <ехрг>. Для контроллеров PIC18CXX директива устанавливает двухбайтный IDномер устройства в соответствии с шестнадцатеричным значением <ехрг2> Директива неприменима для контроллеров PIC17CXX. Следует напомнить, что для PIC12CXX, РІС 14000 и РІС16СХХ значения идентификатора записываются только в четыре младшие бита каждой ячейки, а старшие следует оставлять незапро граммированными, чтение и запись этих ячеек возможны только при программировании

Например, если <ехрг> имеет значение 1AF, то первое (младшее) значение идентификатора равно нулю, второе равно 1, третье десяти, четвертое шестнадцати. Перед тем, как применить директиву, необходимо объявить тип процессора в командной строке, директивой LIST или директивой PROCESSOR.

Начало условно ассемблируемого блока if <ехрг>

Начинает обработку условно ассемблируемого блока. Если выражение <ехрг> истинное, ассемблируется код, следующий немедленно за директивой IF, в противном случае нижеследующий за IF код игнорируется и ассемблируется код, следующий от директивы ELSE до директивы ENDIF Если выражение <ехрг> задано явно и равно нулю, оно трактуется как ложное, если выражение имеет какоелибо иное явное значение, оно трактуется как истинное.

if version == 100; проверяем номер текущей версии movlw 0x0а movwf io_l else movlw 0x0la movwf io_2 endif

См. также ELSE, ENDIF IFDEF

Исполнить, если символ определен ранее ifdef

Если символьное имя

мандной строке MPASM, то ассемблируется код, следующий сразу за директивой, до достижения директивы ENDIF

Если символьное имя

Подключает дополнительный файл источника

include <> include ""

Указанный файл читается, как исходный код. При этом получается тот же эффект, как если бы вы вставили фрагмент текста из другого файла в текст своей программы при помощи текстового редактора, в то место, где находится директива INCLUDE. Допускается до шести уровней вложенности файлов в файл. Имя файла можно заключать в кавычки или угловые скобки. Если определен полный путь к файлу, то он разыскивается только в соответствии с этим путем. Если путь не определен, то файл разыскивается в следующем порядке: текущая рабочая директория, директория исходного файла, директория исполняемого файла MPASM.

Директивы MAXRAM и BADRAM совместно закрывают доступ к регистрам, применение которых невозможно. MAXRAM

определяет абсолютный наибольший корректный адрес ОЗУ и инициализирует карту корректных адресов ОЗУ от значения <ехрг> и ниже. Значение <ехрг> должно быть больше или равно максимальному адресу ОЗУ нулевой страницы и меньше, чем 1000Н. Эта директива разработана для использования с директивой BADRAM. Как

только применена директива MAXRAM, включается проверка

каждого конкретного адреса на доступность, при этом используются ограничения карты памяти, сделанные директивой BADRAM. Директива MAXRAM может быть использована более одного раза,

но каждое новое использование этой директивы полностью переопределяет всю карту распределения ОЗУ.

BADRAM MESSG

Создает сообщение, определенное пользователем

messg ""

Генерирует информационное сообщение, выводимое в файл листинга. Текст сообщения может иметь длину до 80 символов. При выводе сообщений этой директивой не устанавливаются и не возвращаются никакие коды сообщений об ошибках. Если эта директива используется для вывода сообщений о какихлибо внутренних ограничениях или ошибках при ассемблировании, то сообщение выводится в строгом соответствии с алгоритмом, который определил пользователь и с текстом, который задал пользователь.


Еще по теме:
 Небесная битва
 Виды телевидения. Спутниковое телевидение.
 Интерактивное телевидение
 Что такое нейроморфные процессоры и почему они сделают ваш смартфон «живым»
 ОСТАНОВ ПО УСЛОВИЮ

Добавить комментарий:
Введите ваше имя:

Комментарий:

Защита от спама - решите пример: