Система команд AVR

№ п/п Шаблон Действие Пример
R -> R Копирование одного рабочего регистра в другой R0 -> R1
# -> R Загрузка константы # в рабочий регистр 24 -> r16
[X]-> R Копирование из SRAM в рабочий регистр косвенно по X [X] -> R2
[X++]->R Копирование из SRAM в рабочий регистр косвенно по X с пост-инкрементом [X++]-> R3
[--X]->R Копирование из SRAM в рабочий регистр косвенно по X с пре-декрементом [--X]-> R4
[Y] ->R Копирование из SRAM в рабочий регистр косвенно по Y [Y] -> R5
[Y++]->R Копирование из SRAM в рабочий регистр косвенно по Y с пост-инкрементом [Y++]-> R6
[--Y]- R Копирование из SRAM в рабочий регистр косвенно по Y с пре-декрементом [--Y]-> R7
[Y+#]->R Копирование из SRAM в рабочий регистр косвенно по Y со смещением # [Y+2]-> r8
[Z] ->R Копирование из SRAM в рабочий регистр косвенно по Z [Z] -> R9
[Z++]->R Копирование из SRAM в регистр косвенно по Z с пост-инкрементом [Z++]->R10
[--Z]– R Копирование из SRAM в рабочий регистр косвенно по Z с пре-декрементом [--Z]->R11
[Z+#]->R Копирование из SRAM в рабочий регистр косвенно по Z со смещением # [Z+1]->R12
[#] ->R Копирование из SRAM непосредственно из адреса # в рабочий регистр [$60]->r14
R-> [X] Копирование рабочего регистра в SRAM косвенно по X R15 -> [X]
R->[X++] Копирование рабочего регистра в SRAM косвенно по X с пост-инкрементом R16->[X++]
R->[--X] Копирование рабочего регистра в SRAM косвенно по X с пре-декрементом R17->[--X]
R-> [Y] Копирование рабочего регистра в SRAM косвенно по Y R18 -> [Y]
R->[Y++] Копирование рабочего регистра в SRAM косвенно по Y с пост-инкрементом R19->[Y++]
R->[--Y] Копирование рабочего регистра в SRAM косвенно по Y с пре-декрементом R20->[--Y]
R->[Y+#] Копирование рабочего регистра в SRAM косвенно по Y со смеще- нием # R21->[Y+2]
R-> [Z] Копирование рабочего регистра в SRAM косвенно по Z R22 -> [Z]
R->[Z++] Копирование рабочего регистра в SRAM косвенно по Z с пост-инкрементом R23->[Z++]
R->[--Z] Копирование рабочего регистра в SRAM косвенно по Z с пре-декрементом R24->[--Z]
R->[Z+#] Копирование рабочего регистра в SRAM косвенно по Z со смеще- нием # R25->[Z+3]
R-> [#] Копирование регистра в SRAM непосредственно по адресу # R26-> [$200]
LPM LPM[Z] Загрузка из памяти программы по адресу Z в r0  
LPM-> R LPM[Z]->R Загрузка из памяти программы по адресу Z в рабочий регистр  
LPM[Z++] -> R Загрузка из памяти программы по адресу Z в рабочий регистр и пост-инкремент Z LPM[Z++]->r5
SPM Запись в память программы  
P -> R Копирование I/O регистра в рабочий регистр P$19 -> WH
R -> P Копирование рабочего регистра в I/O регистр XL-> PortB

 

R -> Копирование рабочего регистра в стек Ro ->
->R Копирование из стека в рабочий регистр ->r1
NOP Нет операции  
R + R Прибавление к левому рабочему регистру правого r0 + r1
R + R + Прибавление к левому рабочему регистру правого с переносом R0 + R5 +
RW + # Увеличение двойного рабочего регистра (W, X, Y, Z) на # W + 32
R – R Вычитание из левого рабочего регистра правого r4 – r5
R - # Вычитание из рабочего регистра константы # XL – 2
R + # Прибавление к рабочему регистру константы # R17 + 12
R – R - Вычитание из левого рабочего регистра правого с переносом r5 – r6 -
R - # - Вычитание из рабочего регистра константы # с переносом ZL - $70 -
RW - # Вычитание из двойного рабочего регистра (W, X, Y, Z) константы # X - $2E
R & R Побитная логическая операция И двух рабочих регистров. r7 & r8
R & # Побитная логическая операция И рабочего регистра и константы # r17 & #b00111101
R &| # Побитная логическая операция И рабочего регистра и инверсии константы # r18 &| #b00010011
R ! R Побитная логическая операция ИЛИ двух рабочих регистров. R9 ! r10
R ! # Побитная логическая операция ИЛИ рабочего регистра и константы # R18! #o147
R ^ R Побитная логическая операция ИСКЛЮЧАЮЩЕЕ ИЛИ двух рабочих регистров. R11 ^ r12
|R Побитная инверсия рабочего регистра -r8-
-R Арифметическая инверсия рабочего регистра -RB
R++ Увеличение рабочего регистра на 1 Count++
R-- Уменьшение рабочего регистра на 1 Idx--
R? Тест рабочего регистра (R & R) R16?
^R Очистка рабочего регистра (R ^ R) R8
R * R Умножение двух рабочих регистров R6 * R17
±R * ±R Умножение двух рабочих регистров с учетом знака ±r16 * ±r20
±R * R R * ±R Умножение двух рабочих регистров с учетом знака одного из регистров ±r18 * r22 r22 * ±r18
<<(R*R) Дробное умножение двух рабочих регистров <<(R6*R17)
<<(±R*±R) Дробное умножение двух рабочих регистров с учетом знака <<(±r16* ±r20)
<<(±R * R) <<(R * ±R) Дробное умножение двух рабочих регистров с учетом знака одного из регистров <<(±r18*r22) <<(r22*±r18)
1 ->P.# Запись 1 в бит # I/O регистра 1 -> DDB2
0-> P.# Запись 0 в бит # I/O регистра 0->PortD.7
<<R Логический сдвиг влево рабочего регистра <<r18
R>> Логический сдвиг вправо рабочего регистра R19>>
<<R< Логический сдвиг влево рабочего регистра с переносом <<r20<
>R>> Логический сдвиг вправо рабочего регистра с переносом >r21>>
±R>> Арифметический сдвиг вправо рабочего регистра ±r22>>
>>R<< Обмен тетрад рабочего регистра >>r23<<
R.#-> Копирование бита # рабочего регистра в T (SREG) RA.6->
->R.# Копирование T (SREG) в бит # рабочего регистра ->r0.4
#-> R.# Запись # (0 or 1) в # бит рабочего регистра 0 -> r18.4 1 -> r20.0
R->> R Копирование двойного рабочего регистра в двойной рабочий регистр r0 ->> XL
1 -> C Запись 1 в бит C  
0 -> C Запись 0 в бит C  
1 -> N Запись 1 в бит N  
0 -> N Запись 0 в бит N  
1 -> Z Запись 1 в бит Z  
0 -> Z Запись 0 в бит Z  
1 -> I Запись 1 в бит I  
0 -> I Запись 0 в бит I  
1 -> S Запись 1 в бит S  
0 -> S Запись 0 в бит S  
1 -> V Запись 1 в бит V  
0 -> V Запись 0 в бит V  
1-> T ; 1-> Запись 1 в бит T  
0-> T ; 0-> Запись 0 в бит T  
1 -> H Запись 1 в бит H  
0 -> H Запись 0 в бит H  
SLEEP Приостановка работы кристалла  
WDR Сброс сторожевого таймера  
JMP # Дальний безусловный переход JMP LabelName
#/ Дальний вызов подпрограммы LabelName/
JMP Косвенный безусловный переход по Z  
# Относительный вызов подпрограммы LabelName
CALL Косвенный вызов подпрограммы по Z CALL
RET Возврат из подпрограммы RET
RETI Возврат из подпрограммы и запись 1 в бит I RETI
R = R Сравнение двух рабочих регистров R2 = R5
R = R = Сравнение двух рабочих регистров с переносом R6 = R5 =
R = # Сравнение рабочего регистра с константой # YL = 47