|
|
8(495)909-90-01
8(964)644-46-00
pro@sio.su
|
|
Раздел: Документация0 ... 70 71 72 73 74 75 76 ... 195 OR Rd,Rr «Логическое ИЛИ» двух РОН Операция | Rd = Rd | vRr | | | | | | | Код операции | 0010 10rd dddd rrrr | | | | | 1 слово (2 байта) | Операнды | 0<d<31,0<r<31 | Описание | Выполняет операцию «Логическое ИЛИ» между регистрами Rd и Rr. Результат помещается в регистр Rd | Регистр SREG | I | T | H | s | V | N | Z | С | - | - | - | <=> | 0 | <=> | <=> | - | Число тактов | 1 | Пример | or bst brts | rl5,rl6 rl5,6 ok | ; Побитовое «ИЛИ» rl5 и г16 ; Записать 6-й бит регистра г15 в флаг Т ; Перейти, если флаг Т равен 1 | | ok: | | | | | | | |
ORI Rd, к «Логическое ИЛИ» РОН и константы Операция | Rd = Rd | vK | | | | | | | Код операции | ОНО KKKK dddd KKKK | | | | 1 слово (2 байта) | Операнды | 16<d<31,0<K<255 | Описание | Выполняет операцию «Логическое ИЛИ» между регистром Rd и константой К. Результат помещается в регистр Rd. Команда применима только к 16 старшим POH(R16...R31) | Регистр SREG | I | T | H | S | V | N | Z | С | - | - | - | <=> | 0 | <=> | <=> | - | Число тактов | 1 | Пример | ori on | rl7,$0F rl8,l | ; Установить старший полубайт регистра rl7 ; Установить 0-й бит регистра г18 |
OUT A, Rr Пересылка значения из РОН в РВВ Операция | 1/0(А) = Rr | Код операции | 1011 1 AAr rrrr АААА 1 слово (2 байта) | Операнды | 0<г<31,0<А<63 | Описание | Пересылает содержимое регистра общего назначения Rr в регистр ввода/вывода А | Регистр SREG | I Т Н S V N Z С | | Число тактов | 1 | Пример | clr г1б ser г17 out $18,г16 пор out $18#г17 | Очистить регистр г1б Установить регистр г17 Записать нули в порт В Ждать один такт Записать единицы в порт В |
POP Rd Извлечение байта из стека Операция | SP = SP+ 1, Rd = | STACK | | | | | | Код операции | 1001 000ddddd 111 | 1 | | | | 1 слово (2 байта) | Операнды | 0 < d < 31 | Описание | Загружает 1 байт из стека в регистр общего назначения Rd | Регистр SREG | I | Т | н | S | V | N | Z | С | - | - | - | - | - | - | - | - | Число тактов | 2 | Пример | call routine ; Вызов подпрограммы routine: push rl4 ; Сохранить rl4 в стеке push rl5 ; Сохранить rl5 в стеке pop rl5 ; Восстановить rl5 из стека pop rl4 ; Восстановить rl4 из стека ret ; Возврат из подпрограммы |
PUSH Rr Сохранение байта в стеке Операция | STACK = | = Rr,SP = | SP-1 | | | | | | Код операции | 1001 001 г rrrr 1111 | | | | | 1 слово (2 байта) | Операнды | 0 < г < 31 | Описание | Сохраняет содержимое регистра общего назначения Rr в стеке | Регистр SREG | I | T | H | S | V | N | Z | С | - | - | - | - | - | - | - | - | Число тактов | 2 | | call | routine ; Вызов подпрограммы | | | Пример | routine push push | rl4 rl5 | ; Сохранить rl4 в ; Сохранить rl5 в | стеке стеке | | | | pop pop ret | rl5 rl4 | ; Восстановить rl5 из стека ; Восстановить г14 из стека ; Возврат из подпрограммы | |
RCALLk Относительный вызов подпрограммы Операция | STACK = | PC + 1; PC = PC + k + 1; SP = | SP- 2 (3) | | | | Код операции | 1101 kkkk kkkk kkkk | | | | | 1 слово (2 байта) | Операнды | -2047 <k< 2047 | Описание | Относительный вызов подпрограммы. Выполняет переход к подпрограмме, адрес которой получается сложением содержимого счетчика команд с константой к. Адрес следующей за RCALL команды (2 или 3 байта) сохраняется в стеке. На практике вместо числовых значений смещения указываются метки подпрограмм (см. пример) | Регистр SREG | I | T | H | S | V | N | Z | С | - | - | - | - | - | - | - | - | Число тактов | 3(в моделях с PC < 16 битов) 4(в моделях с PC > 16 битов) | | rcall routine ; Вызвать подпрограмму | | | Пример | routine push | rl4 | ; Сохранить | rl4 | | | | | pop ret | rl4 | ; Восстановить rl4 ; Возврат из подпрограммы | | | 0 ... 70 71 72 73 74 75 76 ... 195
|
|