Синтаксис:
Метка:.BYTE числовое выражение
Примеры:
.DSEG
var1:.BYTE 1; Резервируем 1 байт для переменной var1
able:.BYTE tab_size; Резервируем tab_size байт
.CSEG
ldi r30,low(var1); Загружаем младший байт Z-регистра
ldi r31,high(var1); Загружаем старший байт Z-регистра
Id r1,Z; Загрузить содержимое переменной var1 в r1
.CSEG — сегмент кода.
Директива CSEG определяет начало сегмента кода (программ). В исходном тексте программы может быть несколько сегментов кода. Транслятор ассемблера в процессе компиляции программы объединяет все сегменты кода в один. Директива BYTE не может быть использована в сегменте кода. Если в программе нет явного указания названия сегмента, по умолчанию считается, что это сегмент кода. Директива CSEG не имеет никаких параметров. Сегмент кода имеет свой счетчик слов. Директива-ORG может быть использована для размещения кода или констант в определенном программистом месте памяти программ.
Синтаксис:
.CSEG
Пример:
.DSEG; Начало сегмента данных
vartab: BYTE 4; Резервируем 4 байта в SRAM
.CSEG; Начало сегмента кода
const:.DW 2; Запишем число 0x0002 в память программ
mov r1,r0; Что-нибудь сделаем
. DB — определить байты-константы в памяти программ или EEPROM.
Директива 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 символьное имя = регистр
Пример:
.DEF temp=r16.
.DEF for=r0
.CSEG
ldi temp, 0xf0; Загрузить в регистр temp число 0xf0
in ior, 0x3f; Прочитать содержимое SREG и записать в регистр ior
еог temp, ior; Исключающее ИЛИ между регистрами temp и ior
.DEVICE — определяет тип целевого микроконтроллера.
Директива DEVICE позволяет программисту указать, на каком микроконтроллере будет выполняться программа. Если в тексте программы указана эта директива, транслятор ассемблера будет проверять текст программы на наличие недопустимых операций (например, не поддерживаемых выбранным микроконтроллером). В случае попытки использования большего размера SRAM или EEPROM памяти, чем имеется у выбранного микроконтроллера, также будет выдано предупреждение. Если директива DEVICE отсутствует в тексте программы, разрешены все команды семейства микроконтроллеров AVR, а размеры памяти не проверяются.
Синтаксис:
DEVICE AT9DS1200 | AT90S2313 | AT9DS2323 | AT90S2343 | AT90S4414 | AT90S8515 | ATMEGA103
Примечание. Появляются новые модели микроконтроллеров, поэтому при необходимости использовать более новый микроконтроллер следует самостоятельно отслеживать разрешенные инструкции в тексте программы (соответственно не применяя директиву DEVICE) либо воспользоваться обновленной версией транслятора ассемблера.