Пример:
.DSEG; Начало сегмента данных
vartab: BYTE 4; Резервируем 4 байта в SRAM
.CSEG; Начало сегмента кода
const:.DW 2; Запишем число 0x0002 в память программ
mov r1,r0; Что-нибудь сделаем
.
Директива DB резервирует место в памяти программ или EEPROM. Для того чтобы иметь возможность обращаться к зарезервированному пространству, перед этой директивой следует ставить метку. Директива DB может быть расположена только в сегменте кода или EEPROM. Параметрами директивы DB является список выражений.
Список выражений представляет собой одно или несколько выражений, разделенных запятыми. Каждое выражение может быть равно числу от -128 до 255. Если выражение представляет собой отрицательное число, оно будет помещено в намять программ или EEPROM в дополнительном коде.
Если директива DB расположена в сегменте кода и имеет больше, чем одно выражение в списке параметров, выражения упаковываются таким образом, что два байта располагаются в одном слове памяти программ. Если число выражений нечетное, последнее выражение будет помещено в отдельное слово памяти программ, даже если после директивы DB следом расположена еще одна директива DB.
Синтаксис:
Метка:.DB список выражений
Пример:
.CSEG
const:.DB 0, 255, 0Ь01011100, — 128,0хаа
.ESEG
eeconst:.DB 0xff
Директива DEF позволяет назначить регистру символьное имя, что позволяет сделать программу гораздо понятнее и нагляднее. Можно назначить одному регистру несколько символьных имен. Символьное имя регистра может быть переопределено в последующем тексте программы.
Синтаксис:
.DEF символьное имя = регистр
Пример:
.DEF temp=r16.
.DEF for=r0
.CSEG
ldi temp, 0xf0; Загрузить в регистр temp число 0xf0
in ior, 0x3f; Прочитать содержимое SREG и записать в регистр ior
еог temp, ior; Исключающее ИЛИ между регистрами temp и ior
Директива DEVICE позволяет программисту указать, на каком микроконтроллере будет выполняться программа. Если в тексте программы указана эта директива, транслятор ассемблера будет проверять текст программы на наличие недопустимых операций (например, не поддерживаемых выбранным микроконтроллером). В случае попытки использования большего размера SRAM или EEPROM памяти, чем имеется у выбранного микроконтроллера, также будет выдано предупреждение. Если директива DEVICE отсутствует в тексте программы, разрешены все команды семейства микроконтроллеров AVR, а размеры памяти не проверяются.
Синтаксис:
DEVICE AT9DS1200 | AT90S2313 | AT9DS2323 | AT90S2343 | AT90S4414 | AT90S8515 | ATMEGA103
Примечание.
Пример:
.DEVICE AT90S1200; Используется микроконтроллер AT90S1200
.CSEG
push r30; Эта запись вызовет сообщение о том, что выбранное устройство не поддерживает эту инструкцию
Директива DSEG определяет начало сегмента данных. В исходном тексте программы на ассемблере может быть несколько сегментов данных. В процессе трансляции все они будут объединены в один. Обычно сегмент данных содержит только директивы BYTE с метками. Сегмент данных имеет свой счетчик байтов. Директива ORG может быть использована для расположения переменных в конкретных местах SRAM. Директива DSEG не имеет параметров.
Синтаксис:
.DSEG
Пример: