Rambler's Top100

Система команд AVR-контроллеров


Арифметические операции
Мнемоника Описание Операция Изменяемые флаги Время исполнения (циклов)
ADC Rn,Rk Сложение c переносом Rn <- Rn + Rk + C Z, C, N, V, S, H 1
ADD Rn,Rk Сложение без переноса Rn <- Rn + Rk Z, C, N, V, S, H 1
ADIW Rn,K Сложение с константой (Rn+1):Rn <- (Rn+1):Rn + K Z, C, N, V, S 2
SUB Rn,Rk Вычитание без заема Rn <- Rn - Rk Z, C, N, V, S, H 1
SUBI Rn,K Вычитание константы без заема Rn <- Rn - K Z, C, N, V, S, H 1
SBCI Rn,K Вычитание константы с заемом Rn <- Rn - K - C Z, C, N, V, S, H 1
SBC Rn,Rk Вычитание c заемом Rn <- Rn - Rk - C Z, C, N, V, S, H 1
SBIW Rn,K Вычитание константы Rn+1):Rn <- (Rn+1):Rn - K Z, C, N, V, S 2
COM Rn Дополнение до 1 Rn <- 0FFh - Rn Z, C, N, V, S 1
NEG Rn Дополнение до 2 Rn <- 0 - Rn Z, C, N, V, S, H 1
INC Rn Увеличение на 1 Rn <- Rn + 1 Z, N, V, S 1
DEC Rn Уменьшение на 1 Rn <- Rn - 1 Z, N, V, S 1
CP Rn,Rk Сравнение регистров Rn - Rk Z, C, N, V, S, H 1
CPI Rn,K Сравнение регистра с константой Rn - K Z, C, N, V, S, H 1
CPC Rn,Rk Сравнение регистров с заемом Rn - Rk - C Z, C, N, V, S, H 1

Логические операции
Мнемоника Описание Операция Изменяемые флаги Время исполнения (циклов)
AND Rn,Rk Логическое "И" Rn <- Rn & Rk Z, N, V, S 1
ANDI Rn,K Логическое "И" с константой Rn <- Rn & K Z, N, V, S 1
OR Rn,Rk Логическое "ИЛИ" Rn <- Rn | Rk Z, N, V, S 1
ORI Rn,K Логическое "ИЛИ" с константой Rn <- Rn | K Z, N, V, S 1
EOR Rn,Rk "Исключающее ИЛИ" Rn <- Rn ^ Rk Z, N, V, S 1
CBR Rn,K Очистка битов Rn <- Rn & (0FFh-K) Z, N, V, S 1
SBR Rn,K Установка битов Rn <- Rn | K Z, N, V, S 1
CLR Rn Очистка регистра Rn <- Rn ^ Rn Z, N, V, S 1
SER Rn Установка регистра Rn <- 0FFh - 1
TST Rn Проверка на 0 и минус Rn <- Rn & Rn Z, N, V, S 1

Операции перехода
Мнемоника Описание Операция Изменяемые флаги Время исполнения (циклов)
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

Главная

Микроконтроллеры



Рейтинг@Mail.ru bigmir)net TOP 100 Rambler's Top100 AllBest.Ru Яндекс цитирования