ON 20040518@2:16:29 PM at page: http://www.piclist.com/techref/microchip/math/radix/bp2b-2d8b.htm#38125.5947800926 Silvan Minghetti[SM-bluewin-9A7] Code:
<pre> ; ========================================================== ; From: Scott Dattalo ; ; This version saves one cycle. ; swapf bcd, W andlw 0x0F ; W=tens movwf temp addwf temp, W ; W=2*tens addwf temp, F ; temp=3*tens (note carry is cleared) rlf temp, W ; W=6*tens subwf bcd, W ; W = 16*tens+ones - 6*tens ; ========================================================== ; From: Silvan Minghetti ; ; Does not require an additional temp register, but trashes ; the content of the bcd register. ; ; Expects bcd value in 'bcd', returns binary value in WREG. ; To return the binary value in 'bcd', change the last line ; to subwf bcd, F ; swapf bcd, F rlf bcd, W andlw b'00011110' ; WREG = tens * 2 swapf bcd, F subwf bcd, F ; bcd = (tens * 16) - (tens * 2) + ones subwf bcd, F ; bcd = (tens * 14) - (tens * 2) + ones subwf bcd, W ; WREG = (tens * 12) - (tens * 2) + ones ; ========================================================== ; From: Scott Dattalo ; ; The upper method adapted for the PIC18 Family, saves one ; more cycle. ; swapf bcd, W andlw 0x0F ; W= tens rlncf WREG, W ; W= 2*tens subwf bcd, F ; 16*tens + ones - 2*tens subwf bcd, F ; 14*tens + ones - 2*tens subwf bcd, W ; 12*tens + ones - 2*tens </pre>ON 20040519@11:53:04 AM at page: http://www.piclist.com/techref/microchip/math/radix/bp2b-2d8b.htm# James Newton[JMN-EFP-786] edited the page. Difference: http://www.piclist.com/techref/diff.asp?url=H:\techref\microchip\math\radix\bp2b-2d8b.htm&version=1