Мнемоника
| Операнды
| Описание
| Операция
| Флаги
| Циклы
|
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, добавьте пять циклов плюс по три цикла на каждое ожидание.