|
Операции над большими числами, Операции над большими числами |
|
|
|
 |
Ответов
|
Mar 11 2010, 23:52
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 21-10-09
Пользователь №: 53 117

|
Что то не получается у меня переделать умножение из апликух, которое "mpy16u" - 16x16 Bit Unsigned Multiplication, что бы оно стало 24х16. Что я не так делаю?? CODE .def mc16uL =r16 ;multiplicand low byte .def mc16uH =r17 ;multiplicand high byte .def mp16uL =r18 ;multiplier low byte .def mp16uH =r19 ;multiplier high byte .def mp16UM=r20 .def m16u0 =r18 ;result byte 0 (LSB) .def m16u1 =r19 ;result byte 1 .def m16u2 =r20 ;result byte 2 .def m16u3 =r21 ;result byte 3 (MSB) .def mcnt16u =r22 ;loop counter
;***** Code
ex: nop;; nop nop ldi mc16ul,low(5050) ldi mc16uh,high(5050) ldi mp16ul,0x31 ldi mp16uh,0xAF ldi mp16um,0x02 ; mpy16u: clr m16u3 ;clear 2 highest bytes of result clr m16u2 ldi mcnt16u,24;init loop counter lsr mp16uH ror mp16uL ror mp16uM
m16u_1: brcc noad8 ;if bit 0 of multiplier set add m16u2,mc16uL;add multiplicand Low to byte 2 of res adc m16u3,mc16uH;add multiplicand high to byte 3 of res
noad8: ror m16u3 ;shift right result byte 3 ror m16u2 ;rotate right result byte 2 ror m16u1 ;rotate result byte 1 and multiplier High ror m16u0 ;rotate result byte 0 and multiplier Low; dec mcnt16u ;decrement loop counter brne m16u_1 ;if not done, loop more rjmp ex
Сообщение отредактировал NickSmith - Mar 11 2010, 23:53
|
|
|
|
|
Mar 12 2010, 14:03
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(NickSmith @ Mar 12 2010, 02:52)  Что то не получается у меня переделать умножение из апликух, которое "mpy16u" - 16x16 Bit Unsigned Мда.. Не понос, так золотуха... Я не понял, надо что, реализовать это чудо на младших представителях семейства AVR, "тиньках" ? Нет ? Тогда на кой, простите, икс, брать _такую_ реализацию ? Есть же на то команда mul. Да, многоразрядное умножение довольно "развесистое", но все ж быстрее, чем цикл, да и компактнее при таких разрядностях. Блин, дал же _готовое_ деление, по регистру прибавить - и больше ничего не надо...
|
|
|
|
Сообщений в этой теме
NickSmith Операции над большими числами Mar 8 2010, 20:23 rx3apf Цитата(NickSmith @ Mar 8 2010, 23:23) Под... Mar 8 2010, 20:39 NickSmith Цитата(rx3apf @ Mar 8 2010, 23:39) Или пл... Mar 8 2010, 20:41  rx3apf Цитата(NickSmith @ Mar 8 2010, 23:41) Не ... Mar 8 2010, 21:19   NickSmith Цитата(rx3apf @ Mar 9 2010, 00:19) Должны... Mar 8 2010, 21:59    rx3apf Цитата(NickSmith @ Mar 9 2010, 00:59) А г... Mar 8 2010, 22:52     NickSmith Цитата(rx3apf @ Mar 9 2010, 01:52) Почему... Mar 9 2010, 10:01 cant Вам нужно не числа сокращать, а формулу. Тобишь оп... Mar 9 2010, 11:04 =GM= Цитата(NickSmith @ Mar 8 2010, 20:23) Ест... Mar 9 2010, 12:28 NickSmith Цитата(=GM= @ Mar 9 2010, 15:28) Поточнее... Mar 9 2010, 13:07  =GM= Как вы вычисляете-то? Что ж из вас ответы клещами ... Mar 9 2010, 17:21   NickSmith Цитата(=GM= @ Mar 9 2010, 20:21) Как вы в... Mar 9 2010, 18:45    rx3apf Цитата(NickSmith @ Mar 9 2010, 21:45) И о... Mar 9 2010, 19:24     NickSmith Цитата(rx3apf @ Mar 9 2010, 22:24) А ... Mar 9 2010, 19:57      =GM= Правильно так: (5050/10^8)*2^28 =0x13BA0000000/0x5... Mar 9 2010, 20:29       NickSmith Цитата(=GM= @ Mar 9 2010, 23:29) Правильн... Mar 9 2010, 21:25        rx3apf Цитата(NickSmith @ Mar 10 2010, 00:25) То... Mar 9 2010, 21:31         NickSmith Цитата(rx3apf @ Mar 10 2010, 00:31) Фигне... Mar 9 2010, 21:33          rx3apf Цитата(NickSmith @ Mar 10 2010, 00:33) А ... Mar 9 2010, 22:55           NickSmith Цитата(rx3apf @ Mar 10 2010, 01:55) Ну ка... Mar 9 2010, 23:03            rx3apf Цитата(NickSmith @ Mar 10 2010, 02:03) Т.... Mar 10 2010, 07:44             NickSmith Цитата(rx3apf @ Mar 10 2010, 10:44) Я уже... Mar 10 2010, 10:48              rx3apf Цитата(NickSmith @ Mar 10 2010, 13:48) Но... Mar 10 2010, 10:56               NickSmith Цитата(rx3apf @ Mar 10 2010, 13:56) Мать-... Mar 10 2010, 11:01                ae_ Цитата(NickSmith @ Mar 10 2010, 19:01) Вс... Mar 10 2010, 15:14                 NickSmith Цитата(ae_ @ Mar 10 2010, 18:14) Если я п... Mar 10 2010, 17:12                  ae_ Цитата(NickSmith @ Mar 11 2010, 01:12) Из... Mar 10 2010, 17:27 _Pasha
ЦитатаПриближение действительного числа рациональ... Mar 10 2010, 01:09 Genadi Zawidowski Цитатаtiny2313
Взяли бы мегу восьмую и писали на W... Mar 10 2010, 06:10 NickSmith С одним вроде как все понятно теперь, но вот тепер... Mar 10 2010, 19:44 rezident Цитата(NickSmith @ Mar 11 2010, 00:44) Чт... Mar 10 2010, 22:49  NickSmith Цитата(rezident @ Mar 11 2010, 01:49) Дык... Mar 11 2010, 00:00 NickSmith Пробовал менять местами множимое и множитель с доб... Mar 12 2010, 11:17 =GM= Поменяйте порядок сдвига, как показано ниже, и буд... Mar 12 2010, 13:31  NickSmith Цитата(=GM= @ Mar 12 2010, 16:31) На буду... Mar 13 2010, 10:10   rx3apf Цитата(NickSmith @ Mar 13 2010, 13:10) Я ... Mar 13 2010, 10:28    NickSmith Цитата(rx3apf @ Mar 13 2010, 13:28) Ну то... Mar 13 2010, 11:09     rx3apf Цитата(NickSmith @ Mar 13 2010, 14:09) Я ... Mar 13 2010, 11:18      NickSmith Цитата(rx3apf @ Mar 13 2010, 14:18) Да та... Mar 13 2010, 11:31 NickSmith Имеется формула код фазы = ( a*b )/c где а =знач... Mar 14 2010, 10:12 ae_ Цитата(NickSmith @ Mar 14 2010, 18:12) Им... Mar 14 2010, 15:25  NickSmith Цитата(ae_ @ Mar 14 2010, 18:25) Далее, н... Mar 14 2010, 23:05   ae_ Цитата(NickSmith @ Mar 15 2010, 07:05) Ог... Mar 15 2010, 00:21   rezident Цитата(NickSmith @ Mar 15 2010, 04:05) А ... Mar 15 2010, 00:23
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|