Таблица 3.1. Арифметические и логические команды
Мнемо-ника
| Операнды
| Описание
| Операция
| Флаги
| Кол-во циклов
|
ADD
| Rd,Rr
0≤d≤31
0≤r≤31
| Сложить без переноса
| Rd Rd + Rr
| Z, C, N, V, H
|
|
ADC
| Rd.Rr
0≤d≤31
0≤r≤31
| Сложить с переносом
| Rd Rd + Rr+ С
| Z, C, N, V, H
|
|
ADIW
| Rd,K
dE{24,26,28,30}
0≤K≤63
| Сложить непосредственное значение со словом
| Rdh:RdlRdh:Rdl+ К
| Z, C, N, V
|
|
SUB
| Rd,Rr
0≤d≤31
0≤r≤31
| Вычесть без заема
| Rd Rd – Rr
| Z, C, N, V, H
|
|
SUBI
| Rd, К
16≤d≤31 0≤K≤255
| Вычесть непосредственное значение
| Rd Rd – К
| Z, C, N, V, H
|
|
SBC
| Rd, Rr
0≤d≤31
0≤r≤31
| Вычесть с заемом
| RdßRd-Rr-C
| Z, C, N, V, H
|
|
SBCI
| Rd, К
16≤d≤32
0≤K≤255
| Вычесть непосредственное значение с заемом
| RdßRd-K-C
| Z, C, N, V, H
|
|
SBIW
| Rd, К dE{24,26,28,30} О≤К≤бЗ
| Вычесть непосредственное значение из слова
| Rdh:RdlßRdh:Rdl-K
| Z, C, N, V
|
|
AND
| Rd, Rr
0≤d≤31
0≤r≤31
| Выполнить логическое AND
| Rd ß Rd • Rr
| Z, N, V
|
|
ANDI
| Rd, К
16<d<31 0<k≤255
| Выполнить логическое AND
| Rd ß Rd • К
| Z, N, V
|
|
OR
| Rd, Rr
0≤d≥31
0≤r≤31
| Выполнить логическое OR
| Rd ßRd v Rr
| Z, N, V
|
|
ORI
| Rd, К
16≤d≤31
0≤K≤255
| Выполнить логическое OR с непосредственным значением
| Rd ßRd v К
| Z, N, V
|
|
EOR
| Rd, Rr
0≤d≤31
0≤г≤31
| Выполнить исключающее OR
| Rd ßRd Rr
| Z, N, V
|
|
СОМ
| Rd
0≤d≤31
| Выполнить дополнение до единицы
| RdßSFF-Rd
| Z, C, N, V
|
|
NEG
| Rd
0≤d≤31
| Выполнить дополнение до двух
| Rd ß S00 - Rd
| Z, C, N, V, H
|
|
SBR
| Rd, К
16≤d≤31
0≤K≤255
| Установить биты в регистре
| Rd ß Rd v К
| Z, N,V
|
|
Мнемоника
| Операнды
| Описание
| Операция
| Флаги
| Кол-во циклов
|
CBR
| Rd, К
16≤d≤31 O≤K≤255
| Очистить биты в регистре
| Rd ßRd • (SFF - К)
| Z, N, V
|
|
INC
| Rd
0≤d≤31
| Инкрементировать
| Rd ßRd + 1
| Z, N,V
|
|
DEC
| Rd
0≤d≤31
| Декрементировать
| Rd ß Rd - 1
| Z, N,V
|
|
TST
| Rd
0≤r≤31
| Проверить на ноль или минус
| RdßRd.Rd
| Z, N, V
|
|
CLR
| Rd
0≤d≤31
| Очистить регистр
| Rd ß Rd Å Rd
| Z, N, V
|
|
SER
| Rd
16≤d≤31
| Установить все биты регистра
| Rd ßSFF
| нет
|
|
CP
| Rd, Rr
0≤d≤31
0≤r≤31
| Сравнить
| Rd-Rr
| Z, C, N, V, H
|
|
CPC
| Rd, Rr
0≤d≤31
0≤r≤31
| Сравнить с учетом переноса
| Rd-Rr-C
| Z, C, N, V, H
|
|
CPI
| Rd, К
16≤d≤31 0≤K≤255
| Сравнить с константой
| Rd-K
| Z, C, N, V, H
|
|
Таблица 3.2. Команды сдвигов и операций с битами
Мнемоника
| Операнды
| Описание
| Операция
| Флаги
| Кол-во циклов
|
LSL
| Rd
0≤d≤31
| Логически сдвинуть влево
| Rd(n+1)ßRd(n),
Rd(0)ß0, CßRd(7)
| Z,C,N,V,H
|
|
LSR
| Rd
0≤d≤31
| Логически сдвинуть вправо
| Rd(n)ßRd(n+1),
Rd(7) ß0, CßRd(0)
| Z,C,N,V
|
|
ROL
| Rd
0≤d≤31
| Сдвинуть влево через перенос
| Rd(0) ßC,
Rd(n+1)ßRd(n),
CßRd(7)
| Z,C,N,V,H
|
|
ROR
| Rd
0≤d≤31
| Сдвинуть вправо через перенос
| Rd(7) ßC,
Rd(n)ßRd(n+1),
C ß Rd(0)
| Z,C,N,V
|
|
ASR
| Rd
0≤d≤31
| Арифметически сдвинуть вправо
| Rd(n)ßRd(n+1), n=0...6, Rd(0)ßC
| Z,C,N,V
|
|
SWAP
| Rd 0≤d≤31
| Поменять нибблы местами
| Rd(3...0) <–>Rd(7...4)
| Нет
|
|
BSET
| s
0≤s≤7
| Установить флаг
| SREG(s)ß 1
| SREG(s)
|
|
BCLR
| s
0≤s≤7
| Очистить флаг
| SREG(s)ß 0
| SREG(s)
|
|
Мнемоника
| Операнды
| Описание
| Операция
| Флаги
| Кол-во циклов
|
SBI
| P,b
O≤P≤31
0≤b≤7
| Установить бит в регистр I/O
| l/0(P,b)ß 1
| Нет
|
|
CBI
| P,b
0≤P≤31
0≤b≤7
| Очистить бит в регистре I/O
| l/0(P,b)ß 0
| Нет
|
|
BST
| Rd,b
0≤d≤31
0≤b≤7
| Переписать бит из регистра во флаг Т
| Тß Rd(b)
| Т
| 1
|
BLD
| Rd,b
0≤d≤31
0≤b≤7
| Загрузить Т флаг в бит регистра
| Rd(b) ß Т
| Нет
|
|
SEC
|
| Установить флаг переноса
| Сß 1
| С
|
|
CLC
|
| Очистить флаг переноса
| Сß0
| С
|
|
SEN
|
| Установить флаг отрицательного значения
| Мß1
| N
|
|
CLN
|
| Очистить флаг отрицательного значения
| Nß0
| N
|
|
SEZ
|
| Установить флаг нулевого значения
| Zß1
| Z
|
|
CLZ
|
| Очистить флаг нулевого значения
| Zß0
| Z
|
|
SEI
|
| Установить флаг глобального прерывания
| Iß 1
| I
|
|
CLI
|
| Очистить флаг глобального прерывания
| Iß0
| I
|
|
SES
|
| Установить флаг знака
| Sß 1
| S
|
|
CLS
|
| Очистить флаг знака
| Sß0
| S
|
|
SEV
|
| Установить флаг переполнения
| Vß 1
| V
|
|
CLV
|
| Очистить флаг переполнения
| Vß0
| V
|
|
SET
|
| Установить флаг Т
| Tß1
| T
|
|
CLT
|
| Очистить флаг Т
| Тß0
| T
|
|
Мнемоника
| Операнды
| Описание
| Операция
| Флаги
| Кол-во циклов
|
SEH
|
| Установить флаг полу переноса
| Нß 1
| Н
|
|
CLH
|
| Очистить флаг полу переноса
| Нß0
| Н
|
|
NOP
|
| Выполнить холостую команду
|
| Нет
|
|
SLEEP
|
| Установить режим SLEEP
|
| Нет
|
|
WDR
|
| Сбросить сторожевой таймер
|
| Нет
|
|
Таблица 3.3. Команды пересылки данных
Мнемоника
| Операнды
| Описание
| Операция
| Флаги
| Кол-во циклов
|
ELPM
|
| Расширенная загрузка из памяти программ в регистр RO
| R0ß (Z+RAMPZ)
| Нет
|
|
MOV
| Rd,Rr
0≤d≤31
0≤r≤31
| Копировать регистр
| RdßRr
| Нет
|
|
LDI
| Rd,k
16≤d≤31 0≤k≤255
| Загрузить непосредственное значение
| RdßK
| Нет
|
|
LDS
| Rd,k
0≤d≤31 0≤k≤65535
| Загрузить из ОЗУ
| Rdß(k)
| Нет
|
|
LD
| Rd,X
0≤d≤31
| Загрузить косвенно
| Rd ß (X)
| Нет
|
|
LD
| Rd,X+
0≤d≤31
| Загрузить косвенно с постинкрементом
| Rd ß (X),
XßX+1
| Нет
|
|
LD
| Rd,X-
0≤d≤31
| Загрузить косвенно с преддекрементом
| XßX-1,
Rd ß (X)
| Нет
|
|
LD
| Rd,Y
0≤d≤31
| Загрузить косвенно
| Rdß(Y),
| Нет
|
|
LD
| Rd,Y+
0≤d≤31
| Загрузить косвенно с постинкрементом
| Rdß(Y), YßY+1
| Нет
|
|
LD
| Rd,Y
0≤d≤31
| Загрузить косвенно с преддекрементом
| YßY-1, Rd ß (Y)
| Нет
|
|
LDD
| Rd,Y+q
0≤d≤31
0≤q≤63
| Загрузить косвенно со смещением
| Rdß(Y+q)
| Нет
|
|
LD
| Rd,Z
0≤d≤31
| Загрузить косвенно
| Rd ß (Z)
| Нет
|
|
Мнемоника
| Операнды
| Описание
| Операция
| Флаги
| Кол-во циклов
|
LD
| Rd,Z+
0≤d≤31
| Загрузить косвенно с постинкрементом
| Rd ß (Z), ZßZ+1
| Нет
|
|
LD
| Rd,-Z
0≤d≤31
| Загрузить косвенно с преддекрементом
| ZßZ-1, Rdß(Z)
| Нет
|
|
LDD
| Rd,Z+q
0≤d≤31
0≤q≤31
| Загрузить косвенно со смещением
| Rd ß (Z+q)
| Нет
|
|
STS
| k,Rr
0≤d≤31 0≤k≤65535
| Загрузить непосредственно в ОЗУ
| (k) ßRr
| Нет
|
|
ST
| X,Rr
0≤r≤31
| Записать косвенно
| (X) ß Rr
| Нет
|
|
ST
| X+,Rr
0≤r≤31
| Записать косвенно с постинкрементом
| (X) ßRr, XßX+ 1
| Нет
|
|
ST
| -X,Rr
0≤r≤31
| Записать косвенно с преддекрементом
| XßX-1, (X) ßRr
| Нет
|
|
ST
| Y,Rr
0≤r≤31
| Записать косвенно
| (Y) ßRr
| Нет
|
|
ST
| Y+,Rr
0≤r≤31
| Записать косвенно с постинкрементом
| (Y) ß Rr, YßY+ 1
| Нет
|
|
ST
| -Y,Rr
0≤r≤31
| Записать косвенно с преддекрементом
| YßY-1, (Y) ß Rr
| Нет
|
|
STD
| Y+q,Rr
0≤r≤31
0≤q≤63
| Записать косвенно со смещением
| (Y+q)ßRr
| Нет
|
|
ST
| Z,Rr
0≤r≤31
| Записать косвенно
| (Z) ßRr
| Нет
|
|
ST
| Z+,Rr
0≤r≤31
| Записать косвенно с постинкрементом
| (Z) ß Rr, ZßZ+ 1
| Нет
|
|
ST
| -Z,Rr
0≤r≤31
| Записать косвенно с преддекрементом
| ZßZ-1, (Z) ß Rr
| Нет
|
|
STD
| Z+q,Rr
0≤r≤31
0≤q≤63
| Записать косвенно со смещением
| (Z+q)ßRr
| Нет
|
|
LPM
|
| Загрузить байт из памяти программ
| R0 ß (Z)
| Нет
|
|
IN
| Rd,P
0≤d≤31
0≤P≤63
| Загрузить данные из порта I/O в регистр
| RdßP
| Нет
|
|
OUT
| P,Rr
0≤r≤31
0≤P≤63
| Записать данные из регистра в порт I/O
| PßRr
| Нет
|
|
PUSH
| Rr
0≤r≤31
| Сохранить регистр в стеке
| STACK ßRr
| Нет
|
|
Таблица 3.4. Команды переходов
Мнемоника
| Операнды
| Описание
| Операция
| Флаги
| Кол-во циклов
|
RJMP
| k
-2K<k<2K
| Перейти относительно
| PC ßPC + k + 1
| Нет
|
|
LJMP
|
| Перейти косвенно
| PCßZ
| Нет
|
|
JMP
| k
0<k<4M
| Перейти
| PCßk
| Нет
|
|
RCALL
| k
-2K≤k≤2K
| Вызвать подпрограмму относительно
| PC ß PC + k + 1
| Нет
|
|
ICALL
|
| Вызвать подпрограмму косвенно
| PCßZ
| Нет
|
|
CALL
| k
0≤k≤64K
| Выполнить длинный вызов подпрограммы
| PCßk
| Нет
|
|
RET
|
| Вернуться из подпрограммы
| PC ß STACK
| Нет
|
|
RETI
|
| Вернуться из прерывания
| PC ß STACK
| I
|
|
CPSE
| Rd,Rr
0≤d≤31,
0≤r≤31
| Сравнить и пропустить, если равно
| If Rd=Rr then
PC ß PC + 2 (or 3)
| Нет
| ½/3
|
SBRC
| Rr,b
0≤r≤31
0≤b≤7
| Пропустить, если бит в регистре очищен
| if Rr(b)=0 then
PC ß PC + 2 (or 3)
| Нет
| ½/3
|
SBRS
| Rr,b
0≤r≤31
0≤b≤7
| Пропустить, если бит в регистре установлен
| If Rr(b)=1 then
PC ßPC + 2 (or 3)
| Нет
| ½/3
|
SBIC
| P,b
0≤P≤31
0≤b≤7
| Пропустить, если бит в регистре I/O очищен
| if l/O P(b)=0 then
PC ß PC + 2 (or 3)
| Нет
| ½/3
|
SBIS
| P,b
0≤r≤31
0≤b≤7
| Пропустить, если бит в регистре I/O установлен
| If l/O P(b)=1 then
PC ßPC + 2 (or 3)
| Нет
| ½/3
|
BRBS
| s,k
0≤s≤7
-64≤k≤+63
| Перейти, если бит в регистре статуса установлен
| if SREG(s)=1 then
PC ß PC + k + 1
| Нет
| ½
|
BRBC
| s,k
0≤s≤7
-64≤k≤+63
| Перейти, если бит в регистре статуса очищен
| if SREG(s)=0 then
PC ß PC + k + 1
| Нет
| ½
|
BREQ
| k
-64≤k≤+63
| Перейти, если равно
| if Rd=Rr (Z=1) then
PC ß PC + k + 1
| Нет
| ½
|
BRNE
| k
-64≤k≤+63
| Перейти, если не равно
| if Rd¹Rr(Z=0) then PC<ßPC+ k+ 1
| Нет
| ½
|
Мнемоника
| Операнды
| Описание
| Операция
| Флаги
| Кол-во циклов
|
BRCS
| k
-64£k£+63
| Перейти, если флаг переноса установлен
| if C=1 then
PC ß PC + k + 1
| Нет
| 1/2
|
BRCC
| k
-64≤k≤+63
| Перейти, если флаг переноса очищен
| if C=0 then
PC ß PC + k + 1
| Нет
| 1/2
|
BRSH
| K
-64≤k≤+63
| Перейти, если равно или больше (без знака)
| if Rd<Rr(C=0) then PCßPC+ k+ 1
| Нет
| 1/2
|
BRLO
| k
-64≤k≤+63
| Перейти, если меньше (без знака)
| if Rd<Rr (C=1) then PC ßPC + k + 1
| Нет
| 1/2
|
BRMI
| k
-64≤k≤+63
| Перейти, если минус
| if N=1 then
PC ß PC + k + 1
| Нет
| 1/2
|
BRPL
| k
-64≤k≤+63
| Перейти, если плюс
| if N=0 then
PC ß PC + k + 1
| Нет
| 1/2
|
BRGE
| k
-64≤k≤+63
| Перейти, если больше или равно (с учетом знака)
| if Rd>Rr (NÅV=0) then PC ß PC + k + 1
| Нет
| 1/2
|
BRLT
| k
-64≤k≤+63
| Перейти, если меньше чем (со знаком)
| if Rd<Rr (NÅV=1)then PC ßPC + k+ 1
| Нет
| 1/2
|
BRHS
| K
-64≤k≤+63
| Перейти, если флаг полупереноса установлен
| if H=1 then
PC ß PC + k + 1
| Нет
| 1/2
| |
BRHC
| k
-64≤k≤+63
| Перейти, если флаг полупереноса очищен
| if H=0 then
PC ß PC + k + 1
| Нет
| 1/2
| |
BRTS
| k
-64≤k≤+63
| Перейти, если флаг Т установлен
| if T=1 then
PC ß PC + k + 1
| Нет
| 1/2
| |
BRTC
| k
-64≤k≤+63
| Перейти, если флаг Т очищен
| if T=0 then
PC ß pc + k + 1
| Нет
| 1/2
| |
BRVS
| k
-64≤k≤+63
| Перейти, если флаг переполнения установлен
| if V=1 then
PC ß PC + k + 1
| Нет
| 1/2
| |
BRVC
| k
-64≤k≤+63
| Перейти, если флаг переполнения очищен
| if V=0 then
PC ß PC + k + 1
| Нет
| 1/2
| |
BRIE
| k
-64≤k≤+63
| Перейти, если глобальное прерывание разрешено
| if I=1 then
PC ß PC + k + 1
| Нет
| 1/2
| |
BRID
| k
-64k£k£+63
| Перейти, если глобальное прерывание запрещено
| if I=0 then
PC ß PC + k + 1
| Нет
| 1/2
| |
| | | | | | | | |
ПОРТЫ ВВОДА-ВЫВОДА
При арифметических операциях используется регистр состояния SREG, располагаемый по адресу $3F($5F). Формат этого регистра следующий: