Читаем Микроконтроллеры AVR: от простого к сложному полностью

Если перед директивой расположена метка (на этой же строке), метка получит значение параметра директивы. Значение по умолчанию для сегмента кода и 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


Унарный минус

Обозначение:

Описание: возвращает число с измененным на противоположный знаком.


Умножение

Обозначение: *

Описание: возвращает результат умножения двух чисел. Приоритет: 13.

Пример: ldi r30,label*2; Загрузить в регистр r30 label*2


Деление

Обозначение: /

Описание: возвращает целую часть от деления левого параметра на правый.

Приоритет: 13.

Пример: ldi r30, label/2; Загрузить в регистр r30 label/2


Сложение

Обозначение: +

Описание: возвращает сумму двух чисел.

Приоритет: 12.

Пример: ldi г30,с1+с2; Загрузить в регистр r30 с1+с2


Вычитание

Обозначение: -

Описание: возвращает результат вычитания правого числа из левого.

Приоритет: 12.

Пример: ldi г17,с1-с2; Загрузить в регистр r30 с1-с2


Сдвиг влево

Обозначение: <<

Описание: возвращает значение левого числа, сдвинутое влево на число раз, равное правому числу.

Приоритет: 11.

Пример: ldi r17,1<<3; Загружает в регистр г17 число 1, сдвинутое влево на 3 бита


Сдвиг вправо

Обозначение: >>

Описание: возвращает значение левого числа, сдвинутое вправо на число раз, равное правому числу.

Приоритет: 11.

Пример: ldi r17,1>>2; Загружает в регистр r17 число 1, сдвинутое вправо на 2 бита


Меньше

Обозначение: <

Перейти на страницу:

Все книги серии Библиотека инженера

Похожие книги

Искусство схемотехники. Том 3 (Изд.4-е)
Искусство схемотехники. Том 3 (Изд.4-е)

Широко известная читателю по предыдущим изданиям монография известных американских специалистов посвящена быстро развивающимся областям электроники. В ней приведены наиболее интересные технические решения, а также анализируются ошибки разработчиков аппаратуры: внимание читателя сосредотачивается на тонких аспектах проектирования и применения электронных схем. На русском языке издается в трех томах. Том 3 содержит сведения о микропроцессорах, радиотехнических схемах, методах измерения и обработки сигналов, принципах конструирования аппаратуры и проектирования маломощных устройств, а также обширные приложения. Для специалистов в области электроники, автоматики, вычислительной техники, а также студентов соответствующих специальностей вузов и техникумов.

Пауль Хоровиц , Уинфилд Хилл

Техника / Радиоэлектроника