ORG - установить адрес начала программы или подпрограмм прерывания.
CSEG - сегмент кодов (Code segment).
Директива CSEG указывает на начало сегмента кодов (программы). Ассемблируемый файл может иметь несколько кодовых сегментов, которые будут объединены в один при ассемблировании. Директива не имеет параметров.
Синтаксис: .CSEG
Директива ORG устанавливает начальный адрес сегментов данных и кода (программы). По этому адресу обычно размещается команда безусловного перехода, указывающая на адрес начала программы или подпрограммы прерывания. Используется только совместно с директивами .CSEG, .DSEG, .ESEG.
Синтаксис: .ORG физический адрес
Например: .ORG $06
rjmp reset
DEF – присвоить имя регистру
Директива DEF позволяет присвоить символическое имя регистрам общего назначения и регистрам ввода/вывода (I/O). Один и тот же регистр может иметь несколько символических имен.
Синтаксис: .DEF имя = регистр
Например: .DEF temp = R16
INCLUDE – вставить другой файл
Директива INCLUDE указывает ассемблеру подключить этот файл к компилируемой программе. Ассемблер будет компилировать этот файл до конца или до директивы EXIT. Подключаемый файл может сам включать директивы INCLUDE.
Синтаксис: .INCLUDE "имя файла"
Например: .INCLUDE "8535def.inc "
Для первой программы предлагается упрощенная структура (шаблон) построения программы, в которой представлены обязательный минимальный набор команд и директив. Полный шаблон приведен в конспекте лекций.
;*******************************************
; название программы,
; краткое описание, необходимые пояснения
;*******************************************
.include “8535def.inc” ; файл описания AT90S8535.
;******сегмент кодов
.cseg
;****** вектор прерываний
.org $00 ; адрес начала программы в памяти программ.
rjmp nacalo ; прерывание по сбросу и включению питания.
.org $30 ; адрес начала основной программы в памяти программ.
;
;*******начало основной программы
nacalo:
… ; программирование портов I/O и других устройств
… ; микроконтроллера
programma:
… ; текст основной программы
…
rjmp programma: ; переход на начало текста основной программы.
; конец программы (никак не обозначается).
Если провести аналогию с языками высокого уровня, где используется понятие «переменная», то в ассемблере для микроконтроллера переменной является любой регистр общего назначения, любой регистр ввода/вывода и любая ячейка памяти ОЗУ. Содержимое их может изменяться. В общем случае при программировании для регистров общего назначения и регистров ввода/вывода используются стандартные имена, но любому из этих элементов, в том числе ячейкам ОЗУ, можно присвоить индивидуальное имя. Константа является числом и не может изменяться, хотя и ей тоже можно присвоить индивидуальное имя.