Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс. e-mail:jobsmp@pochta.ru |
Divide 8 bits in W by the constant value 3
By: Andy Warren From: http://www.myke.com/basic.htman 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 3movwf Dividend
clrf QuotientDiv3_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 Stopaddwf 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_Donesubwf Quotient, f ; Quotient = Quotient-(Dividend / 4)
goto Div3_Loop
Div3_Done
movf Quotient, w ; Return the Quotient
return