|
|
8(495)909-90-01
8(964)644-46-00
pro@sio.su
|
|
Раздел: Документация0 ... 65 66 67 68 69 70 71 ... 195 FMULS Rd, Rr Умножение дробных чисел со знаком Операция | Rl:RO = (RdxRr)«l | Код операции | 00000011 | lddd Оггг | | | | | 1 слово (2 байта) | Операнды | 16<d<23,16<r<23 | Описание | Осуществляет умножение дробных чисел со знаком, находящихся в регистрах Rd и Rr. Формат чисел — 1.7 (старший бит — целая часть, 7 младших битов — дробная). Результат умножения (формат результата — 2.14) сдвигается влево на один бит для приведения к формату 1.15 и заносится в регистровую пару R1:R0. Обратите внимание, что результат умножения 0x80 (-1) на 0x80 (-1) равен 0x8000 (-1). Поэтому при сдвиге возникнет переполнение дополнительного кода, которое необходимо отслеживать и обрабатывать программно | Регистр SREG | I | Т | Н | S | V | N | Z | С | - | - | - | - | - | - | о | о | Число тактов | 2 | Пример | fmuls r23,r22 movw r23:r22,rl:r0 | ; Умножить г23 и г22 ; Скопировать результат обратно ; в г23:г22 |
FMULSU Rd, Rr Умножение дробного беззнакового числа и дробного числа со знаком Операция | Rl:R0 = (RdxRr) «1 | Код операции | 00000011 ldddlrrr | | | | | 1 слово (2 байта) | Операнды | 16<d<23,16<r<23 | Описание | Осуществляет умножение дробных чисел, находящихся в регистрах Rd (число со знаком) и Rr (число без знака). Формат чисел — 1.7 (старший бит — целая часть, 7 младших битов — дробная). Результат умножения (формат результата — 2.14) сдвигается влево на один бит для приведения к формату 1.15 и заносится в регистровую пару R1:R0 | Регистр SREG | I | Т | н | S | V | N | Z | С | - | - | - | - | - | - | о | о | Число тактов | 2 | Пример | fmulsu r23,r22 rrovw r23:r22,rl:r0 | ; Умножить г23 и г22 ; Скопировать результат обратно ; в r23:R22 |
ICALL Косвенный вызов подпрограммы Операция | STACK = | PC + 1; PCI15..0] = Z, PQ21..16] = 0; SP | = SP- 2 (3) | | Код операции | 1001 0101 0000 1001 | | | | | 1 слово (2 байта) | Операнды | Нет операндов | Описание | Косвенный вызов подпрограммы. Выполняет переход к подпрограмме, адрес которой находится в регистре Z. Адрес следующей за ICALL команды (2 или 3 байта) сохраняется в стеке. Область действия команды — младшие 128 Кбайт памяти программ | Регистр SREG | I | T | H | S | V | N | Z | С | - | - | - | - | - | - | - | - | Число тактов | 3(в моделях с PC < 16 битов) 4(в моделях с PC > 16 битов) | Пример | mov r30,r0 icall | ; Задать смещение ; Вызвать подпрограмму, адрес которой ; находится в регистрах г31:г30 |
IJMP Косвенный переход Операция | PQ15..0] | = Z, РС[21..16] = 0 | | | | | Код операции | 10010100 0000 1001 | | | | 1 слово (2 байта) | Операнды | Нет операндов | Описание | Косвенный безусловный переход. Выполняет переход по адресу, находящемуся в регистре Z. Область действия команды — младшие 128 Кбайт памяти программ | Регистр SREG | I | Т | Н | S | V | N | Z | С | - | - | - | - | - | - | - | - | Число тактов | 2 | Пример | mov ijmp | r30,r0 ; Задать смещение ; Перейти по адресу г31:г30 | |
IN Rd, А Пересылка значения из РВВ в РОН Операция | Rd = 1/0(А) | Код операции | 1011 OAAd dddd АААА | | | | 1 слово (2 байта) | Операнды | 0<d < 31,0< А<63 | Описание | Пересылает содержимое регистра ввода/вывода А в регистр общего назначения Rd | Регистр SREG | I | T | н | S | V | N | Z | С | - | - | - | - | - | - | - | - | Число тактов | 1 | Пример | in r25,$16 cpi r25,4 breq exit | ; Прочитать ; Сравнить ; Перейти, | содержимое порта В содержимое с константой если г25 = 4 | | | exit: | | | | | | | |
INCRd Инкрементирование РОН Операция | Rd = Rd + 1 | Код операции | 1001 010d dddd 0011 1 слово (2 байта) | Операнды | 0 d 31 | Описание | Увеличивает содержимое регистра Rd на единицу. Так как эта команда не влияет на флаг переноса С, она идеально подходит для организации счетчика числа итераций цикла при выполнении вычислений над многобитными числами. При работе с беззнаковыми числами для выполнения перехода в соответствии с результатом выполнения команды могут использоваться только команды условного перехода BREQ и BRNE. При работе с числами в дополнительном коде могут использоваться все команды условного перехода для знаковых проверок. Флаг V устанавливается в 1 только в том случае, если до выполнения операции в регистре находилось значение $7F | Регистр SREG | I Т Н S V N Z С | — — — о о о о — | Число тактов | 1 | Пример | clr г22 ; Очистить регистр г22 loop: inc r22 ; r22 = г22 + 1 cpi r22,$4F ; brne loop ; Продолжать цикл, если r22 * $4F | 0 ... 65 66 67 68 69 70 71 ... 195
|
|