.NOLIST
Пример:
.NOLIST; Отключить генерацию листинга
.INCLUDE "macro.inc" ; Включаемые файлы не будут
.INCLUDE "const.def"; показаны в листинге
.LIST; Включить генерацию листинга
.ORG — установка значения счетчика расположения.
Директива ORG присваивает абсолютное значение счетчику. Параметром директивы является значение, которое должно быть присвоено счетчику. При использовании директивы ORG в сегменте данных будет определено значение, указывающее расположение и оперативной памяти SRAM. При использовании директивы ORG в сегменте кода будет определено значение, указывающее расположение в памяти программ. При использовании директивы ORG в сегменте EEPROM будет определено значение, указывающее расположение в памяти EEPROM.
Если перед директивой расположена метка (на этой же строке), метка получит значение параметра директивы. Значение по умолчанию для сегмента кода и EEPROM равно 0, а для SRAM — 32 (так как регистры занимают пространство с 0 до 31). Обратите внимание, что для EEPROM и SRAM отсчитываются байты, в то время как в памяти программ — слова.
Синтаксис:
.ORG выражение
Пример:
.DSEG; Начало сегмента данных (SRAM)
.ORG 0x37; Установить адрес SRAM 37Н
variable:.BYTE 1; Зарезервировать 1 байт по адресу 37Н SRAM
.ESEG;Начало сегмента EEPROM
.ORG 0x20; Установить значение счетчика расположения
eevar:.DW 0xf77a;Инициализировать слово в памяти EEPROM
.CSEG
.ORG 0x10; Установить счетчик на значение 0x10
mov r0,r1; Эта команда будет расположена в памяти; программ по адресу 0x10
.SET — присвоить символьному обозначению выражение.
Директива SET присваивает символьному обозначению значение выражения. В дальнейшем это символьное обозначение может быть использовано в выражениях. В дальнейшем тексте программы это символьное выражение может быть изменено.
Синтаксис:
.SET символьное обозначение = выражение
Пример:
SET io_offset = 0x23
.SET porta = io_offset + 2
CSEG; Начало сегмента кода
clr r2; Очистить регистр г2
out porta,r2; Записать в порт А
Ассемблер позволяет использовать в тексте программы выражения. Они могут содержать операнды, операции и функции. Все выражения имеют разрядность 32 бита.
Операнды
Могут быть использованы следующие операнды:
• определенные программистом метки, имеющие значение счетчика, в зависимости от места своего расположения;
• переменные, определенные с помощью директивы SET;
• константы, определенные с помощью директивы EQU;
• целые константы:
— десятичные (по умолчанию): 10,255,
— шестнадцатеричные (два вида записи): 0x0а, $0а, 0xff, $ff,
— двоичные: 0Ь00001010, 0b11111111;
• коды символов ASCII: 'А', 'а';
• строки ASCII (без нуля в конце строки): «String»;
• PC — текущее значение счетчика команд в памяти программ.
Функции
LOW(выражение) — возвращает младший байт выражения;
НIGH(выражение) — возвращает старший байт выражения;
ВУТЕ2(выражение) — возвращает 2 байта выражения;
ВУТЕ3(выражение) — возвращает 3 байта выражения;
ВУТЕ4(выражение) — возвращает 4 байта выражения;
LWRD(выражение) — возвращает биты 0—15 выражения;
HWRD(выражение) — возвращает биты 16–31 выражения;
РАGЕ(выражение) — возвращает биты 16–21 выражения;
ЕХР2(выражение) — возвращает 2^ выражения;
LOG2(выражение) — возвращает целую часть lоg 2(выражение).
Операции
Ассемблер поддерживает различные операторы, описанные ниже. При их использовании можно применять скобки.
Логическое НЕ
Обозначение: !
Описание: унарный оператор, возвращает 1, если выражение равно нулю, и 0, если выражение было не равно нулю.
Приоритет: 14.
Пример: ldi r16,!0xf0; Загрузить в г16 0x00
Побитовое НЕ
Обозначение: ~
Описание: унарный оператор, который возвращает исходное выражение со всеми инвертированными битами.
Приоритет: 14.
Пример: ldi r16.~0xf0; Загрузить в r16 0x0f