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). |
Мнемоника |
Описание |
Операция |
Циклы |
Флаги |
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 |
Мнемоника |
Описание |
Операция |
Циклы |
Флаги |
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 |
— |
Мнемоника |
Описание |
Условие |
Циклы |
Флаги |
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 |
— |