Группа команд арифметических операций
Мнемоника
Описание
Операция
Циклы
Флаги
ADD Rd. Rr
Сложение двух РОН
Rd = Rd + Rr
1
Z,C,N,V,H
ADC Rd. Rr
Сложение двух РОН с переносом
Rd = Rd + Rr + C
ADIW Rd, K
Сложение регистровой пары с константой
Rdh:RdI = Rdh:Rdl + К
2
Z,C,N,V,S
SUB Rd, Rr
Вычитание двух РОН
Rd = Rd-Rr
SUBI Rd, K
Вычитание константы из РОН
Rd = Rd-K
SBC Rd, Rr
Вычитание двух РОН с заемом
Rd=Rd-Rr-C
SBCI Rd, K
Вычитание константы из РОН с заемом
Rd = Rd-K-C
SBIW Rd, K
Вычитание константы из регистровой пары
Rdh:Rdl = Rdh:Rdt-K
DEC Rd
Декремент РОН
Rd = Rd-l
Z,N,V
INC Rd
Инкремент РОН
Rd = Rd + 1
ASR Rd
Арифметический сдвиг вправо
Rd(n) = Rd(n+ 1), n = 0...6
Z,C,N,V
LSL Rd
Логический сдвиг влево
Rd(n+l) = Rd(n), Rd(0) = 0
LSR Rd
Логический сдвиг вправо
Rd(n) = Rd(n+l),Rd(7) = 0
ROL Rd
Сдвиг влево через перенос
Rd(0) = C, Rd(n+l) = Rd(n), С = Rd(7)
ROR Rd
Сдвиг вправо через перенос
Rd(7) = C, Rd(n) = Rd(n+l), С = Rd(0)
MUL Rd, Rr
Умножение беззнаковых чисел
Rl:RO = RdXRr
Z,C
MULS Rd, Rr
Умножение чисел со знаком
MULSU
Rd, Rr
Умножение беззнакового чис-ла на число со знаком
FMDL Rd, Rr
Умножение дробных беззнаковых чисел
Rl:RO = (RdXRr)«l
FMULS
Умножение дробных чисел со знаком
FMULSU
Умножение дробного беззнакового числа и дробного числа со знаком
Rl:RO = (RdXRr)«1
Группа команд операций с битами
CBR Rd, K
Сброс разряда(ов) РОН
Rd = Rd»($FF-K)
SBR Rd, K
Установка разрада(ов) РОН
Rd=RdvK
Z, N,V
CBI A, b
Сброс разряда РВВ
A.b = 0
SBI A, b
Установка разряда РВВ
A.b=l
BCLR s
Зброс флага
SREG.S - 0
SREG.S
BSET s
Установка флага
SREG.S=l
BLD Rd, b
Загрузка разряда РОН из флага Т (SREG)
Rd.b = T
BST Rr, b
Запись разряда РОН в флаг Т (SREG)
T = Rr.b
T
CLC
Сброс флага переноса
С = 0
С
SEC
Установка флага переноса
C = l
CLN
Сброс флага отр. числа
N = 0
N
SEN
Установка флага отр. числа
N = 1
CLZ
Сброс флага нуля
Z = 0
Z
SEZ
Установка флага нуля
Z = l
CLI
Общее запрещение прерываний
1 = 0
I
SEI
Общее разрешение прерываний
1 = 1
CLS
Сброс флага знака
S = 0
S
SES
Установка флага знака
S = l
CLV
Сброс флага переполнения доп. кода
V = 0
V
SEV
Установка флага переполнения доп. кода
V = l
CLT
Сброс флага Т
T = 0
SET
Установка флага Т
T = l
CLH
Сброс флага половинного переноса
H = 0
H
SEH
Установка флага половинного переноса
H = l
Группа команд пересылки данных
MOV Rd, Rr
Пересылка между РОН
Rd = Rr
MOVW
Пересылка двухбайтовых значений
Rd + l:Rd = Rr+l:Rr
LDI Rd, K
Загрузка константы в РОН
Rd = K
LD Rd, X
Косвенное чтение
Rd=[X]
LD Rd, X+
Косвенное чтение с постинкрементом
Rd = [X],X = X+I
LD Rd,-X
с преддекрементом
X = X-l,Rd = [X]
LD Rd, Y
Rd=[Y]
LD Rd, Y+
Rd = [Y],Y = Y+l
LD Rd,-Y
Косвенное чтение с преддекрементом
Y=Y-l,Rd=[Y]
LDD Rd, Y+q
Косвенное относительное чтение
Rd = [Y+q]
LD Rd,Z
Rd = [Z]
LD Rd, Z+
Rd = [Z],Z = Z+l
LD Rd,-Z
Z = Z - 1, Rd = [Z]
LDD Rd, Z+q
Rd = [Z + q]
LDS Rd, k
Непосредственное чтение из ОЗУ
Rd = [k]
ST X, Rr
Косвенная запись
[X] = Rr
ST X+, Rr
Косвенная запись с постинкрементом
[X] = Rr, X=X+1
ST -X, Rr
Косвенная запись с преддекрементом
X = X-l,[X] = Rr
ST Y, Rr
[Y] = Rr
ST Y+, Rr
[Y] = Rr, Y=Y+1
ST -Y, Rr
Y=Y-l,[X] = Rr
STD Y+ q, Rr
Косвенная относительная запись
[Y+q] = Rr
ST Z, Rr
[Z] = Rr
ST Z+, Rr
[Z] = Rr,Z = Z+l
ST -Z ,Rr
Z = Z-l,[Z] = Rr
STD Z+ q, Rr
[Z + q] = Rr
STS k, Rr
Непосредственная запись в ОЗУ
[k] = Rr
LPM
Загрузка данных из памяти программ
R0 = {Z}
3
LPM Rd, Z
Rb={Z}
LPM Rd, Z+
Загрузка данных из памяти программ с постинкрементом
Rb = {Z},Z = Z+1
ELPM
Расширенная загрузка данных из памяти программ
RO = {RAMPZ:Z}
ELPM Rd, Z
Rb={RAMPZ:Z}
ELPM Rd, Z+
Расширенная загрузка данных из памяти программ с постинкрементом
Rb = {RAMPZ:Z}, RAMPZ:Z = RAMPZ:Z+1
SPM
Запись в память программ
{Z} = RI:R0
IN Rd, A
Пересьика из РВВ в РОН
Rd = A
OUT A, Rr
Пересылка из РОН в РВВ
A=Rr
PUSH Rr
Сохранение байта в стеке
STACK - Rr
POP Rd
Извлечение байта из стека
Rd = STACK
Группа команд передачи управления
RJMP k
Относительный безусловный переход
РС =РС + к+1
IJMP
Косвенный безусловный переход
РС =Z
JMP к
Абсолютный переход
РС = к
RCALL к
Этносительный вызов подпрограммы
PC = PC + к + 1
ICALL
Сосвенный вызов подпрограммы
PC = Z
CALL к
Абсолютный вызов подпрограммы
4
RET
Возврат из подпрограммы
PC = STACK
RETI
Возврат из подпрограммы обработки прерывания
СР Rd, Rr
Сравнение РОН
Rd-Rr
Z,N,V,C,H
СРС Rd, Rr
Сравнение РОН с учетом переноса
Rd-Rr-C
CPI Rd, K
Сравнение РОН с константой
Rd-K
CPSE
Сравнение и пропуск следующей команды при равенстве
Если Rd = Rr, то PC = PC + 2 (3)
1/2/3
SBRC Rr, b
Пропуск след. команды, если разряд РОН сброшен
Если Rr.b = 0, то PC = PC + 2 (3)
SBRS Rr, b
Пропуск след. команды, если разряд РОН установлен
Если Rr.b=l, то PC = PC + 2 (3)
SBIC A, b
Пропуск след. команды, если разряд РВВ сброшен
Если A.b = 0, то PC = PC + 2 (3)
SBIS A ,b
Пропуск след. команды, если разряд РВВ установлен
Если А.Ь= 1, то PC = PC + 2 (3)
BRBC s, k
Переход, если флаг s регистра SREG сброшен
Если SREG.s = 0, то РС = РС + к+1
1/2
BRBS s, k
Переход, если флаг s регистра SREG установлен
Если SREG.s =1, то РС = РС + к+1
BRCS к
Переход по переносу
Если С =1, то РС = РС + к+1
BRCC к
Переход, если нет переноса
Если С = 0, то РС = РС + к+1
BREQ к
Переход по «равно»
Если Z = l, то РС = РС + к+1
BRNE к
Переход по «не равно»
Если Z = 0, то РС = РС + к+1
BRSH к
Переход по «выше или равно»
BRLO к
Переход по «меньше»
BRMI .
Переход по «отрицательное значение»
Если N = 1, то РС = РС + к +
BRPL
Переход по «положительное значение»
Если N = 0, то РС = РС + к+1
BRGE
Переход по «больше или равно» (числа со знаком)
Если (N®V) = 0, то PC = PC + к + 1
BRLT
Переход по «меньше нуля» (числа со знаком)
Если (N®V)=l, то PC = PC + к + 1
BRHS
Переход по половинному переносу
Если Н = 1, то PC = PC + к + 1
BRHC
Переход, если нет половинного переноса
Если Н = 0, то PC = PC + к + 1
BRTS
Переход, если флаг Т установлен
Если Т= 1, то РС = РС + к+1
BRTC
Переход, если флаг Т сброшен
ЕслиТ = 0, тоРС = РС + к+1
BRVS
Переход по переполнению доп. кода
ЕслиУ=1, тоРС = РС + к+1
BRVC
Переход, если нет переполнения доп. кода
ЕслиУ = 0, тоРС = РС + к+1
BRID
Переход, если прерывания запрещены
Если I = 0, тоРС = РС + к+1
BRIE
Переход, если прерывания разрешены
Если1 = 1, тоРС = РС + к+1
Группа команд управления системой
NOP
Нет операции
пустая команда
SLEEP
Переход в «спящий» режим
перевод микроконтроллера в режим пониженного энер-гопотребления
WDR
Сброс сторожевого таймера
сброс сторожевого таймера
Обозначение
Регистр состояния
SREG
Регистр состояния микроконтроллера
C
Флаг переноса
Флаг нуля
Флаг отрицательного значения
Флаг переполнения доп. кода
Флаг знака (S=N®V)
Флаг половинного переноса
Флаг пользователя
Флаг общего разрешения прерываний
Регистры и операнды
Rd
Регистр приемник
Rr
Регистр источник
K
Константа
k
Адрес-коннстанта
b
Номер разряда РОН
s
Номер разряда регистра состояния
X,Y,Z
Регистры указатели
I\O
Регистр ввода-вывода
A
Адрес в пространства ввода-вывода
q
Смещение при относительной косвенной адресации
[ХХ]
Содержимое ячейки памяти данных по адресу ХХ
{ХХ}
Содержимое ячейки памяти программ по адресу ХХ
*
Логическое И
v
Логическое ИЛИ
®
Исключающее ИЛИ
Система
РС
Счетчик команд
STACK
Текущий уровень стека
SP
Указатель стека
< >
Команда воздействует на флаг
0
Флаг сбрасывается командой в «0»
Флаг устанавливается командой в «1»
Команда не влияет
Обозначение, используемые при описании команд
Страницы: 1, 2, 3, 4, 5, 6, 7