Мнемоники 8-bit AVR ассемблер

Инструкции передачи данных

Мнемоника Операнды Описание Операция ПЦ
MOV Rd, Rr Копировать регистр Rd = Rr 1
MOVW Rd, Rr Копировать пару регистров Rd + 1:Rd = Rr + 1:Rr; r, d четные 1
LDI Rd, K8 Загрузить константу Rd = K 1
LDS Rd, k Прямая загрузка Rd = (k) 2*
LD Rd, X Косвенная загрузка через X Rd = (X) 2*
LD Rd, X+ Косвенная загрузка через X с пост-инкрементом Rd = (X), X = X + 1 2*
LD Rd, -X Косвенная загрузка через X с пред-декрементом X = X - 1, Rd = (X) 2*
LD Rd, Y Косвенная загрузка через Y Rd = (Y) 2*
LD Rd, Y+ Косвенная загрузка через Y с пост-инкрементом Rd = (Y), Y = Y + 1 2*
LD Rd, -Y Косвенная загрузка через Y с пред-декрементом Y = Y - 1, Rd = (Y) 2*
LDD Rd, Y + q Косвенная загрузка через Y со смещением Rd = (Y + q) 2*
LD Rd, Z Косвенная загрузка через Z Rd = (Z) 2*
LD Rd, Z+ Косвенная загрузка через Z с пост-инкрементом Rd = (Z), Z = Z + 1 2*
LD Rd, -Z Косвенная загрузка через Z с пред-декрементом Z = Z - 1, Rd = (Z) 2*
LDD Rd, Z + q Косвенная загрузка через Z со смещением Rd = (Z + q) 2*
LAC Rd, Z Косвенная загрузка и очистка Rd = (Z), (Z) = (Z) & ($FF - Rd) 2
LAT Rd, Z Косвенная загрузка и переключение Rd = (Z), (Z) = (Z) ⊕ Rd 2
LAS Rd, Z Косвенная загрузка и установка Rd = (Z), (Z) = Rd v (Z) 2
XCH Rd, Z Обмен Rd = (Z), (Z) = Rd 2
STS k, Rr Прямое сохранение (k) = Rr 2*
ST X, Rr Косвенное сохранение через X (X) = Rr 2*
ST X+, Rr Косвенное сохранение через X с пост-инкрементом (X) = Rr, X = X + 1 2*
ST -X, Rr Косвенное сохранение через X с пред-декрементом X = X - 1, (X) = Rr 2*
ST Y, Rr Косвенное сохранение через Y (Y) = Rr 2*
ST Y+, Rr Косвенное сохранение через Y с пост-инкрементом (Y) = Rr, Y = Y + 1 2
ST -Y, Rr Косвенное сохранение через Y с пред-декрементом Y = Y - 1, (Y) = Rr 2
STD Y + q, Rr Косвенное сохранение через Y со смещением (Y + q) = Rr 2
ST Z, Rr Косвенное сохранение через Z (Z) = Rr 2
ST Z+, Rr Косвенное сохранение через Z с пост-инкрементом (Z) = Rr, Z = Z + 1 2
ST -Z, Rr Косвенное сохранение через Z с пред-декрементом Z = Z - 1, (Z) = Rr 2
STD Z + q, Rr Косвенное сохранение через Z со смещением (Z + q) = Rr 2
LPM Нет Загрузка из программной памяти R0 = (Z) 3
LPM Rd, Z Загрузка из программной памяти в регистр Rd = (Z) 3
LPM Rd, Z+ Загрузка из программной памяти в регистр с пост-инкрементом Rd = (Z), Z = Z + 1 3
ELPM Нет Расширенная загрузка из программной памяти R0 = (RAMPZ:Z) 3
ELPM Rd, Z Расширенная загрузка из программной памяти в регистр Rd = (RAMPZ:Z) 3
ELPM Rd, Z+ Расширенная загрузка из программной памяти в регистр с пост-инкрементом Rd = (RAMPZ:Z), Z = Z + 1 3
SPM Нет Сохранение в программной памяти (Z) = R1:R0 -
ESPM Нет Расширенное сохранение в программной памяти (RAMPZ: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
Обозначения:
*Инструкция поддерживается не на всех устройствах
*Инструкции добавлены в ассемблер, пока что не присутствуют в процессорах. В будущем, предназначены для взаимодействия с периферийным ядром USB (информация требует проверки)
*Все инструкции в данном разделе не используют и не изменяют флагов в системном регистре SREG

Rd : Регистр назначения

Rr : Регистр источник

X, Y, Z : Специальные пары регистров общего назначения: R27:R26, R29:R28, R31:R30 соответственно

Kx : Константа или константное выражение, размером x-бит

P : Константа или константное выражение, размером (5-6)-бит

q : Константа или константное выражение, размером 6-бит

k : Константа или константное выражение, размер зависит от инструкции

PC : Программный счетчик

EIND : Расширенный косвенный регистр (Extended Indirect Register)

RAMPZ : Регистр, дополняющий регистр Z в устройствах с памятью более 64Кб

STACK : Стек, оперативная память