реклама на сайте
подробности

 
 
> Операции над большими числами, Операции над большими числами
NickSmith
сообщение Mar 8 2010, 20:23
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 84
Регистрация: 21-10-09
Пользователь №: 53 117



Для программирования DDS синтезатора, мне надо вычислять код частоты..
Исходные:
Есть константа в виде 5050. Далее мне нужно эту константу разделить на 1000 затем полученный результат разделить на 1 умноженную на 2^28
У полученного результата то что будет после запятой округлить в большую сторону..
Как все это выполнить на асме?? Я нашел только стандартные процедуры деления, которые описаны в апнотах. Но у них нет деления для нецелых числе. Точней только для 1 байтных чисел есть..

Подскажите, как бы все это реализовать??
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
NickSmith
сообщение Mar 14 2010, 10:12
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 84
Регистрация: 21-10-09
Пользователь №: 53 117



Имеется формула код фазы = ( a*b )/c где а =значение фазы в градусах, b = 2^12, c = 360 например: (90*4096)/360=1024. Значение фазы у меня хранится в виде 90*10^2.
Далее я 2^12/360 = 11,38. 11,38 я возвожу в 10^2. В итоге у меня получается 900*1138=1024200 и что бы мне привести это к нужному виду, я делю это на 1000..
А можно ли как то это свести к одному действию?? желательно делению...

Сообщение отредактировал NickSmith - Mar 14 2010, 10:13
Go to the top of the page
 
+Quote Post
ae_
сообщение Mar 14 2010, 15:25
Сообщение #3


Участник
***

Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695



Цитата(NickSmith @ Mar 14 2010, 18:12) *
Имеется формула код фазы = ( a*b )/c где а =значение фазы в градусах, b = 2^12, c = 360 например: (90*4096)/360=1024. Значение фазы у меня хранится в виде 90*10^2.
...

360°/4096=0.088, т.е. хранить в 12-bit регистре число градусов 0...360 не выйдет точнее, чем 0.1° (округляем 0.088 в большую сторону до целого десятичного разряда).
Отсюда и формат хранения переменной должен быть не 90*10^2, а 90*10=900, т.е. 0...3599
Далее, надо получить из 900 код 1024, а из 3599->4095. N = 0x91AD
т.е. берёте фазу в виде 0...3599, умножаете на 0x91AD (используя алгоритм беззнакового mul16x16 из appnote), результат (32-bit) сдвигаете влево на один разряд. старшие два байта = код фазы
(900*N)<<1 = 0x2002434<<1 = 0x4004868. отбрасываем младшие 16 бит, получаем 0x400 (1024)
(3599*N)<<1 = 0x7FFFF23<<1 = 0xFFFFE46. -//- получаем 0xFFF (4095)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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 11 2010, 23:52
|- - rx3apf   Цитата(NickSmith @ Mar 12 2010, 02:52) Чт...   Mar 12 2010, 14:03
- - 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   Цитата(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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th August 2025 - 21:45
Рейтинг@Mail.ru


Страница сгенерированна за 0.01447 секунд с 7
ELECTRONIX ©2004-2016