.DSEG
;Начало сегмента данныхvar1:.BYTE 1;
Резервируем 1 байт для переменной var1table:.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
; Очистить регистр r2out 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 вставляется соответствующий файл.
Синтаксис: