Авторизация


...

Кто на сайте?

Сейчас 118 гостей и ни одного зарегистрированного пользователя на сайте

Статистика

-Посетители : 25302
-Материалы : 210

Пользователь сайта продает...

  PIC18F25K22

Пользователь сайта покупает...

Умножение константы 0xFFFF на байт

Автор: Александр Милевский Просмотров: 3036

 

 

Однобайтное число не может быть равно 0. Это проверялось до вычисления.  Если запустить стандартную, известную мне, процедуру умножения, то это от 100 до 200 машинных тактов Меня это не устраивало.

На Си программист обычно не думает об этой мелочи, всего одна строчка и пусть компилятор разбирается.

Забегу вперед, процедура на ассемблере заняла всего 7 тактов, что меня сильно порадовало.

Результат умножение двух байтного числа на однобайтное это максимум трехбайтная переменная. Назовем её REZYLTAT. Множитель – REG.

 Так как на ноль не умножаем. То  в REZYLTAT должно быть при умножении на 1 число 0x00FFFF. Если подумать, то просматривается простая закономерность. Для умножения надо вычесть 1 из REG  и переписать в старший байт REZYLTAT  и из младшего байта REZYLTAT вычесть это же число. Все. Очень просто. Вот текст.

; определим переменные 
REZYLTAT :3    
REG
; умножение  константы 0xFFFF на REG ( REG не равен 0)
       movlw  0xFF          ; запишем 0xFF
       movwf  REZYLTAT +1   ; в средний байт 
       movwf  REZYLTAT      ; в  младший байт
       decf   REG           ; отнимем 1 из множителя
       movf   REG,W         ; и запишем результат 
       movwf  REZYLTAT +2   ; в старший байт 
       subwf  REZYLTAT      ; отнимем из младшего байта
       return    

ну и полный вариант, REG любое число

; умножение  константы 0xFFFF на байт
       movf   REG,W         ; проверяем на нуль
       btfsc  STATUS,Z
       goto   ZERO          ; результат умножения ноль 
       movlw  0xFF          ; запишем 0xFF
       movwf  REZYLTAT +1   ; средний байт
       movwf  REZYLTAT      ; младший байт
       decf   REG           ; отнимем 1 из множителя
       movf   REG,W         ; и запишем результат 
       movwf  REZYLTAT +2   ; в старший байт
       subwf  REZYLTAT      ; отнимем из младшего байта
       return    
ZERO   clrf   REZYLTAT
       clrf   REZYLTAT+1
       clrf   REZYLTAT+2
       return

данный алгоритм отлично походит при умножении одного байта  на любую константу  0xFFF….FFF с минимальными изменениями текста программы

Случайные статьи....

Prev Next

Устройство бесконтактного управления с использованием карт RFID 125 кг…

07-02-2016 Иван Шевченко (R1ZK)

Устройство бесконтактного управления с использованием карт RFID 125 кгц.

  Хотя устройство и предназначено для бесконтактного включения/выключения освещения объекта с применением карт (брелоков) доступа RFID, с успехом можно   применять не только в промышленности, но и в быту, в том числе и для   ограничения доступа вкл/откл  оборудования.  Автор...

Вариант создания клавиатуры без прерываний

19-02-2011 Александр Милевский

Вариант создания клавиатуры без прерываний

Как известно, управление индикатором на основе HD44780, ведется по шине данных. Это 8 или 4 занятых порта контроллера. Практически все время «простаивают». Вот и подумал, чем бы их еще занять. После копаний в Интернете родился вариант «для меня» универсальной клавиатуры, которым...

Измеритель LC на PIC18F2550 с USB.

04-02-2012 Super User

Измеритель LC на PIC18F2550 с USB.

  Емкость конденсаторов является одной из основополагающих величин, которые учитываются при расчете электрических схем. Эта величина для плоского конденсатора рассчитывается по его геометрическим размерам и типу диэлектрика между пластинами. Емкость произвольного конденсатора можно измерить прибором или подключить в сеть переменного тока.  ...

Программирование c нуля в AVRStudio 5 (ч.6)

02-04-2012 Радик

Программирование c нуля в AVRStudio 5 (ч.6)

Для того чтобы писать более сложные программы, нужно хорошо представлять структуру и взаимодействие разных узлов микроконтроллера между собой, но основные принципы сохраняются независимо от модели контроллера. В принципе, человек, который изучил микроконтроллеры PIC, достаточно быстро осваивает AVR или ARM.Управление микроконтроллером...


Все права принадлежат ChipMK.ru. При копировании материала ссылка обязательна. 2011-2017 © ChipMK.ru

ChipMk.ru Яндекс.Метрика
PRCY.ru