Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

На 3 на АСМе для PICa(+)

Отправлено =L.A.= 29 мая 2007 г. 12:05
В ответ на: Деление на 3, 5, 7 - вроде пробегал сдесь хитрый способ быстрого целочисленного деления? Подскажите плз.) отправлено <font color=gray>делитель</font> 29 мая 2007 г. 11:50


Divide 8 bits in W by the constant value 3
By: Andy Warren From: http://www.myke.com/basic.htm

an algorithm from Andy Warren for dividing a positive value by three, by knowing that divide by three can be represented by the series:

x/3 = x/2 - x/4 + x/8 - x/16 + x/32 - x/64...

The code to implement this is:


Div3: ; Divide Contents of "w" by 3

movwf Dividend
clrf Quotient

Div3_Loop ; Loop Until the Dividend == 0

bcf STATUS, C
rrf Dividend, f ; Dividend /2 (ie "x/2" in Series)
movf Dividend, w ; Is it Equal to Zero?
btfsc STATUS, Z
goto Div3_Done ; If it is, then Stop

addwf Quotient ; Add the Value to the Quotient

rrf Dividend, f ; Dividend /2 (ie "x/4" in Series)
movf Dividend, w
btfsc STATUS, Z
goto Div3_Done

subwf Quotient, f ; Quotient = Quotient-(Dividend / 4)

goto Div3_Loop

Div3_Done

movf Quotient, w ; Return the Quotient

return



Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 89:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru