Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
29.07.2003, 07:33
|
|
Leonardo
Гость
|
Умножение на 4
Как умножитьь 16-битное число на 4 ? Может какая-то хитрость есть ?
|
|
|
|
29.07.2003, 09:33
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,531
Сказал спасибо: 737
Сказали Спасибо 1,927 раз(а) в 799 сообщении(ях)
|
да какая тут хитрость, нафиг... два сдвига влево (только не потеряй два старших бита)
Вот процедура умножения 16бит на 16 бит:
Код:
|
Multiply 16x16 bit macro from Bob Fehrenbach, Scott Dattalo
Posted to PICList Mon Aug 4 10:17:59 1997
;************************************************* ******************
; Double Precision Multiplication
;
; n_2 : n_1 * n_4 : n_3 -› q_4:q_3:q_2:q_1
;
; Standard shift and add.
; Execution time: 215 to 295 clock cycles.
; Code space: 22 locations
;
; Cleaned up and corrected version from Microchip Ap note by BF.
; Note: Ap note has errors! Additional mods by Scott Dattalo.
;
;************************************************* ******************
mpy16b16: macro
local m1, m2
clrf q_4
clrf q_3
clrf q_2
clrf q_1
bsf q_2, 7
m1:
rrf n_2, f
rrf n_1, f
skpc
goto m2
movf n_3, w
addwf q_3, f
movf n_4, w
skpnc
incfsz n_4, w
addwf q_4, f
m2:
rrf q_4, f
rrf q_3, f
rrf q_2, f
rrf q_1, f
skpc
goto m1
endm |
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
|
|
|
|
01.08.2003, 14:22
|
|
Частый гость
Регистрация: 13.05.2003
Сообщений: 32
Сказал спасибо: 0
Сказали Спасибо 17 раз(а) в 17 сообщении(ях)
|
А тоже самое в сях можно?
|
|
|
|
01.08.2003, 19:05
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,531
Сказал спасибо: 737
Сказали Спасибо 1,927 раз(а) в 799 сообщении(ях)
|
моя С не знай
З.Ы. А разве там нельзя определить переменную типа word?
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
|
|
|
|
02.08.2003, 11:17
|
|
Andrew
Гость
|
Сообщение от a2226
|
А тоже самое в сях можно?
|
Что то-же на сях ? Если умножение произвольных чисел, то просто a=b*c, ведь должен-же быть там UINT, а если умножение на 4 сдвигом, то a=b‹‹2; или a‹‹=2;
|
|
|
|
04.08.2003, 10:16
|
|
Частый гость
Регистрация: 13.05.2003
Сообщений: 32
Сказал спасибо: 0
Сказали Спасибо 17 раз(а) в 17 сообщении(ях)
|
Сообщение от Andrew
|
Если умножение произвольных чисел, то просто a=b*c, ведь должен-же быть там UINT, а если умножение на 4 сдвигом, то a=b‹‹2; или a‹‹=2;
|
Я думал чё новенького скажите...
|
|
|
|
05.08.2003, 15:21
|
|
Гость
|
Для a2226
Вы писали:
Цитата:
|
Я думал чё новенького скажите...
|
Похоже Вы не только не асмист, но и не Сист.
|
|
|
|
06.08.2003, 11:46
|
|
Частый гость
Регистрация: 13.05.2003
Сообщений: 32
Сказал спасибо: 0
Сказали Спасибо 17 раз(а) в 17 сообщении(ях)
|
Сообщение от Гость
|
Похоже Вы не только не асмист, но и не Сист.
|
Да, действительно, я на Си перешёл пол года назад...
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 05:54.
|
|