[an error occurred while processing this directive]
|
то можно предложить сделать умножение, целого числа на дробное и посмотреть на результат. Естесственно, аккумулятор должен иметь в два раза большую разрядность. Так вот, в старшем разряде аккумулятора, после "удаления" второго знакового бита сдвигом влево(в ADSP - "dis m_mode"), окажется целочисленный результат. Который, впрочем, можно рассматривать и как дробный, если оба числа Вы представляете как дробные. Никаких тонкостей здесь нет - простейшая сдвиговая арифметика.
Смысл такой - умножая таким образом одно число на другое, Вы сначала умножаете первое целочисленно на второе, а потом результат делите на 32768(для 16-битных знаковых чисел).
Для примера - умножение на число 0.2 это то же самое, что умножение на 6553 и последующее деление(сдвигом ;)) на 32768. Запишите число 6553 и переведите его в дробный вид 1.15 - будет как раз 0.2.
Для 1.31 соображения те же.
Таким образом входной отсчет может представляться целочисленно, а результат берите из старшей половины аккумулятора после сдвига влево.
PS извините за сбивчивое описание - что на ум пришло ;)
E-mail: info@telesys.ru