ORG - Установить положение в сегменте

Директива ORG устанавливает счётчик положения равным заданной величине, которая передаётся как параметр. Для сегмента данных она устанавливает счётчик положения в SRAM (ОЗУ), для сегмента программ это программный счётчик, а для сегмента EEPROM это положение в EEPROM. Если директиве предшествует метка (в той же строке) то метка размещается по адресу указанному в параметре директивы. Перед началом компиляции программный счётчик и счётчик EEPROM равны нулю, а счётчик ОЗУ равен 32 (поскольку адреса 0-31 заняты регистрами). Обратите внимание что для ОЗУ и EEPROM используются побайтные счётчики а для программного сегмента - пословный.

 

Синтаксис:

.ORG выражение

Пример:

.DSEG ; Начало сегмента данных

.ORG 0x37 ; Установить адрес SRAM равным 0x37

variable: .BYTE 1 ; Зарезервировать байт по адресу 0x37H

.CSEG

.ORG 0x10 ; Установить программный счётчик равным 0x10

mov r0,r1 ; Данная команда будет размещена по адресу 0x10

SET - Установить переменный символический эквивалент выражения

Директива SET присваивает имени некоторое значение. Это имя позднее может быть использовано в выражениях. Причем в отличии от директивы EQU значение имени может быть изменено другой директивой SET.

Синтаксис:

.SET имя = выражение

Пример:

.SET io_offset = 0x23

.SET porta = io_offset + 2

.CSEG ; Начало кодового сегмента

clr r2 ; Очистить регистр 2

out porta,r2 ; Записать в порт A

 

Выражения

Компилятор позволяет использовать в программе выражения которые могут состоять операндов, операторов и функций. Все выражения являются 32-битными.

Операнды

Могут быть использованы следующие операнды:

Метки определённые пользователем (дают значение своего положения).

Переменные определённые директивой SET

Константы определённые директивой EQU

Числа заданные в формате:

Десятичном (принят по умолчанию): 10, 255

Шестнадцатеричном (два варианта записи): 0x0a, $0a, 0xff, $ff

Двоичном: 0b00001010, 0b11111111

Восьмеричном (начинаются с нуля): 010, 077

PC - текущее значение программного счётчика (Programm Counter)