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: ; переход на начало текста основной программы.

; конец программы (никак не обозначается).

 

Если провести аналогию с языками высокого уровня, где используется понятие «переменная», то в ассемблере для микроконтроллера переменной является любой регистр общего назначения, любой регистр ввода/вывода и любая ячейка памяти ОЗУ. Содержимое их может изменяться. В общем случае при программировании для регистров общего назначения и регистров ввода/вывода используются стандартные имена, но любому из этих элементов, в том числе ячейкам ОЗУ, можно присвоить индивидуальное имя. Константа является числом и не может изменяться, хотя и ей тоже можно присвоить индивидуальное имя.