|
|
8(495)909-90-01
8(964)644-46-00
pro@sio.su
|
|
Раздел: Документация0 ... 63 64 65 66 67 68 69 ... 195 CP Rd, Rr Сравнение РОН Операция | Rd-Rr | Код операции | 0001 01 rd dddd rrrr | | | | | 1 слово (2 байта) | Операнды | 0<d<31,0<r<31 | Описание | Сравнивает содержимое двух регистров общего назначения путем вычитания содержимого регистра Rr из содержимого регистра Rd. Данная команда влияет только на флаги регистра состояния SREG, которые устанавливаются в соответствии с результатом вычитания. Содержимое регистров не изменяется. Как правило, данная команда используется совместно с одной из команд условного перехода | Регистр SREG | I | Т | Н | S | V | N | Z | С | - | - | о | о | о | о | о | о | Число тактов | 1 | Пример | ср г brne noteq: | 4,г19 noteq | ; Сравнить г4 с rl9 (R=r4-rl9) ; Перейти, если г4 о г19 | |
СРС Rd, Rr Сравнение РОН с учетом переноса Операция | Rd-Rr | -С | | | | | | | Код операции | 0000 Olrd dddd rrrr | | | | 1 слово (2 байта) | Операнды | 0 < d 31,0 r< 31 | Описание | Сравнивает содержимое двух регистров общего назначения путем вычитания содержимого регистра Rr и значения флага переноса (С) из содержимого регистра Rd. Данная команда влияет только на флаги регистра состояния SREG, которые устанавливаются в соответствии с результатом вычитания. Содержимое регистров не изменяется. Как правило, данная команда используется совместно с одной из команд условного перехода | Регистр SREG | I | т | н | S | V | N | Z | С | - | - | о | <=> | о | о | о | | Число тактов | 1 | Пример | ; Сравнение регистровых пар гЗ:г2 и rl:r0: ср г2,г0 ; Сравнить младшие байты срс гЗ , rl ; Сравнить старшие байты brne noteq ; Перейти, если гЗ:г2 о rl | :г0 | | | noteq: | | | | | | | |
CPI Rd, К Сравнение содержимого РОН с константой Операция | Rd-K | Код операции | ООП KKKKdddd KKKK | | | | 1 слово (2 байта) | Операнды | 0<d<31,0<K<255 | Описание | Сравнивает содержимое регистра общего назначения Rd с константой К путем вычитания константы из содержимого регистра Rd. Данная команда влияет только на флаги регистра состояния SREG, которые устанавливаются в соответствии с результатом вычитания. Содержимое регистра Rd не изменяется. Как правило, данная команда используется совместно с одной из команд условного перехода | Регистр SREG | I | Т | H | S | V | N | Z | С | - | - | | <=> | о | <=> | о | о | Число тактов | 1 | Пример | cpi brne noteq: | rl9,3 noteq | ; Сравнить г19 с числом 3 (R= ; Перейти, если г19 о 3 | г19-3) | |
CPSERd, Rr Пропуск команды при равенстве двух РОН Операция | Если Rd = | = Rr, то PC | = PC +2 (или 3), иначе PC = PC + 1 | | | Код операции | 0001 OOrddddd rrrr | | | | | 1 слово (2 байта) | Операнды | 0<d<31,0<r<31 | Описание | Сравнивает содержимое двух регистров общего назначения Rr и Rd и пропускает следующую команду, если в регистрах записаны одинаковые значения | Регистр SREG | I | Т | Н | S | V | N | Z | С | - | - | - | - | - | - | - | - | Число тактов | 1, если Rd ф Rr (нет пропуска команды) 2,если Rd = Rr (размер пропускаемой команды — 1 слово) 3,если Rd = Rr (размер пропускаемой команды — 2 слова) | Пример | inc г4 cpse г4, г0 neg г4 | ; Увеличить г4 (г4=г4+1) ; Сравнить содержимое г4 и г0 ; Проинвертировать г4, если г4 * г0 | |
DEC Rd Декрементирование РОН Операция | Rd = Rd | - 1 | | | | | | | Код операции | 1001 010d dddd 1010 | | | | 1 слово (2 байта) | Операнды | 0 <d < 31 | Описание | Уменьшает содержимое регистра Rd на единицу. Так как эта команда не влияет на флаг переноса С, она идеально подходит для организации счетчика числа итераций цикла при выполнении вычислений над многобитными числами. При работе с беззнаковыми числами для выполнения перехода в соответствии с результатом выполнения команды могут использоваться только команды условного перехода BREQ и BRNE. При работе с числами в дополнительном коде могут использоваться все команды условного перехода для знаковых проверок. Флаг V устанавливается в 1 только в том случае, если до выполнения операции в регистре находилось значение $80 | Регистр SREG | I | T | H | S | V | N | Z | С | - | - | - | | о | о | о | - | Число тактов | 1 | Пример | ldi г17,$10 loop: add rl,r2 dec rl7 brne loop | ; Записать число 16 в регистр г17 ; rl=rl+r2 ; Декрементировать г17 ; Перейти, если г17 * 0 | |
EICALL Расширенный косвенный вызов подпрограммы Операция | STACK = | PC + 1; PQ15..0] = Z, PQ21..16] = EIND; SP = SP - | 3 | | Код операции | 1001 0101 0001 1001 | | | | | 1 слово (2 байта) | Операнды | Нет операндов | Описание | Расширенный косвенный вызов подпрограммы. Выполняет переход к подпрограмме, младшие би1ы адреса ко юрой находятся в регистре Z, а старшие — в регистре ввода/вывода EIND. Адрес следующей за EICALL команды (3 байта) сохраняется в стеке. Эта команда поддерживается только микроконтроллерами ATmega2560x/2561x! | Регистр SREG | I | T | H | S | V | N | Z | С | - | - | - | - | - | - | - | - | Число тактов | 4 | Пример | ldi rl6,$05 ; Инициализируем EIND и указатель Z out EIND,rl6 ldi r30,$00 ldi r31,$10 eicall ; Вызовем подпрограмму, располагающуюся ; по адресу $051000 | 0 ... 63 64 65 66 67 68 69 ... 195
|
|