.DSEG;Начало сегмента данных
var1:.BYTE 1; Резервируем 1 байт для переменной var1
table:.BYTE tab_size; Резервируем tab_size байт
.CSEG
ldi r30,low(var1);Загружаем младший байт Z-регистра
ldi r31.high(var1);Загружаем старший байт Z-регистра
Id r1,Z ;Загрузить содержимое переменной var1 в r1
Директива DW резервирует место в памяти программ или EEPROM. Для того чтобы иметь возможность обращаться к зарезервированному пространству, перед этой директивой следует ставить метку. Директива DW должна быть расположена в сегменте кода или EEPROM. Параметрами директивы DW является список выражений.
Список выражений представляет собой одно или несколько выражений, разделенных запятыми. Каждое выражение может быть равно числу от -32768 до 65535. Если выражение представляет собой отрицательное число, оно будет помещено в память программ или EEPROM в дополнительном коде.
Синтаксис:
Метка:.DW список выражений
Пример:
.CSEG
varlist:.DW 0,56255, 0b0101110011101011, -12128, 0xaaff
.ESEG
eevar:.DW 0xff17
Директива ENDMACRO определяет конец описания макрокоманды. Директива не имеет параметров. Для получения информации о макрокомандах смотри директиву MACRO.
Синтаксис:
.ENDMACRD
Пример:
MACRO SUBI16; Начало определения макрокоманды
subi r16,low(@0); Вычитаем младший байт
sbci r17, high(@0); Вычитаем старший байт
.ENDMACRO; Конец определения макрокоманды
Директива SET присваивает символьному обозначению значение выражения. В дальнейшем это символьное обозначение может быть использовано в выражениях. Присвоенное значение — константа. В дальнейшем тексте программы это символьное выражение не может быть переопределено или изменено.
Синтаксис:
.EQU <символьное обозначение> = <выражение>
Пример:
.EQU io_offset = 0x23
.EQU porta = io_offset + 2
.CSEG; Начало сегмента кода
clr r2; Очистить регистр r2
out porta,r2; Записать в порт А
.ESEG — EEPROM сегмент.
Директива ESEG определяет начало EEPROM сегмента. В исходном тексте программы может быть несколько EEPROM сегментов. Транслятор ассемблера в процессе компиляции программы объединяет все EEPROM сегменты в один. Директива BYTE не может быть использована в EEPROM сегменте. Директива ESEG не имеет никаких параметров. Сегмент EEPROM имеет свой счетчик байтов. Директива. ORG может быть использована для размещения кода или констант в определенном программистом месте памяти EEPROM.
Синтаксис:
.ESEG
Пример:
.DSEG; Начало сегмента данных
vartab:.BYTE 4; Резервируем 4 байта в SRAM
.ESEG
eevar:.DW 0xff67; Инициализируем одно слово в EEPROM
.CSEG;Начало сегмента кода
const:.DW 2;Запишем число 0x0002 в память программ
mov r1,r0;Что-нибудь сделаем
Директива EXIT указывает транслятору ассемблера, что следует завершить трансляцию программы. При отсутствии этой директивы транслятор ассемблера работает до тех пор, пока исходный файл не закончится (EOF). Если директив EXIT встречается в файле, включаемом в текст директивой INCLUDE, транслятор ассемблера продолжит работу со строки, следующей после соответствующей директивы INCLUDE.
Синтаксис:
.EXIT
Пример:
.EXIT; Завершить обработку этого файла
Директива INCLUDE указывает транслятору ассемблера на необходимость вставить в исходный текст программы другой файл. Реально при обработке этой директивы транслируется файл, указанный в директиве INCLUDE, после завершения его обработки (при достижении конца файла или директивы. EXIT) продолжается обработка основного файла. Вложенные файлы, в свою очередь, могут иметь директиву INCLUDE. Для облегчения понимания можно представить себе, что в текст программы вместо директивы INCLUDE вставляется соответствующий файл.
Синтаксис: