По трем командам регистровых операций с мнемокодами MUL Rd, Rг MULS Rd, Rr и MULSU Rd, Rr (№№ 120, 121 и 122) выполняется операция умножения, в которой участвует целые числа без знака (MUL), целые числа со знаком (MULS) и целое число со знаком и целое число без знака (MULSU). При выполнении операции формируются значения признаков результата С и Z (С = R1.7, Z = 1, если после выполнения операции (R1) = 0 и (R2) = 0).
По трем командам регистровых операций с мнемокодами операции FMUL, FMULS и FMULSU (№№ 123, 124, 125) выполняется операция умножения с увеличением результата в два раза, в которой участвуют дробные числа без знака (FMUL), дробные числа со знаком (FMULS) и дробное число со знаками и дробное число без знака (FMULSU). Операнды имеют формат 1.7, а результат — формат 1.15, где справа от точки указано число дробных разрядов. При выполнении операции формируются значения признаков результата С и Z (С — результат сдвига влево кода произведения, Z = 1, если после выполнения операции (R1) = 0 и (R0) = 0.)
Машинные коды команд №№ 120—125 имеют формат "слово". Команды выполняются за два такта с использованием аппаратного умножителя.
По командам с мнемокодами JMP k (№ 126) и CALL к (№ 127) совершаются безусловный переход и безусловный переход с возвратом в пределах всего адресного пространства FlashROM. Машинные коды этих команд имеют формат "2 слова". Команды выполняются за 3 JМР) и 4 (CALL) такта.
По командам пересылочных операций с обращением к FlashROM с мнемокодами LPM Rd, Z и LPM Rd, Z+ (№№ 128, 129) выполняется операция пересылки (копирования) константы из половины ячейки FlashROM в любой регистр общего назначения. До выполнения команды необходимо адрес, соответствующий ячейке памяти, в которой хранится константа, умножить на 2 и записать в пару регистров Z. Если требуется прочитать байт из старшей половины ячейки, к числу, код которого записан в паре регистров Z, необходимо добавить 1.
При выполнении команды с мнемокодом LPM Rd, Z+ после пересылки байта число, код которого хранится в паре регистров Z, увеличивается на 1 аппаратно.
Машинные коды команд №№ 128 и 129 имеют формат "с юво". Команды выполняются за 3 такта.
По команде с мнемокодом ELPM (№ 130) выполняется пересылка Константы из половины ячейки FlashROM в регистр R0 (см. команду № 62). В микроконтроллере типа ml03 FlashROM содержит 64 К ячеек памяти. Для размещения старшего разряда кода после умножения на 2 используется разряд RAMPZ0 регистра RAMPZ (№ $ЗВ). Машинный код команды имеет формат "слово". Команда выполняется за 3 такта.
Команда с мнемокодом SPM (№ 131) предназначена для записи байтов в FlashROM в процессе выполнения программы. При выполнении команды используется регистр управления SPMCR (№ $37) и пара регистров Z.
С использованием команды с мнемокодом SPM выполняются следующие операции:
1) пословное заполнение буферного запоминающего устройства (BUF) емкостью 64X16 бит;
2) стирание в FlashROM страницы — группы из 64-х ячеек;
3) перепись 64-х слов из буферного ЗУ в "очищенную" страницу FlashROM.
Для задания номера ячейки в буферном ЗУ используются разряды Z6—Z1 в паре регистров Z. Для задания номера страницы (начального адреса в странице) используются разряды Z13—Z7 в парс регистров Z.
Выбор операции, выполняемой по команде с мнемокодом SPM, определяется кодом, который до выполнения команды SPM, но не ранее, чем за 4 такта до ее выполнения, записывается в регистр SPMCR. Коды, записываемые в регистр SPMCR, и операции, выполняемые при этом по команде SPM, указаны в табл. 15.
Таблица 15
(SPMCR) | Операция |
$01 | |
$03 | ------------------------------------- |
$05 | ------------------------------------- |
$09 |
При (SPMCR) = $01 по команде SPM слово, ранее записанное в пару регистров R1, R0, пересылается (копируется) в ячейку буферного ЗУ, номер которой указан в разрядах с шестого по первый в паре Z регистров общего назначения. Буферное ЗУ может заполняться в произвольном порядке.
При (SPMCR) = $03 происходит стирание группы ячеек в FlashROM с номерами в двоичном коде от Z.13, ..., Z.7, 0, 0, 0, 0, 0, 0, X до Z.13, .... Z.7, 1, 1, 1, 1, 1, 1, X.
При (SPMCR) = $05 происходит перепись 64-х слов из буферного ЗУ в ранее стертую страницу FlashROM.
При (SPMCR) = $09 производится установка битов защиты (Lock Bits) BLB12, BLB11, BLB02 и BLB01, которые разрешают/запрещают выполнять запись в FlashROM с использованием команды SPM и чтение из FlashROM с использованием команды LPM.
Литература
1. Тавернье К. PIC-микроконтроллеры. Практика применения: Пер. с фр. -М: ДМКПресс, 2008. - 272 с.: ил. (Серия «Справочник»).
2. Борзенко А.Е. IBM PC: устройство, ремонт, модернизация. – 2-е изд. перераб. и доп. – М.: ТОО фирма «Компьютер Пресс», 2006. – 344с.: ил.
3. Цифровые интегральные микросхемы: Справ./М. И. Богданович, И.Н. Грель, В.А. Прохоренко, В.В. Шалимо.–Мн.: Беларусь, 2001. – 493 с.: ил.