НОВОЕ В БЛОГАХ
  • Мошенники жгут
    Dezz13 - 19:55
  • Баян
    Max - 19:13
  • ПРЕДНОВОГОДНЯЯ АКЦИЯ! Временная
    Жанна Викторовна - 17:10
  • Оригинальный мужской подарок.
    Машуня - 05 дек.
  • Штаб Деда Мороза , мини студия.
    Светлая - 05 дек.
  • Твой новогодний образ - какой он? Петух? Курица?
    Жанна Викторовна - 03 дек.
  • Стешок
    Dimmas - 30 ноя.
  • Индийский Болливуд отдыхает.
    Северянин - 28 ноя.
  • О, мой Бог!!! (улыбнуло).
    Yurianna - 28 ноя.
  • вектор, Illustrator
    E-moll - 27 ноя.
Администратор
Рейтинг:
2352
Сообщений:
17,439
На сайте с:
07.09.2004
Из:
Саяногорск
Пользователь №:
1
КОД

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: mrSana19
Здесь я инвестирую деньги
Симпатичная
Рейтинг:
948
Сообщений:
2,408
На сайте с:
10.09.2004
Из:
Саяногорск-Шарыпово
Пользователь №:
7
Sana , спасибки те большое!!!!
С большой грудью легче быть счастливой!!!

Мне плевать, что Вы обо мне думаете. Я о Вас вообще не думаю. (с)Chanel
Исполнительный директор
Рейтинг:
0
Сообщений:
1,025
На сайте с:
04.12.2004
Из:
Красноярск
Пользователь №:
92
natinn
С тебя ящик пива smile.gif. Это я в защиту Саниных интересов говорю... biggrin.gif
Не ошибается только тот, кто ничего не делает (да и тот ошибается smile.gif )
Симпатичная
Рейтинг:
948
Сообщений:
2,408
На сайте с:
10.09.2004
Из:
Саяногорск-Шарыпово
Пользователь №:
7
Kodo , ну я уж сама разберусь, что мне Sana поставить!!!
С большой грудью легче быть счастливой!!!

Мне плевать, что Вы обо мне думаете. Я о Вас вообще не думаю. (с)Chanel
Исполнительный директор
Рейтинг:
0
Сообщений:
1,025
На сайте с:
04.12.2004
Из:
Красноярск
Пользователь №:
92
natinn
Ладно, не обижайся... Это я так...
Не ошибается только тот, кто ничего не делает (да и тот ошибается smile.gif )
Похожие темы Автор темы
Уж оч оч нужоная прога mad_g_max
1 чел. читают эту тему (1 Гостей и 0 Скрытых Пользователей)

наверх