НОВОЕ В БЛОГАХ
rmm
Все относительно
rmm - 5 Ноября
rmm
О пребывании в психиатрической больнице N1
rmm - 5 Ноября
Sana
Back up!
Sana - 9 Августа
rmm
"Я стар и беден, и я груб
rmm - 26 Июня
rmm
У Вятки, или же Перми
rmm - 26 Июня
мирт
ДЕНЬ РОССИИ
мирт - 12 Июня
мирт
Рита Ельцова
мирт - 8 Июня
Pa-ha
Нейросети
Pa-ha - 7 Июня
мирт
Встречи
мирт - 5 Июня
мирт
день победы
мирт - 10 Мая
Sana
Администратор
Рейтинг:
2732
Сообщений:
27,051
Пользователь:
1
На сайте с:
Сен 2004
Из:
Саяногорск
15 Декабря 2004, 13:20 | Оценка: нет оценки
КОД

mpy clrf byte0   //очищаем регистры отведенные под резултьтат, первый
clrf byte1   //очищаем регистры отведенные под резултьтат, второй
clrf byte2   //очищаем регистры отведенные под резултьтат, третий
clrf byte3   //очищаем регистры отведенные под резултьтат, четвертый (результат 32 разряда)
movlw 16     //загружаем в регистр w константу 16 (столько будет проходов цикла, для умножения 2х 16 разрядных чисел)
movwf count,W  //выгружаем регистр w в регситр count (в нем и будет вестись счетчик проходов цикла)
bcf STATUS,C  //сбрасываем флаг переноса
loop rrf mulplr_H,F  //начинаем цикл,двигаем вправо старшие разряды множителя через флаг перноса
rrf mulplr_L,F  //двигаем вправо младшие разряды множителя
   //резултат - имеем сдвинутое на разряд вправо 16-ричное число в расположенное в 2 х регистрах
btfsc STSTUS,C  //проверяем флаг переноса
call summ  //если он равен 1 то вызываем процедуру суммирования
rrf byte3,F  //сдвигаем вправо разряды резултата через флаг переноса, аналогично множителю - сначала старшие (четвертый байт)
rrf byte2,F  //сдвигаем третий байт
rrf byte1,F  //сдвигаем второй байт
rrf byte0,F  //ну и первый. результат - двигаем вправо на разряд всё 32 разрядное число расположенное в 4-х регистрах
decfsz count,F  //декремент (вычитаем единицу) из регистра count и проверяем не равен ли регистр нулю
goto loop  //если count не равен нулю (пока не равен) повторяем цикл c метки loop
retlw 0    //выходим из процедуры...

summ   bcf STATUS,DC  //процедура суммирования, cбрасываем флаг переноса разряда
movf mulcnd_L,W          //загружаем младшие разряды множимого в W
addwf byte2, F  //cуммируем младший байт множителя, с первым (младшим) байтом результата (byte0)
//--------------------------------------------------------------------------------------------------
//Из документации не понятно, учитывает ли команда addwf флаг переноса разряда автоматически,
//тоесть учитывается ли в суммировании перенесенный разряд, из предудущей операции,
//если нет, то тут надо вписать следующий кусок:

btfsc STATUS,DC
incf byte3,F

//--------------------------------------------------------------------------------------------------
movf mulcnd_H,W //загружаем старшие разряды множимого в W
addwf byte3,F  //cуммируем старший байт множителя, с четвертым байтом результата (byte3)
retlw 0   //выход из процедуры суммирования...

Правда я абcолютно не уверен, что она правильная, и что она будет работать... но попытаться можно...

Комментарии:
mulplr_L - младший байт множителя
mulplr_H - старший байт множителя

mulcnd_L - младший байт множителя
mulcnd_H - старший байт множителя

byte0-byte3 - четыре байта результата

summ - процедура суммирования 16 разрядных чисел...

Вот в общем то и всё... - сдеално по аналогии с исходным кодом, возможно где то ошибся... biggrin.gif
Сообщение отредактировал Sana - 15 Декабря 2004, 13:54
Саяногорск инфо - Саяногорский городской сайт
ICQ: 215340073 | e-mail: admin@sayanogorsk.info | Skype / Telegram: mrSana19
Саяногорск Инфо - bybit.jpeg, Скачано: 3954
natinn
Симпатичная
Рейтинг:
962
Сообщений:
2,450
Пользователь:
7
На сайте с:
Сен 2004
Из:
Саяногорск-Шарыпово
15 Декабря 2004, 13:24 | Оценка: нет оценки
Sana , спасибки те большое!!!!
С большой грудью легче быть счастливой!!!

Мне плевать, что Вы обо мне думаете. Я о Вас вообще не думаю. (с)Chanel
Kodo
Исполнительный директор
Рейтинг:
0
Сообщений:
1,025
Пользователь:
92
На сайте с:
Дек 2004
Из:
Санкт-Петербург
15 Декабря 2004, 16:54 | Оценка: нет оценки
natinn
С тебя ящик пива smile.gif. Это я в защиту Саниных интересов говорю... biggrin.gif
Не ошибается только тот, кто ничего не делает (да и тот ошибается smile.gif )
natinn
Симпатичная
Рейтинг:
962
Сообщений:
2,450
Пользователь:
7
На сайте с:
Сен 2004
Из:
Саяногорск-Шарыпово
15 Декабря 2004, 19:46 | Оценка: нет оценки
Kodo , ну я уж сама разберусь, что мне Sana поставить!!!
С большой грудью легче быть счастливой!!!

Мне плевать, что Вы обо мне думаете. Я о Вас вообще не думаю. (с)Chanel
Kodo
Исполнительный директор
Рейтинг:
0
Сообщений:
1,025
Пользователь:
92
На сайте с:
Дек 2004
Из:
Санкт-Петербург
16 Декабря 2004, 09:05 | Оценка: нет оценки
natinn
Ладно, не обижайся... Это я так...
Не ошибается только тот, кто ничего не делает (да и тот ошибается smile.gif )
3 чел. читают эту тему (3 Гостей и 0 Скрытых Пользователей)
Похожие темы
Автор темы