RJMP k | - | Относительный безусловный переход | ||||||||
Операнды | -2047 ≤ k ≤ 2047 | |||||||||
Операция | РС = РС + k + 1 | Циклов | ||||||||
Описание | Команда относительного безусловного перехода. Выполняет переход по адресу, равному сумме содержимого счетчика команд и константы k. На практике вместо числовых значений смещения используются метки | |||||||||
Состояние флагов | I | T | H | S | V | N | Z | C | ||
| - | - | - | - | - | - | - | |||
IJMP | - | Косвенный переход | ||||||||
Операнды | Нет операндов | |||||||||
Операция | PC = Z | Циклов | ||||||||
Описание | Косвенный безусловный переход. Выполняет переход по адресу, находящемуся в регистре Z | |||||||||
Состояние флагов | I | T | H | S | V | N | Z | C | ||
| - | - | - | - | - | - | - | |||
RCALL k | - | Относительный вызов подпрограммы | ||||||||
Операнды | -2047 ≤ k ≤ 2047 | |||||||||
Операция | STACK=РС+1; PC=PC+k+1; SP=SP–2 | Циклов | ||||||||
Описание | Относительный вызов подпрограммы. Выполняет переход к подпрограмме, адрес которой получается сложением содержимого счетчика команд с константой k. Адрес следующей за RCALL команды (2 байта) сохраняется в стеке. | |||||||||
Состояние флагов | I | T | H | S | V | N | Z | C | ||
| - | - | - | - | - | - | - | |||
ICALL | - | Косвенный вызов подпрограммы | ||||||||
Операнды | Нет операндов | |||||||||
Операция | STACK= PC+1; PC= Z; SP=SP–2 | Циклов | ||||||||
Описание | Косвенный вызов подпрограммы. Выполняет переход к подпрограмме, адрес которой находится в регистре Z. Адрес следующей за ICALL команды (2 байта) сохраняется в стеке | |||||||||
Состояние флагов | I | T | H | S | V | N | Z | C | ||
| - | - | - | - | - | - | - | |||
RET | - | Возврат из подпрограммы | ||||||||
Операнды | Нет операндов | |||||||||
Операция | SP = SP + 2; PC = STACK | Циклов | ||||||||
Описание | Возврат из подпрограммы. Выполняет возврат в то место, откуда подпрограмма была вызвана | |||||||||
Состояние флагов | I | T | H | S | V | N | Z | C | ||
| - | - | - | - | - | - | - | |||
RETI | - | Возврат из подпрограммы обработки прерывания | ||||||||
Операнды | Нет операндов | |||||||||
Операция | SP = SP + 2; PC = STACK | Циклов | ||||||||
Описание | Возврат из подпрограммы обработки прерывания. Выполняет возврат в то место, в котором выполнение программы было прервано в результате возникновения прерывания. Регистр состояния SREG не сохраняется при вызове подпрограммы обработки прерывания и не восстанавливается при выходе из нее. В связи с этим сохранение и восстановление этого регистра необходимо выполнять самостоятельно | |||||||||
Состояние флагов | I | T | H | S | V | N | Z | C | ||
+ | - | - | - | - | - | - | - | |||
CPSE Rd, Rr | - | Пропуск команды при равенстве двух РОН | ||||||||
Операнды | 0 ≤ d ≤ 31, 0 ≤ r ≤ 31 | |||||||||
Операция | Если Rd=Rr, то PC=PC+2 (или 3), иначе PC= PC+1 | Циклов | 2,3, | |||||||
Описание | Сравнивает содержимое двух регистров общего назначения Rr и Rd и пропускает следующую команду, если в регистрах записаны одинаковые значения | |||||||||
Состояние флагов | I | T | H | S | V | N | Z | C | ||
| - | - | - | - | - | - | - | |||
CP Rd, Rr | - | Сравнение РОН | ||||||||
Операнды | 0 ≤ d ≤ 31, 0 ≤ r ≤ 31 | |||||||||
Операция | Rd – Rr | Циклов | ||||||||
Описание | Сравнивает содержимое двух регистров общего назначения путем вычитания содержимого регистра Rr из содержимого регистра Rd. Данная команда влияет только на флаги регистра состояния SREG, которые устанавливаются в соответствии с результатом вычитания. Содержимое регистров не изменяется. | |||||||||
Состояние флагов | I | T | H | S | V | N | Z | C | ||
| - | + | + | + | + | + | + | |||
CPC Rd, Rr | - | Сравнение РОН с учетом переноса | ||||||||
Операнды | 0 ≤ d ≤ 31, 0 ≤ r ≤ 31 | |||||||||
Операция | Rd – Rr – C | Циклов | ||||||||
Описание | Сравнивает содержимое двух регистров общего назначения путем вычитания содержимого регистра Rr и значения флага переноса (С) из содержимого регистра Rd. Данная команда влияет только на флаги регистра состояния SREG, которые устанавливаются в соответствии с результатом вычитания. Содержимое регистров не изменяется. | |||||||||
Состояние флагов | I | T | H | S | V | N | Z | C | ||
| - | + | + | + | + | + | + | |||
CPI Rd, К | - | Сравнение содержимого РОН с константой | ||||||||
Операнды | 0 ≤ d ≤ 31, 0 ≤ K ≤ 255 | |||||||||
Операция | Rd – K | Циклов | ||||||||
Описание | Сравнивает содержимое регистра общего назначения Rd с константой К путем вычитания константы из содержимого регистра Rd. Данная команда влияет только на флаги регистра состояния SREG, которые устанавливаются в соответствии с результатом вычитания. Содержимое регистра Rd не изменяется. | |||||||||
Состояние флагов | I | T | H | S | V | N | Z | C | ||
| - | + | + | + | + | + | + | |||
SBRC Rr, b | - | Пропустить команду, если разряд РОН сброшен | ||||||||
Операнды | 0 ≤ d ≤ 31, 0 ≤ b ≤ 7 | |||||||||
Операция | Если в Rr бит b=0, то PC=PC+2 (или 3), иначе PC= PC + 1 | Циклов | 2,3, | |||||||
Описание | Проверяет состояние разряда b регистра общего назначения Rr. Если разряд сброшен, команда, следующая за SBRC Rr, b пропускается. | |||||||||
Состояние флагов | I | T | H | S | V | N | Z | C | ||
| - | - | - | - | - | - | - | |||
SBRS Rr, b | - | Пропустить команду, если разряд РОН установлен | ||||||||
Операнды | 0 ≤ d ≤ 31, 0 ≤ b ≤ 7 | |||||||||
Операция | Если в Rr бит b=1, то PC=PC+2 (или 3), иначе PC= PC + 1 | Циклов | 2,3, | |||||||
Описание | Проверяет состояние разряда b регистра общего назначения Rr. Если разряд установлен команда, следующая за SBRS Rr, b пропускается. | |||||||||
Состояние флагов | I | T | H | S | V | N | Z | C | ||
| - | - | - | - | - | - | - | |||
SBIC P, b | - | Пропустить команду, если разряд b РВВ сброшен | ||||||||
Операнды | 0 ≤ P ≤ 31, 0 ≤ b ≤ 7 | |||||||||
Операция | Если I/О(P) b=0, то PC=PC+2 (или 3), иначе PC = PC + 1 | Циклов | 2,3, | |||||||
Описание | Проверяет состояние разряда b регистра ввода/вывода P. Если разряд сброшен, команда, следующая за SBIC P, b, пропускается. Эта команда применима только к младшим 32 регистрам (адреса 0...31). | |||||||||
Состояние флагов | I | T | H | S | V | N | Z | C | ||
| - | - | - | - | - | - | - | |||
SBIS P, b | - | Пропустить команду, если разряд РВВ установлен | ||||||||
Операнды | 0 ≤ P ≤ 31, 0 ≤ b ≤ 7 | |||||||||
Операция | Если I/О(P) b=1, то PC=PC+2 (или 3), иначе PC = PC + 1 | Циклов | 2,3, | |||||||
Описание | Проверяет состояние разряда b регистра ввода/вывода P. Если разряд установлен, команда, следующая за SBIC P, b, пропускается. Эта команда применима только к младшим 32 регистрам (адреса 0...31). | |||||||||
Состояние флагов | I | T | H | S | V | N | Z | C | ||
| - | - | - | - | - | - | - | |||
BRBS s, k | - | Переход, если разряд регистра SREG установлен | ||||||||
Операнды | 0 ≤ s ≤ 7, –64 ≤ k ≤ 63 | |||||||||
Операция | Если SREG.s=1, то РС=РС+k+1, иначе PC = PC + 1 | Циклов | 2, | |||||||
Описание | Условный относительный переход. Проверяет заданный разряд регистра SREG и выполняет переход, если этот разряд установлен. Величина смещения k представляется числом в дополнительном коде. | |||||||||
Состояние флагов | I | T | H | S | V | N | Z | C | ||
| - | - | - | - | - | - | - | |||
BRBC s, k | - | Переход, если разряд регистра SREG сброшен | ||||||||
Операнды | 0 ≤ s ≤ 7, –64 ≤ k ≤ 63 | |||||||||
Операция | Если SREG.s=0, то РС=РС+k+1, иначе PC = PC + 1 | Циклов | 2, | |||||||
Описание | Условный относительный переход. Проверяет заданный разряд регистра SREG и выполняет переход, если этот разряд сброшен. Величина смещения k представляется числом в дополнительном коде | |||||||||
Состояние флагов | I | T | H | S | V | N | Z | C | ||
| - | - | - | - | - | - | - | |||
BREQ k | - | Переход по условию «равно» | ||||||||
Операнды | –64 ≤ k ≤ 63 | |||||||||
Операция | Если Rd=Rr (Z=1),то PC=PC+k+1, иначе PC = PC + 1 | Циклов | 2, | |||||||
Описание | Условный относительный переход. Проверяет флаг нуля (Z) и выполняет переход, если флаг установлен. Величина смещения k представляется числом в дополнительном коде. При выполнении данной команды сразу же после команды СР, CPI, SUB или SUBI переход произойдет только в том случае, если число (со знаком или без знака), находящееся в регистре Rd, будет равно числу (со знаком или без знака), находящемуся в регистре Rr. | |||||||||
Состояние флагов | I | T | H | S | V | N | Z | C | ||
| - | - | - | - | - | - | - | |||
BRNE k | - | Переход по условию «не равно» | ||||||||
Операнды | –64 ≤ k ≤ 63 | |||||||||
Операция | Если Rd≠Rr (Z=0), то PC=PC+k+1, иначе PC = PC + 1 | Циклов | 2, | |||||||
Описание | Условный относительный переход. Проверяет флаг нуля (Z) и выполняет переход, если этот разряд сброшен. Величина смещения к представляется числом в дополнительном коде. При выполнении данной команды сразу же после команды СР, CPI, SUB или SUBI переход произойдет только в том случае, если числа (со знаком или без знака), находящиеся в регистрах Rd и Rr, не будут равны. | |||||||||
Состояние флагов | I | T | H | S | V | N | Z | C | ||
| - | - | - | - | - | - | - | |||
BRCS k | - | Переход, если установлен перенос | ||||||||
Операнды | –64 ≤ k ≤ 63 | |||||||||
Операция | Если флаг С = 1, то PC=PC+k+1, иначе PC = PC + 1 | Циклов | 2, | |||||||
Описание | Условный относительный переход. Проверяет флаг переноса (С) и выполняет переход, если этот разряд установлен. Величина смещения k представляется числом в дополнительном коде. | |||||||||
Состояние флагов | I | T | H | S | V | N | Z | C | ||
| - | - | - | - | - | - | - | |||
BRCC k | - | Переход, если не было переноса | ||||||||
Операнды | –64 ≤ k ≤ 63 | |||||||||
Операция | Если флаг С=0, то PC = PC+k+1, иначе PC = PC + 1 | Циклов | 2, | |||||||
Описание | Условный относительный переход. Проверяет флаг переноса (С) и выполняет переход, если этот разряд сброшен. Величина смещения k представляется числом в дополнительном коде. | |||||||||
Состояние флагов | I | T | H | S | V | N | Z | C | ||
| - | - | - | - | - | - | - | |||
BRSH k | - | Переход по условию «больше или равно» (для беззнаковых данных) | ||||||||
Операнды | –64 ≤ k ≤ 63 | |||||||||
Операция | Если Rd ≥ Rr (С = 0), то PC=PC+k+1, иначе PC = PC + 1 | Циклов | 2, | |||||||
Описание | Условный относительный переход. Проверяет флаг переноса С и выполняет переход, если этот разряд сброшен. Величина смещения к представляется числом в дополнительном коде. При выполнении данной команды сразу же после команды СР, CPI, SUB или SUBI переход произойдет только в том случае, если число, находящееся в регистре Rd, будет больше (или равно) числа, находящегося в регистре Rr. | |||||||||
Состояние флагов | I | T | H | S | V | N | Z | C | ||
| - | - | - | - | - | - | - | |||
BRLO k | - | Переход по условию «меньше» (для беззнаковых данных) | ||||||||
Операнды | –64 ≤ k ≤ 63 | |||||||||
Операция | Если Rd<Rr (С=1), то PC=PC+k+1, иначе PC - PC + 1 | Циклов | 2, | |||||||
Описание | Условный относительный переход. Проверяет флаг переноса С и выполняет переход, если этот разряд установлен. Величина смещения k представляется числом в дополнительном коде. При выполнении данной команды сразу же после команды СР, CPI, SUB или SUBI переход произойдет только в том случае, если число, находящееся в регистре Rd, будет меньше числа, находящегося в регистре Rr. | |||||||||
Состояние флагов | I | T | H | S | V | N | Z | C | ||
| - | - | - | - | - | - | - | |||
BRMI k | - | Переход по условию «отрицательное значение» | ||||||||
Операнды | –64 ≤ k ≤ 63 | |||||||||
Операция | Если флаг N = 1, то PC=PC+k+1, иначе PC - PC + 1 | Циклов | 2, | |||||||
Описание | Условный относительный переход. Проверяет флаг отрицательного значения N и выполняет переход, если этот разряд установлен. Величина смещения k представляется числом в дополнительном коде. | |||||||||
Состояние флагов | I | T | H | S | V | N | Z | C | ||
| - | - | - | - | - | - | - | |||
BRPL k | - | Переход по условию «положительное значение» | ||||||||
Операнды | –64 ≤ k ≤ 63 | |||||||||
Операция | Если флаг N = 0, то PC=PC+k+1, иначе PC = PC + 1 | Циклов | 2, | |||||||
Описание | Условный относительный переход. Проверяет флаг отрицательного значения (N) и выполнит переход, если этот разряд сброшен. Величина смещения k представляется числом в дополнительном коде. | |||||||||
Состояние флагов | I | T | H | S | V | N | Z | C | ||
| - | - | - | - | - | - | - | |||
BRGE k | - | Переход по условию «больше или равно» (для знаковых данных) | ||||||||
Операнды | –64 ≤ k ≤ 63 | |||||||||
Операция | Если Rd ≥ Rr (N ![]() | Циклов | 2, | |||||||
Описание | Условный относительный переход. Проверяет флаг знака (S) и выполняет переход, если это разряд сброшен. Величина смещения k представляется числом в дополнительном коде. При выполнении данной команды сразу же после команды СР, CPI, SUB или SUBI переход про изойдет только в том случае, если число со знаком, находящееся в регистре Rd, будет больше (или равно) числа со знаком, находящегося в регистре Rr. Эквивалентна команде BRBC 4,k | |||||||||
Состояние флагов | I | T | H | S | V | N | Z | C | ||
| - | - | - | - | - | - | - | |||
BRLT k | - | Переход по условию «меньше» (для знаковых данных) | ||||||||
Операнды | –64 ≤ k ≤ 63 | |||||||||
Операция | Если Rd<Rr (N ![]() | Циклов | 2, | |||||||
Описание | Условный относительный переход. Проверяет флаг S и выполняет переход, если это разряд установлен. Величина смещения k представляется числом в дополнительном коде. При выполнении данной команды сразу же после команды СР, CPI, SUB или SUBI переход произойдет только в том случае, если число со знаком, находящееся в регистре Rd, будет меньше числа со знаком, находящегося в регистре Rr. | |||||||||
Состояние флагов | I | T | H | S | V | N | Z | C | ||
| - | - | - | - | - | - | - | |||
BRHS k | - | Переход по половинному переносу | ||||||||
Операнды | –64 ≤ k ≤ 63 | |||||||||
Операция | Если флаг Н = 1, то PC=PC+k+1, иначе PC = PC + 1 | Циклов | 2, | |||||||
Описание | Условный относительный переход. Проверяет флаг половинного переноса Н и выполняет переход, если этот разряд установлен. Величина смещения k представляется числом в дополнительном коде. | |||||||||
Состояние флагов | I | T | H | S | V | N | Z | C | ||
| - | - | - | - | - | - | - | |||
BRHC k | - | Переход, если не было половинного переноса | ||||||||
Операнды | –64 ≤ k ≤ 63 | |||||||||
Операция | Если флаг Н = 0, то PC=PC+k+1, иначе PC = PC + 1 | Циклов | 2, | |||||||
Описание | Условный относительный переход. Проверяет флаг половинного переноса Н и выполняет переход, если этот разряд сброшен. Величина смещения k представляется числом в дополнительном коде. | |||||||||
Состояние флагов | I | T | H | S | V | N | Z | C | ||
| - | - | - | - | - | - | - | |||
BRTS k | - | Переход, если флаг Т установлен | ||||||||
Операнды | –64 ≤ k ≤ 63 | |||||||||
Операция | Если флаг Т=1, то PC=PC+K+1, иначе PC=PC+1 | Циклов | 2, | |||||||
Описание | Условный относительный переход. Проверяет флаг Т и выполняет переход, если этот разряд установлен. Вели-чина смещения k представляется в дополнительн. коде. | |||||||||
Состояние флагов | I | T | H | S | V | N | Z | C | ||
| - | - | - | - | - | - | - | |||
BRTC k | - | Переход, если флаг Т сброшен | ||||||||
Операнды | –64 ≤ k ≤ 63 | |||||||||
Операция | Если флаг Т = 0, то РС=РС+к+1, иначе PC = PC + 1 | Циклов | 2, | |||||||
Описание | Условный относительный переход. Проверяет флаг Т и выполняет переход, если этот разряд сброшен. Величина смещения к представляется числом в дополнительном коде. | |||||||||
Состояние флагов | I | T | H | S | V | N | Z | C | ||
| - | - | - | - | - | - | - | |||
BRVS k | - | Переход по переполнению дополнительного кода | ||||||||
Операнды | –64 ≤ k ≤ 63 | |||||||||
Операция | Если флаг V = 1, то PC=PC+k+1, иначе PC = PC + 1 | Циклов | 2, | |||||||
Описание | Условный относительный переход. Проверяет флаг переполнения дополнительного кода V и выполняет переход, если этот разряд установлен. Смещения k представляется числом в дополнительном коде | |||||||||
Состояние флагов | I | T | H | S | V | N | Z | C | ||
| - | - | - | - | - | - | - | |||
BRVC k | - | Переход, если нет переполнения дополнительного кода | ||||||||
Операнды | –64 ≤ k ≤ 63 | |||||||||
Операция | Если флаг V = 0 то PC=PC+k+1, иначе PC = PC + 1 | Циклов | 2, | |||||||
Описание | Условный относительный переход. Проверяет флаг переполнения дополнительного кода V и выполняет переход, если этот разряд сброшен. Величина смещения k представлена в дополнительном коде. | |||||||||
Состояние флагов | I | T | H | S | V | N | Z | C | ||
| - | - | - | - | - | - | - | |||
BRIE k | - | Переход, если прерывания разрешены | ||||||||
Операнды | –64 ≤ k ≤ 63 | |||||||||
Операция | Если флаг I = 1, то PC =PC+k+1, иначе PC = PC + 1 | Циклов | 2, | |||||||
Описание | Условный относительный переход. Проверяет флаг общего разрешения прерываний (I) и выполняет переход, если этот разряд установлен. Смещения k представляется числом в дополнительном коде. | |||||||||
Состояние флагов | I | T | H | S | V | N | Z | C | ||
| - | - | - | - | - | - | - | |||
BRID k | - | Переход, если прерывания запрещены | ||||||||
Операнды | –64 ≤ k ≤ 63 | |||||||||
Операция | Если флаг I = 0, то PC =PC+k+1, иначе PC = PC + 1 | Циклов | 2, | |||||||
Описание | Условный относительный переход. Проверяет флаг общего разрешения прерываний (I) и выполняет переход, если этот разряд сброшен. Смещение k представляется числом в дополнительном коде. | |||||||||
Состояние флагов | I | T | H | S | V | N | Z | C | ||
| - | - | - | - | - | - | - | |||