Мнемоника
Операнды
Описание
Операция
Флаги
Циклы
RJMP
k
Относительный переход
PC = PC + k +1
None
IJMP
Нет
Косвенный переход на (Z)
PC = Z
None
EIJMP
Нет
Расширенный косвенный переход на (Z)
STACK = PC+1, PC(15:0) = Z, PC(21:16) = EIND
None
JMP
k
Переход
PC = k
None
RCALL
k
Относительный вызов подпрограммы
STACK = PC+1, PC = PC + k + 1
None
3/4*
ICALL
Нет
Косвенный вызов (Z)
STACK = PC+1, PC = Z
None
3/4*
EICALL
Нет
Расширенный косвенный вызов (Z)
STACK = PC+1, PC(15:0) = Z, PC(21:16) =EIND
None
4*
CALL
k
Вызов подпрограммы
STACK = PC+2, PC = k
None
4/5*
RET
Нет
Возврат из подпрограммы
PC = STACK
None
4/5*
RETI
Нет
Возврат из прерывания
PC = STACK
I
4/5*
CPSE
Rd,Rr
Сравнить, пропустить если равны
if (Rd ==Rr) PC = PC 2 or 3
None
1/2/3
CP
Rd,Rr
Сравнить
Rd -Rr
Z,C,N,V,H,S
CPC
Rd,Rr
Сравнить с переносом
Rd - Rr - C
Z,C,N,V,H,S
CPI
Rd,K8
Сравнить с константой
Rd - K
Z,C,N,V,H,S
SBRC
Rr,b
Пропустить если бит в регистре очищен
if(Rr(b)==0) PC = PC + 2 or 3
None
1/2/3
SBRS
Rr,b
Пропустить если бит в регистре установлен
if(Rr(b)==1) PC = PC + 2 or 3
None
1/2/3
SBIC
P,b
Пропустить если бит в порту очищен
if(I/O(P,b)==0) PC = PC + 2 or 3
None
1/2/3
SBIS
P,b
Пропустить если бит в порту установлен
if(I/O(P,b)==1) PC = PC + 2 or 3
None
1/2/3
BRBC
s,k
Перейти если флаг в SREG очищен
if(SREG(s)==0) PC = PC + k + 1
None
1/2
BRBS
s,k
Перейти если флаг в SREG установлен
if(SREG(s)==1) PC = PC + k + 1
None
1/2
BREQ
k
Перейти если равно
if(Z==1) PC = PC + k + 1
None
1/2
BRNE
k
Перейти если не равно
if(Z==0) PC = PC + k + 1
None
1/2
BRCS
k
Перейти если перенос установлен
if(C==1) PC = PC + k + 1
None
1/2
BRCC
k
Перейти если перенос очищен
if(C==0) PC = PC + k + 1
None
1/2
BRSH
k
Перейти если равно или больше
if(C==0) PC = PC + k + 1
None
1/2
BRLO
k
Перейти если меньше
if(C==1) PC = PC + k + 1
None
1/2
BRMI
k
Перейти если минус
if(N==1) PC = PC + k + 1
None
1/2
BRPL
k
Перейти если плюс
if(N==0) PC = PC + k + 1
None
1/2
BRGE
k
Перейти если больше или равно (со знаком)
if(S==0) PC = PC + k + 1
None
1/2
BRLT
k
Перейти если меньше (со знаком)
if(S==1) PC = PC + k + 1
None
1/2
BRHS
k
Перейти если флаг внутреннего переноса установлен
if(H==1) PC = PC + k + 1
None
1/2
BRHC
k
Перейти если флаг внутреннего переноса очищен
if(H==0) PC = PC + k + 1
None
1/2
BRTS
k
Перейти если флаг T установлен
if(T==1) PC = PC + k + 1
None
1/2
BRTC
k
Перейти если флаг T очищен
if(T==0) PC = PC + k + 1
None
1/2
BRVS
k
Перейти если флаг переполнения установлен
if(V==1) PC = PC + k + 1
None
1/2
BRVC
k
Перейти если флаг переполнения очищен
if(V==0) PC = PC + k + 1
None
1/2
BRIE
k
Перейти если прерывания разрешены
if(I==1) PC = PC + k + 1
None
1/2
BRID
k
Перейти если прерывания запрещены
if(I==0) PC = PC + k + 1
None
1/2
* Для операций доступа к данным количество циклов указано при условии доступа к внутренней памяти данных, и не корректно при работе с внешним ОЗУ. Для инструкций CALL, ICALL, EICALL, RCALL, RET и RETI, необходимо добавить три цикла плюс по два цикла для каждого ожидания в контроллерах с PC меньшим 16 бит (128KB памяти программ). Для устройств с памятью программ свыше 128KB , добавьте пять циклов плюс по три цикла на каждое ожидание.