Инструкции работы с битами
Мнемоника | Операнды | Описание | Операция | Флаги | Циклы |
LSL | Логический сдвиг влево | Rd(n+1)=Rd(n), Rd(0)=0, C=Rd(7) | Z,C,N,V,H,S | 1 | |
LSR | Логический сдвиг вправо | Rd(n)=Rd(n+1), Rd(7)=0, C=Rd(0) | Z,C,N,V,S | 1 | |
ROL | Циклический сдвиг влево через C | Rd(0)=C, Rd(n+1)=Rd(n), C=Rd(7) | Z,C,N,V,H,S | 1 | |
ROR | Циклический сдвиг вправо через C | Rd(7)=C, Rd(n)=Rd(n+1), C=Rd(0) | Z,C,N,V,S | 1 | |
ASR | Арифметический сдвиг вправо | Rd(n)=Rd(n+1), n=0,...,6 | Z,C,N,V,S | 1 | |
SWAP | Перестановка тетрад | Rd(3..0) = Rd(7..4), Rd(7..4) = Rd(3..0) | None | 1 | |
BSET | Установка флага | SREG(s) = 1 | SREG(s) | 1 | |
BCLR | Очистка флага | SREG(s) = 0 | SREG(s) | 1 | |
SBI | , | Установить бит в порту | I/O(P,b) = 1 | None | 2 |
CBI | , | Очистить бит в порту | I/O(P,b) = 0 | None | 2 |
BST | , | Сохранить бит из регистра в T | T = Rr(b) | T | 1 |
BLD | , | Загрузить бит из T в регистр | Rd(b) = T | None | 1 |
SEC | Нет | Установить флаг переноса | C =1 | C | 1 |
CLC | Нет | Очистить флаг переноса | C = 0 | C | 1 |
SEN | Нет | Установить флаг отрицательного числа | N = 1 | N | 1 |
CLN | Нет | Очистить флаг отрицательного числа | N = 0 | N | 1 |
SEZ | Нет | Установить флаг нуля | Z = 1 | Z | 1 |
CLZ | Нет | Очистить флаг нуля | Z = 0 | Z | 1 |
SEI | Нет | Установить флаг прерываний | I = 1 | I | 1 |
CLI | Нет | Очистить флаг прерываний | I = 0 | I | 1 |
SES | Нет | Установить флаг числа со знаком | S = 1 | S | 1 |
CLN | Нет | Очистить флаг числа со знаком | S = 0 | S | 1 |
SEV | Нет | Установить флаг переполнения | V = 1 | V | 1 |
CLV | Нет | Очистить флаг переполнения | V = 0 | V | 1 |
SET | Нет | Установить флаг T | T = 1 | T | 1 |
CLT | Нет | Очистить флаг T | T = 0 | T | 1 |
SEH | Нет | Установить флаг внутреннего переноса | H = 1 | H | 1 |
CLH | Нет | Очистить флаг внутреннего переноса | H = 0 | H | 1 |
NOP | Нет | Нет операции | Нет | None | 1 |
SLEEP | Нет | Спать (уменьшить энергопотребление) | Смотрите описание инструкции | None | 1 |
WDR | Нет | Сброс сторожевого таймера | Смотрите описание инструкции | None | 1 |
Ассемблер не различает регистр символов.
Операнды могут быть таких видов:
Rd: Результирующий (и исходный) регистр в регистровом файле
Rr: Исходный регистр в регистровом файле
b: Константа (3 бита), может быть константное выражение
s: Константа (3 бита), может быть константное выражение
P: Константа (5-6 бит), может быть константное выражение
K6; Константа (6 бит), может быть константное выражение
K8: Константа (8 бит), может быть константное выражение
k: Константа (размер зависит от инструкции), может быть константное выражение
q: Константа (6 бит), может быть константное выражение
Rdl: R24, R26, R28, R30. Для инструкций ADIW и SBIW
X,Y,Z: Регистры косвенной адресации (X=R27:R26, Y=R29:R28, Z=R31:R30)