| Мнемоника |
Операнды |
Описание |
Действие |
Флаги |
Кол-во циклов, примечания |
| ADD |
Rd, Rr |
Сложение без учета переноса |
Rd ¬
Rd + Rr |
Z,C,N,V,H |
1 |
| ADC |
Rd, Rr |
Сложение с учетом переноса |
Rd ¬
Rd + Rr + C |
Z,C,N,V,H |
1 |
| ADIW |
Rd, K |
Прибавить константу к слову |
Rd+1:Rd ¬
Rd+1:Rd + K |
Z,C,N,V |
2 |
| SUB |
Rd, Rr |
Вычитание без учета переноса |
Rd ¬
Rd - Rr |
Z,C,N,V,H |
1 |
| SUBI |
Rd, K |
Вычесть константу |
Rd ¬
Rd - K |
Z,C,N,V,H |
1 |
| SBC |
Rd, Rr |
Вычитание с учетом переноса |
Rd ¬
Rd - Rr - C |
Z,C,N,V,H |
1 |
| SBCI |
Rd, K |
Вычесть константу с учетом
переноса |
Rd ¬
Rd - K - C |
Z,C,N,V,H |
1 |
| SBIW |
Rd, K |
Вычесть константу из слова |
Rd+1:Rd ¬
Rd+1:Rd - K |
Z,C,N,V |
2 |
| AND |
Rd, Rr |
Логическое И |
Rd ¬
Rd ·
Rr |
Z,N,V |
1 |
| ANDI |
Rd, K |
Логическое И с константой |
Rd ¬
Rd ·
K |
Z,N,V |
1 |
| OR |
Rd, Rr |
Логическое ИЛИ |
Rd ¬
Rd v Rr |
Z,N,V |
1 |
| ORI |
Rd, K |
Логическое ИЛИ с константой |
Rd ¬
Rd v K |
Z,N,V |
1 |
| EOR |
Rd, Rr |
Исключающее ИЛИ |
Rd ¬
Rd Å
Rr |
Z,N,V |
1 |
| COM |
Rd |
Значения битов на
противоположные |
Rd ¬
$FF - Rd |
Z,C,N,V |
1 |
| NEG |
Rd |
Изменение знака числа |
Rd ¬
$00 - Rd |
Z,C,N,V,H |
1 |
| SBR |
Rd, K |
Установка битов в регистре |
Rd ¬
Rd v K |
Z,N,V |
1 |
| CBR |
Rd, K |
Сброс битов в регистре |
Rd ¬
Rd ·
($FFh - K) |
Z,N,V |
1 |
| INC |
Rd |
Инкремент |
Rd ¬
Rd + 1 |
Z,N,V |
1 |
| DEC |
Rd |
Декремент |
Rd ¬
Rd - 1 |
Z,N,V |
1 |
| TST |
Rd |
Тест на ноль или
отрицательное число |
Rd ¬
Rd ·
Rd |
Z,N,V |
1 |
| CLR |
Rd |
Сбросить регистр |
Rd ¬
Rd Å
Rd |
Z,N,V |
1 |
| SER |
Rd |
Установить регистр |
Rd ¬
$FF |
Нет |
1 |
| MUL |
Rd, Rr |
Перемножить беззнаковые |
R1, R0 ¬
Rd ´
Rr |
C |
2(1) |
| Команды
ветвления |
| RJMP |
k |
Относительный прыжок |
PC ¬
PC + k + 1 |
Нет |
2 |
| IJMP |
|
Косвенный прыжок на (Z) |
PC ¬
Z |
Нет |
2 |
| JMP |
k |
Прыжок |
PC ¬
k |
Нет |
3 |
| RCALL |
k |
Относительный вызов процедуры |
PC ¬
PC + k + 1 |
Нет |
3 |
| ICALL |
|
Косвенный вызов (Z) |
PC ¬
Z |
Нет |
3 |
| CALL |
k |
Вызов процедуры |
PC ¬
k |
Нет |
4 |
| RET |
|
Возврат из процедуры |
PC ¬
STACK |
Нет |
4 |
| RETI |
|
Возврат из прерывания |
PC ¬
STACK |
I |
4 |
| CPSE |
Rd, Rr |
Сравнить, пропустить если равны |
if (Rd = Rr) PC ¬
PC + 2 or 3 |
Нет |
1 / 2 / 3 |
| CP |
Rd, Rr |
Сравнить |
Rd - Rr |
Z,C,N,V,H |
1 |
| CPC |
Rd, Rr |
Сравнить с учетом переноса |
Rd - Rr - C |
Z,C,N,V,H |
1 |
| CPI |
Rd, K |
Сравнить с константой |
Rd - K |
Z,C,N,V,H |
1 |
| SBRC |
Rr, b |
Пропустить если бит в регистре
сброшен |
if (Rr(b)=0) PC ¬
PC + 2 or 3 |
Нет |
1 / 2 / 3 |
| SBRS |
Rr, b |
Пропустить если бит в регистре
установлен |
if (Rr(b)=1) PC ¬
PC + 2 or 3 |
Нет |
1 / 2 / 3 |
| SBIC |
P, b |
Пропустить если бит в регистре
ввода-вывода сброшен |
if(I/O(P,b)=0) PC ¬
PC + 2 or 3 |
Нет |
1 / 2 / 3 |
| SBIS |
P, b |
Пропустить если бит в регистре
ввода-вывода установлен |
if(I/O(P,b)=1) PC ¬
PC + 2 or 3 |
Нет |
1 / 2 / 3 |
| BRBS |
s, k |
|
if (SREG(s) = 1) then PC ¬
PC+k + 1 |
Нет |
1 / 2 |
| BRBC |
s, k |
|
if (SREG(s) = 0) then PC ¬
PC+k + 1 |
Нет |
1 / 2 |
| BREQ |
k |
|
if (Z = 1) then PC ¬
PC + k + 1 |
Нет |
1 / 2 |
| BRNE |
k |
|
if (Z = 0) then PC ¬
PC + k + 1 |
Нет |
1 / 2 |
| BRCS |
k |
|
if (C = 1) then PC ¬
PC + k + 1 |
Нет |
1 / 2 |
| BRCC |
k |
|
if (C = 0) then PC ¬
PC + k + 1 |
Нет |
1 / 2 |
| BRSH |
k |
|
if (C = 0) then PC ¬
PC + k + 1 |
Нет |
1 / 2 |
| BRLO |
k |
|
if (C = 1) then PC ¬
PC + k + 1 |
Нет |
1 / 2 |
| BRMI |
k |
|
if (N = 1) then PC ¬
PC + k + 1 |
Нет |
1 / 2 |
| BRPL |
k |
|
if (N = 0) then PC ¬
PC + k + 1 |
Нет |
1 / 2 |
| BRGE |
k |
|
if (N Å
V= 0) then PC ¬
PC+ k + 1 |
Нет |
1 / 2 |
| BRLT |
k |
|
if (N Å
V= 1) then PC ¬
PC + k + 1 |
Нет |
1 / 2 |
| BRHS |
k |
|
if (H = 1) then PC ¬
PC + k + 1 |
Нет |
1 / 2 |
| BRHC |
k |
|
if (H = 0) then PC ¬
PC + k + 1 |
Нет |
1 / 2 |
| BRTS |
k |
|
if (T = 1) then PC ¬
PC + k + 1 |
Нет |
1 / 2 |
| BRTC |
k |
|
if (T = 0) then PC ¬
PC + k + 1 |
Нет |
1 / 2 |
| BRVS |
k |
|
if (V = 1) then PC ¬
PC + k + 1 |
Нет |
1 / 2 |
| BRVC |
k |
|
if (V = 0) then PC ¬
PC + k + 1 |
Нет |
1 / 2 |
| BRIE |
k |
|
if (I = 1) then PC ¬
PC + k + 1 |
Нет |
1 / 2 |
| BRID |
k |
|
if (I = 0) then PC ¬
PC + k + 1 |
Нет |
1 / 2 |
| Инструкции перемещения
данных |
| MOV |
Rd, Rr |
Копировать регистр |
Rd ¬
Rr |
Нет |
1 |
| LDI |
Rd, K |
Загрузить константу |
Rd ¬
K |
Нет |
1 |
| LDS |
Rd, k |
Загрузить напрямик из SRAM |
Rd ¬
(k) |
Нет |
3 |
| LD |
Rd, X |
Загрузить косвенно |
Rd ¬
(X) |
Нет |
2 |
| LD |
Rd, X+ |
Загрузить косвенно, затем
инкрементировать адрес |
Rd ¬
(X), X ¬
X + 1 |
Нет |
2 |
| LD |
Rd, -X |
Декрементировать адрес, затем
загрузить косвенно |
X ¬
X - 1, Rd ¬
(X) |
Нет |
2 |
| LD |
Rd, Y |
Загрузить косвенно |
Rd ¬
(Y) |
Нет |
2 |
| LD |
Rd, Y+ |
Загрузить косвенно, затем
инкрементировать указатель |
Rd ¬
(Y), Y ¬
Y + 1 |
Нет |
2 |
| LD |
Rd, -Y |
Декрементировать указатель,
затем загрузить косвенно |
Y ¬
Y - 1, Rd ¬
(Y) |
Нет |
2 |
| LDD |
Rd, Y+q |
Загрузить косвенно со смещением
адреса источника |
Rd ¬
(Y + q) |
Нет |
2 |
| LD |
Rd, Z |
Загрузить косвенно |
Rd ¬
(Z) |
Нет |
2 |
| LD |
Rd, Z+ |
Загрузить косвенно, затем
инкрементировать адрес |
Rd ¬
(Z), Z ¬
Z+1 |
Нет |
2 |
| LD |
Rd, -Z |
Декрементировать адрес, затем
загрузить косвенно |
Z ¬
Z - 1, Rd ¬
(Z) |
Нет |
2 |
| LDD |
Rd, Z+q |
Загрузить косвенно со смещением
адреса источника |
Rd ¬
(Z + q) |
Нет |
2 |
| STS |
k, Rr |
Сохранить напрямик в SRAM |
(k) ¬
Rr |
Нет |
3 |
| ST |
X, Rr |
Сохранить косвенно |
(X) ¬
Rr |
Нет |
2 |
| ST |
X+, Rr |
Сохранить косвенно, затем
инкрементировать адрес |
(X) ¬
Rr, X ¬
X + 1 |
Нет |
2 |
| ST |
-X, Rr |
Декрементировать адрес, затем
сохранить косвенно |
X ¬
X - 1, (X) ¬
Rr |
Нет |
2 |
| ST |
Y, Rr |
Сохранить косвенно |
(Y) ¬
Rr |
Нет |
2 |
| ST |
Y+, Rr |
Сохранить косвенно, затем
инкрементировать адрес |
(Y) ¬
Rr, Y ¬
Y + 1 |
Нет |
2 |
| ST |
-Y, Rr |
Декрементировать адрес, затем
сохранить косвенно |
Y ¬
Y - 1, (Y) ¬
Rr |
Нет |
2 |
| STD |
Y+q, Rr |
Сохранить косвенно со смещением
адреса назначения |
(Y + q) ¬
Rr |
Нет |
2 |
| ST |
Z, Rr |
Сохранить косвенно |
(Z) ¬
Rr |
Нет |
2 |
| ST |
Z+, Rr |
Сохранить косвенно, затем
инкрементировать адрес |
(Z)¬
Rr, Z ¬
Z + 1 |
Нет |
2 |
| ST |
-Z, Rr |
Декрементировать адрес, затем
сохранить косвенно |
Z ¬
Z - 1, (Z) ¬
Rr |
Нет |
2 |
| STD |
Z+q, Rr |
Сохранить косвенно со смещением
адреса назначения |
(Z + q)¬
Rr |
Нет |
2 |
| LPM |
|
Загрузить память программы |
R0 ¬
(Z) |
Нет |
3 |
| IN |
Rd, P |
Ввод из порта |
Rd ¬
P |
Нет |
1 |
| OUT |
P, Rr |
Вывод в порт |
P ¬
Rr |
Нет |
1 |
| PUSH |
Rr |
Положить регистр в стек |
STACK ¬
Rr |
Нет |
2 |
| POP |
Rd |
Достать регистр из стека |
Rd ¬
STACK |
Нет |
2 |
| Битовые инструкции |
| LSL |
Rd |
Логический сдвиг влево |
Rd(n+1) ¬
Rd(n),Rd(0) ¬
0,C ¬
Rd(7) |
Z,C,N,V,H |
1 |
| LSR |
Rd |
Логический сдвиг вправо |
Rd(n) ¬
Rd(n+1),Rd(7) ¬
0,C ¬
Rd(0) |
Z,C,N,V |
1 |
| ROL |
Rd |
Сдвигать влево через бит
переноса |
Rd(0) ¬
C,Rd(n+1) ¬
Rd(n),C ¬
Rd(7) |
Z,C,N,V,H |
1 |
| ROR |
Rd |
Сдвигать вправо через бит
переноса |
Rd(7) ¬
C,Rd(n) ¬
Rd(n+1),C ¬
Rd(0) |
Z,C,N,V |
1 |
| ASR |
Rd |
Арифметический сдвиг вправо |
Rd(n) ¬
Rd(n+1), n=0..6 |
Z,C,N,V |
1 |
| SWAP |
Rd |
Поменять местами тетрады в байте |
Rd(3..0) «
Rd(7..4) |
Нет |
1 |
| BSET |
s |
Установить флаг |
SREG(s) ¬
1 |
SREG(s) |
1 |
| BCLR |
s |
Сбросить флаг |
SREG(s) ¬
0 |
SREG(s) |
1 |
| SBI |
P, b |
Установить бит в регистре ввода-вывода |
I/O(P, b) ¬
1 |
Нет |
2 |
| CBI |
P, b |
Сбросить бит в регистре ввода-вывода |
I/O(P, b) ¬
0 |
Нет |
2 |
| BST |
Rr, b |
Сохранение бита из регистра в T |
T ¬
Rr(b) |
T |
1 |
| BLD |
Rd, b |
Загрузка бита из T в регистр |
Rd(b) ¬
T |
Нет |
1 |
| SEC |
|
Установить бит переноса |
C ¬
1 |
C |
1 |
| CLC |
|
Сбросить бит переноса |
C ¬
0 |
C |
1 |
| SEN |
|
Установить флаг Negative |
N ¬
1 |
N |
1 |
| CLN |
|
Сбросить флаг Negative |
N ¬
0 |
N |
1 |
| SEZ |
|
Установить флаг Zero |
Z ¬
1 |
Z |
1 |
| CLZ |
|
Сбросить флаг Zero |
Z ¬
0 |
Z |
1 |
| SEI |
|
Общее разрешение прерываний |
I ¬
1 |
I |
1 |
| CLI |
|
Общее запрещение прерываний |
I ¬
0 |
I |
1 |
| SES |
|
Установить флаг Signed Test |
S ¬
1 |
S |
1 |
| CLS |
|
Сбросить флаг Signed Test |
S ¬
0 |
S |
1 |
| SEV |
|
|
V ¬
1 |
V |
1 |
| CLV |
|
|
V ¬
0 |
V |
1 |
| SET |
|
Установить T в SREG |
T ¬
1 |
T |
1 |
| CLT |
|
Сбросить T в SREG |
T ¬
0 |
T |
1 |
| SEH |
|
Установить Half Carry Flag в SREG |
H ¬
1 |
H |
1 |
| CLH |
|
Сбросить Half Carry Flag в SREG |
H ¬
0 |
H |
1 |
| NOP |
|
Нет действия |
|
Нет |
1 |
| SLEEP |
|
Режим сна |
|
Нет |
1 |
| WDR |
|
Сброс таймера Watchdog |
|
Нет |
1 |