[an error occurred while processing this directive]
Ответ:
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено ВН 20 мая 2003 г. 17:08
В ответ на: Спасибо! очень похоже на правду - как и рекомендовано два по раза по 16 делению. отправлено Видимо поделивший :) 20 мая 2003 г. 16:31

Чтобы уж окончательно прояснить.
Делимое: unsigned long dividend=dendh*65536+dendl.
dendh - старшие 16 разрядов делимого, dendl- соответственно младшие.
Делитель: unsigned short divisor.
Результат: unsigned long result=[dividend/divisor]=
[(dendh*65536+dendl)/divisor]=[dendh/divisor]*65536+[((dendh%divisor)*65536+dendl)/65536]. [] -целая часть, %-остаток.
Таким образом старшие 16 разрядов результата (частного)=[dendh/divisor].
Для вычисления [dendh/divisor], dendh%divisor образуется long, младшие 16 которого=dendh, старшие =0. И этот long делится. Это по сути деление 16 на 16.
Младшие 16 частного =[((dendh%divisor)*65536+dendl)/65536].
Что на словах выглядит так: младшие 16 разрядов частного получаются делением еще одного long'a на исходный делитель. Младшие 16 разрядов этого long'a равны младшим 16 исходного делимого, а старшие 16 разрядов - остаток от деления старших 16 разрядов исходного делимого. Это второе деление - уже 32 на 16.
Дело в том, что парочка:
rpt #15
subc smem,A(B)
(или 16 штук subc) уже выполняет деление 32 на 16, но с 16 разрядным результатом, т.е. ограничение - старшие 16 разрядов делимого должны быть меньше делителя. Иначе частное не влезет в 16 разрядов. Частное, кстати, в младших 16 A, остаток в старших.
Собственно деление 16 на 16 с помощью этой парочки - делимое должно быть в младших 16 разрядах.
Вот и все.


Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru