| Операции перехода |
| Мнемоника |
Описание |
Операция |
Изменяемые флаги |
Время исполнения (циклов) |
| JMP K
|
Абсолютный переход |
PC <- K |
- |
3 |
| CALL K
|
Абсолютный вызов |
PC <- K |
- |
4 (5) |
| RJMP K
|
Относительный переход |
PC <- PC + K + 1 |
- |
2 |
| RCALL K |
Относительный вызов |
PC <- PC + K + 1 |
- |
2 |
| IJMP |
Косвенный переход |
PC(15:0) <- Z, PC(21:16) <- 0 |
- |
2 |
| ICALL |
Косвенный вызов |
PC(15:0) <- Z, PC(21:16) <- 0 |
- |
2 |
| EIJMP |
Косвенный переход |
PC(15:0) <- Z, PC(21:16) <- EIND |
- |
2 |
| EICALL |
Косвенный вызов |
PC(15:0) <- Z, PC(21:16) <- EIND |
- |
2 |
| RET |
Выход из процедуры |
PC <- STACK |
- |
4 (5) |
| RETI |
Выход из процедуры прерывания |
PC <- STACK |
I |
4 (5) |
| CPSE Rn,Rk |
Сравнить и пропустить, если равно |
if (Rn = Rk) PC <- PC + 2 or 3 |
- |
1 / 2 / 3 |
| SBRC Rn,K |
Пропустить, если Rn(K) = 0 |
if (Rn(K) = 0) PC <- PC + 2 or 3 |
- |
1 / 2 / 3 |
| SBRS Rn,K |
Пропустить, если Rn(K) = 1 |
if (Rn(K) = 1) PC <- PC + 2 or 3 |
- |
1 / 2 / 3 |
| SBIC IR,K |
Пропустить, если IR(K) = 0 |
if (IR(K) = 0) PC <- PC + 2 or 3 |
- |
1 / 2 / 3 |
| SBIS IR,K |
Пропустить, если IR(K) = 1 |
if (IR(K) = 1) PC <- PC + 2 or 3 |
- |
1 / 2 / 3 |
| BRBS b,K |
Перейти, если SREG(b) = 1 |
if (SREG(b) = 1) PC <- PC + K + 1 |
- |
1 / 2 |
| BRBC b,K |
Перейти, если SREG(b) = 0 |
if (SREG(b) = 0) PC <- PC + K + 1 |
- |
1 / 2 |
| BREQ K |
Перейти, если Z = 1 |
if (Z = 1) PC <- PC + K + 1 |
- |
1 / 2 |
| BRNE K
|
Перейти, если Z = 0 |
if (Z = 0) PC <- PC + K + 1 |
- |
1 / 2 |
| BRCC K |
Перейти, если C = 0 |
if (C = 0) PC <- PC + K + 1 |
- |
1 / 2 |
| BRCS K |
Перейти, если C = 1 |
if (C = 1) PC <- PC + K + 1 |
- |
1 / 2 |
| BRHC K |
Перейти, если H = 0 |
if (H = 0) PC <- PC + K + 1 |
- |
1 / 2 |
| BRHS K |
Перейти, если H = 1 |
if (H = 1) PC <- PC + K + 1 |
- |
1 / 2 |
| BRSH K |
Перейти, если больше или равно |
if (C = 0) PC <- PC + K + 1 |
- |
1 / 2 |
| BRLO K |
Перейти, если меньше |
if (C = 1) PC <- PC + K + 1 |
- |
1 / 2 |
| BRPL K |
Перейти, если больше или равно 0 |
if (N = 0) PC <- PC + K + 1 |
- |
1 / 2 |
| BRMI K |
Перейти, если меньше 0 |
if (N = 1) PC <- PC + K + 1 |
- |
1 / 2 |
| BRGE K |
Перейти, если больше или равно (со знаком) |
if (N + V = 0) PC <- PC + K + 1 |
- |
1 / 2 |
| BRLT K |
Перейти, если меньше (со знаком) |
if (N + V = 1) PC <- PC + K + 1 |
- |
1 / 2 |
| BRTC K |
Перейти, если T = 0 |
if (T = 0) PC <- PC + K + 1 |
- |
1 / 2 |
| BRTS K |
Перейти, если T = 1 |
if (T = 1) PC <- PC + K + 1 |
- |
1 / 2 |
| BRVC K |
Перейти, если V = 0 |
if (V = 0) PC <- PC + K + 1 |
- |
1 / 2 |
| BRVS K |
Перейти, если V = 1 |
if (V = 1) PC <- PC + K + 1 |
- |
1 / 2 |
| BRIE K |
Перейти, если I = 0 |
if (I = 0) PC <- PC + K + 1 |
- |
1 / 2 |
| BRID K |
Перейти, если I = 1 |
if (I = 1) PC <- PC + K + 1 |
- |
1 / 2 |
|
Операции перемещения данных
|
| Мнемоника |
Описание |
Операция |
Изменяемые флаги |
Время исполнения (циклов) |
| MOV Rn,Rk |
Копировать Rk в Rn |
Rn <- Rk |
- |
1 |
| MOVW Rn,Rk |
Копировать регистровую пару |
Rn+1:Rn <- Rk+1:Rk |
- |
1 |
| LD Rn, Ri |
Загрузить из памяти данных, используя индексный регистр |
Rn <- (Ri) |
- |
2 |
| LD Rn, Ri+ |
Rn <- (Ri), Ri <- Ri + 1 |
- |
2 |
| LD Rn, -Ri |
Ri <- Ri - 1, Rn <- (Ri) |
- |
2 |
| LDD Rn, Ri + q |
Rn <- (Ri + q) |
- |
2 |
| LDI Rn,K |
Загрузить константу в регистр |
Rn <- K |
- |
1 |
| LDS Rn,K |
Загрузить в регистр из памяти данных |
Rn <- (K) |
- |
2 |
| LPM |
Загрузить из памяти программ |
R0 <- (Z) |
- |
3 |
| LPM Rn, Z |
Rn <- (Z) |
- |
3 |
| LPM Rn, Z+ |
Rn <- (Z), Z <- Z + 1 |
- |
3 |
| ELPM |
R0 <- (RAMPZ:Z) |
- |
3 |
| ELPM Rn, Z |
Rn <- (RAMPZ:Z) |
- |
3 |
| ELPM Rn, Z+ |
Rn <- (RAMPZ:Z), Z <- Z + 1 |
- |
3 |
| SPM |
Загрузить в память программ |
(Z) <- R1:R0 |
- |
3 |
| STS K,Rn |
Загрузить в память данных |
(K) <- Rn |
- |
2 |
| ST Ri, Rn |
Загрузить в память данных, используя индексный регистр |
(Ri) <- Rn |
- |
2 |
| ST Ri+, Rn |
(Ri) <- Rn, Ri <- Ri + 1 |
- |
2 |
| ST -Ri, Rn |
Ri <- Ri - 1, (Ri) <- Rn |
- |
2 |
| STD Ri + q, Rn |
(Ri + q) <- Rn |
- |
2 |
| IN Rn,I |
Прочитать I/O-регистр I в Rn |
Rn <- I |
- |
1 |
| OUT I,Rn |
Записать Rn в I/O-регистр I |
I <- Rk |
- |
1 |
| PUSH Rn |
Сохранить Rn в стеке |
STACK <- Rn |
- |
2 |
| POP Rn |
Восстановить Rn из стека |
Rn <- STACK |
- |
2 |
| SWAP Rn |
Обмен тетрад в регистре |
Rn(0...3) <- Rn(4...7), Rn(4...7) <- Rn(0...3) |
- |
1 |
| Битовые операции |
| Мнемоника |
Описание |
Операция |
Изменяемые флаги |
Время исполнения (циклов) |
| LSL Rn |
Логический сдвиг влево |
R(n+1) <- R(n), R(0) <- 0, C <- R(7) |
S, Z, C, N, V, H |
1 |
| LSR Rn |
Логический сдвиг вправо |
R(n) <- R(n+1), R(7) <- 0, C <- R(0) |
S, Z, C, N, V |
1 |
| ROL Rn |
Сдвиг влево через перенос |
R(n+1) <- R(n), R(0) <- C, C <- R(7) |
S, Z, C, N, V, H |
1 |
| ROR Rn |
Сдвиг вправо через перенос |
R(n) <- R(n+1), R(7) <- C, C <- R(0) |
S, Z, C, N, V |
1 |
| ASR Rn |
Арифметический сдвиг вправо |
R(n) <- R(n+1), R(7) <- R(7) |
Z, C, N, V |
1 |
| BSET b |
Установить бит в SREG |
SREG(b) <- 1 |
SREG(b) |
1 |
| BCLR b |
Сбросить бит в SREG |
SREG(b) <- 0 |
SREG(b) |
1 |
| CLC |
Сбросить флаг переноса |
C <- 0 |
C |
1 |
| SEC |
Установить флаг переноса |
C <- 1 |
C |
1 |
| CLN |
Сбросить флаг знака |
N <- 0 |
N |
1 |
| SEN |
Установить флаг знака |
N <- 1 |
N |
1 |
| CLZ |
Сбросить флаг нуля |
Z <- 0 |
Z |
1 |
| SEZ |
Установить флаг нуля |
Z <- 1 |
Z |
1 |
| CLI |
Сбросить флаг разрешения прерываний |
I <- 0 |
I |
1 |
| SEI |
Установить флаг разрешения прерываний |
I <- 1 |
I |
1 |
| CLS |
Сбросить флаг знака |
S <- 0 |
S |
1 |
| SES |
Установить флаг знака |
S <- 1 |
S |
1 |
| CLV |
Сбросить флаг переполнения |
V <- 0 |
V |
1 |
| SEV |
Установить флаг переполнения |
V <- 1 |
V |
1 |
| CLT |
Сбросить флаг T |
T <- 0 |
T |
1 |
| SET |
Установить флаг T |
T <- 1 |
T |
1 |
| CLH |
Сбросить флаг половинного переноса |
H <- 0 |
H |
1 |
| SEH |
Установить флаг половинного переноса |
H <- 1 |
H |
1 |
| CBI I,b |
Сбросить бит в I/O-регистре |
I(b) <- 0 |
- |
1 |
| SBI I,b |
Установить бит в I/O-регистре |
I(b) <- 1 |
- |
1 |
| BST Rn,b |
Загрузить флаг T битом из регистра |
I(b) <- 0 |
- |
1 |
| BLD Rn,b |
Загрузить бит в регистре из флага T |
I(b) <- 1 |
- |
1 |