Назад к FUSE калькулятору

Сводная таблица команд ассемблера микроконтроллеров AVR

Условные обозначения
Группа команд логических операций
Группа команд арифметических операций
Группа команд операций с разрядами
Группа команд сравнения
Группа команд операций сдвига
Группа команд пересылки данных
Группа команд управления системой (NOP, SLEEP и т.д.)
Группа команд безусловной передачи управления
Группа команд передачи управления по условию

 

Условные обозначения принятые в этом справочнике
Rd Один из регистров общего назначения (РОН). Если в операции учавствуют сразу два разных РОН, то второй обозначают как Rr. В реальной программе d и r заменяются соответствующим индексом: 0 <= d <= 31, 0 <= r <= 31
K Цифровая константа. В реальной программе заменяется на любое число записанное как десятичном формате так и в любм другом.
b Номер бита. В реальной программе заменяется числом, означающим номер бита (0 <= b <= 7)
A Смещение адреса перехода. В реальной программе вместо A ставится метка для условного или безусловного перехода. Например RJMP M1 (переход к метке M1)
P Регистр ввода-вывода (РВВ). В реальной программе заменяется номером РВВ (0 <= P <= 63) или именем регистра (например PORTB, TCCR1B и т.п.).
[ ] (квадратные скобки) Применяются для обозначения косвенной адресации ячейки ОЗУ. Например, выражение [X] означает ячейку ОЗУ, адрес которой размещен в регистровой паре X. Как известно X соответствует паре регистров R26, R27; Y соответствует R28, R29; а Z соответствует R30, R31.
{ } (фигурные скобки) Применяются для обозначения косвенной адресации ячейки программной памяти (при чтении данных из программной памяти). Например, обозначение {Z} означает ячейку программной памяти, адрес которой находится в паре регистров Z (то есть в регистрах R30, R31).
В начало>>



Группа команд логических операций
Мнемоника Описание Операция Циклы Флаги
 AND Rd, Rr  «Логическое И» двух РОН  Rd Rd and Rr 1  Z,N,V
 ANDI Rd, K  «Логическое И» РОН и константы  Rd Rd and K 1  Z,N,V
 EOR Rd, Rr  «Исключающее ИЛИ» двух РОН  Rd Rd xor Rr 1  Z,N,V
 OR Rd, Rr  «Логическое ИЛИ» двух РОН  Rd Rd or Rr 1  Z,N,V
 ORI Rd, K  «Логическое ИЛИ» РОН и константы  Rd Rd or K 1  Z,N,V
 COM Rd  Перевод в обратный код  Rd 0FFH - Rd 1  Z,C,N,V
 NEG Rd  Перевод в дополнительный код  Rd 00H - Rd 1  Z,C,N,V,H
 CLR Rd  Сброс всех разрядов РОН  Rd Rd xor Rd 1  Z,N,V
 SER Rd  Установка всех разрядов РОН  Rd 0FFH 1
 TST Rd  Проверка РОН на отрицательное (нулевое) значение  Rd Rd and Rd 1  Z,N,V
В начало>>


Группа команд арифметических операций
Мнемоника Описание Операция Циклы Флаги
 ADD Rd, Rr  Сложение двух РОН  Rd Rd + Rr 1  Z,C,N,V,H
 ADC Rd, Rr  Сложение двух РОН с переносом  Rd Rd + Rr + С 1  Z,C,N,V,H
 ADIW Rd, K  Сложение регистровой пары с константой  R(d+1):Rd R(d+1):Rd + K 2  Z,C,N,V,S
 SUB Rd, Rr  Вычитание двух РОН  Rd Rd - Rr 1  Z,C,N,V,H
 SUBI Rd, K  Вычитание константы из РОН  Rd Rd - K 1  Z,C,N,V,H
 SBC Rd, Rr  Вычитание двух РОН с заемом  Rd Rd - Rr - С 1  Z,C,N,V,H
 SBCI Rd, K  Вычитание константы из РОН с заемом  Rd Rd - K - С 1  Z,C,N,V,H
 SBIW Rd, K  Вычитание константы из регистровой пары  R(d+1):Rdl R(d+1):Rd - K 2  Z,C,N,V,S
 DEC Rd  Декремент РОН  Rd Rd – 1 1  Z,N,V
 INC Rd  Инкремент РОН  Rd Rd + 1 1  Z,N,V
В начало>>


Группа команд операций с разрядами
Мнемоника Описание Операция Циклы Флаги
 CBR Rd, K  Сброс разряда(ов) РОН  Rd Rd and (0FFH – K) 1  Z,N,V
 SBR Rd, K  Установка разряда(ов) РОН  Rd Rd or K 1  Z,N,V
 CBI P, b  Сброс разряда РВВ  P.b 0 2
 SBI P, b  Установка разряда РВВ  P.b 1 2
 BCLR s  Сброс флага  SREG.s 0 1  SREG.s
 BSET s  Установка флага  SREG.s 1 1  SREG.s
 BLD Rd, b  Загрузка разряда РОН из флага T (SREG)  Rd.b T 1
 BST Rr, b  Запись разряда РОН в флаг T (SREG)  T Rd.b 1  T
 CLC  Сброс флага переноса  C 0 1  C
 SEC  Установка флага переноса  C 1 1  C
 CLN  Сброс флага отрицательного числа  N 0 1  N
 SEN  Установка флага отрицательного числа  N 1 1  N
 CLZ  Сброс флага нуля  Z 0 1  Z
 SEZ  Установка флага нуля  Z 1 1  Z
 CLI  Общий запрет прерываний  I 0 1  I
 SEI  Общее разрешение прерываний  I 1 1  I
 CLS  Сброс флага знака  S 0 1  S
 SES  Установка флага знака  S 1 1  S
 CLV  Сброс флага переполнения дополнительного кода  V 0 1  V
 SEV  Установка флага переполнения дополнительн. кода  V 1 1  V
 CLT  Сброс пользовательского флага T  T 0 1  T
 SET  Установка пользовательского флага T  T 1 1  T
 CLH  Сброс флага половинного переноса  H 0 1  H
 SEH  Установка флага половинного переноса  H 1 1  H
В начало>>


Группа команд сравнения
Мнемоника Описание Операция Циклы Флаги
 CP Rd, Rr  Сравнение двух РОН  Если (Rd – Rr) 1  Z,N,V,C,H
 CPC Rd, Rr  Сравнение РОН с учетом переноса  Если (Rd – Rr - C) 1  Z,N,V,C,H
 CPI Rd, K  Сравнение РОН с константой  Если (Rd – K) 1  Z,N,V,C,H
 CPSE Rd, Rr  Сравнение двух РОН и пропуск следующей команды, если содержимое обоих РОН равно.  Если (Rd = Rr)
 PC PC + 2 (или 3)
1/2/3
В начало>>


Группа команд операций сдвига
Мнемоника Описание Операция Циклы Флаги
 ASR Rd  Арифметический сдвиг вправо 1  Z,C,N,V
 LSL Rd  Логический сдвиг влево 1  Z,C,N,V
 LSR Rd  Логический сдвиг вправо 1  Z,C,N,V
 ROL Rd  Сдвиг влево через перенос 1  Z,C,N,V
 ROR Rd  Сдвиг вправо через перенос 1  Z,C,N,V
 SWAP Rd  Обмен местами тетрад Rd(3…0) Rd(7…4) 1  —
В начало>>


Группа команд пересылки данных
Мнемоника Описание Операция Циклы Флаги
 MOV Rd, Rr  Пересылка между РОН  Rd Rr 1
 MOVW Rd, Rr  Пересылка между парами регистров  R(d +1):Rd R(r+1):Rr 1
 LDI Rd, K  Загрузка константы в РОН  Rd K 1
 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
 LD 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
 LD Rd, Z+q  Косвенное относительное чтение  Rd [Z+q] 2
 LDS Rd, A  Непосредственное чтение из ОЗУ  Rd [A] 2
 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
 ST  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
 ST Z+q, Rr  Косвенная относительная запись  [Z+q] Rr 2
 STS A, Rr  Непосредственная запись в ОЗУ  [A] Rr 2
 LPM  Загрузка данных из памяти программ  R0 {Z} 3
 LPM Rd, Z  Загрузка данных из памяти программ  Rd {Z} 3
 LPM Rd, Z+  Загрузка данных из памяти программ и постдекремент Z  Rd {Z}, Z Z+1 3
 SPM  Запись в программную память  {Z} R1:R0 -
 IN Rd, P  Пересылка из РВВ в РОН  Rd P 1
 OUT P, Rr  Пересылка из РОН в РВВ  P Rr 1
 PUSH Rr  Сохранение байта в стеке  STACK Rr 2
 POP Rd  Извлечение байта из стека  Rd STACK 2
В начало>>


Группа команд управления системой
Мнемоника Описание Операция Циклы Флаги
 NOP  Нет операции  - 1
 SLEEP  Переход в «спящий» режим  - 3
 WDR  Сброс сторожевого таймера  - 1
 BREAK  Приостановка программы (Используется только при отладке)   -
В начало>>


Группа команд безусловной передачи управления
Мнемоника Описание Операция Циклы Флаги
 RJMP A  Относительный безусловный переход  PC PC + A + 1 2
 IJMP  Косвенный безусловный переход  PC Z 2
 RCALL A  Относительный вызов подпрограммы  PC PC + A + 1 3
 ICALL  Косвенный вызов подпрограммы  PC Z 3
 RET  Возврат из подпрограммы  PC STACK 4
 RETI  Возврат из подпрограммы обработки прерываний  PC STACK 4  I
В начало>>


Группа команд передачи управления по условию
Все команды этой группы выполняют переход (PC PC + A + 1 ) при разных условиях
Мнемоника Описание Условие Циклы Флаги
 BRBC s, A  Переход, если флаг s регистра SREG сброшен  Если SREG.s = 0 1/2  —
 BRBS s, A  Переход, если флаг s регистра SREG установлен  Если SREG.s = 1 1/2  —
 BRCS A  Переход по переносу  Если C = 1 1/2  —
 BRCC A  Переход, если нет переноса  Если C = 0 1/2  —
 BREQ A  Переход по условию «равно»  Если Z = 1 1/2  —
 BRNE A  Переход по условию «неравно»  Если Z = 0 1/2  —
 BRSH A  Переход по условию «больше или равно»  Если C = 0 1/2  —
 BRLO A  Переход по условию «меньше»  Если C = 1 1/2  —
 BRMI A  Переход по условию «отрицательное значение»  Если N = 1 1/2  —
 BRPL A  Переход по условию «положительное значение»  Если N = 0 1/2  —
 BRGE A  Переход по условию «больше или равно» (со знаком)  Если (N и V) = 0 1/2  —
 BRLT A  Переход по условию «меньше» (со знаком)  Если (N или V) = 1 1/2  —
 BRHS A  Переход по половинному переносу  Если H = 1 1/2  —
 BRHC A  Переход, если нет половинного переноса  Если H = 0 1/2  —
 BRTS A  Переход, если флаг T установлен  Если T = 1 1/2  —
 BRTC A  Переход, если флаг T сброшен  Если T = 0 1/2  —
 BRVS A  Переход по переполнению дополнительного кода  Если V = 1 1/2  —
 BRVC A  Переход, если нет переполнения дополнительного кода  Если V = 0 1/2  —
 BRID A  Переход, если прерывания запрещены  Если I = 0 1/2  —
 BRIE A  Переход, если прерывания разрешены  Если I = 1 1/2  —
В начало>>

Назад к FUSE калькулятору