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

March 9, 2011 by admin Комментировать »

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

Сегмент программы открывается директивой .CSEG. Если программа начинается с этого сегмента, директива может отсутствовать. В сегменте программы с помощью директивы .ORG можно указать начало сегмента.

Директива .DB в сегменте определяет один байт или группу байтов, констант, записываемых во Flash-память. Директива .DW определяет слово или группу слов, записываемых в память в качестве констант. Начало записи констант определяется меткой, стоящей перед соответствующей директивой. Перечисляемые константы разделяются запятыми.

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

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

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

Таблица 1.8. Список директив

Директива

Описание

.BYTE

Резервировать байты в ОЗУ

.CSEG

Сегмент программы

.DB

Определить байт – константу во Flash-памяти или

 

EEPROM

.DEF

Назначить регистру символическое имя

.DEVICE

Определяет устройство, для которого компилируется

 

программа

.DSEG

Сегмент данных

.DW

Определяет слово во Flash-памяти или EEPROM

.ENDM,

Конец макроса

.ENDMACRO

 

.EQU

Установить постоянное выражение

.ESEG

Сегмент EEPROM

.EXIT

Выход из файла

.INCLUDE

Вложить другой файл

.LIST

Включить генерацию листинга

.LISTMAC

Включить разворачивание макросов в листинге

.MACRO

Начало макроса

.NOLIST

Выключить генерацию листинга

.ORG

Установить положение в сегменте

.SET

Установить для переменной эквивалентное выражение

Директивы .MACRO и .ENDMACRO обрамляют макроопределение. Макроопределение может иметь до 10 параметров с фиксированными именами @0,…,@9. При вызове макроопределения параметры задают в виде списка в порядке нумерации.

Сегмент данных начинается директивой .DSEG. В сегменте могут быть использованы директивы .ORG и .BYTE. Директива .BYTE определяет количество байтов, к которым будет производиться обращение при выполнении программы. Резервируемая область начинается по адресу, определяемому меткой перед директивой.

Сегмент типа EEPROM начинается директивой .ESEG. В сегменте могут быть использованы директивы .ORG, .DB, .DW. Директива .DB в сегменте определяет один или группу байтов, записываемых в EEPROM. Директива .DW определяет слово или группу слов, записываемых в память EEPROM парами по 2 байта. Начало записи байтов и слов определяется меткой, стоящей перед соответствующей директивой.

Директивы .LIST, .NOLIST, .LISTMAC используют для управления выводом листинга.

Оставить комментарий

микросхемы мощности Устройство импульсов питания пример приемника провода витков генератора выходе напряжение напряжения нагрузки радоэлектроника работы сигнал сигнала сигналов управления сопротивление усилитель усилителя усиления устройства схема теория транзистора транзисторов частоты