;*********************************************** ;Floating point division of two unsigned integer ;8 bit variables ; ;Input: AARGB0 - dividend (nominator) ; BARGB0 - divisor (denominator) ;Output: ; AEXP, AARGB0, AARGB1 - quotient ; (MICROCHIP format - AN575) ; w = 0 on success ; w = 1 error: divide by zero ;Temporaries: ; BARGB1 ; ;RAM - 5 bytes ;ROM - 41 words ;Speed - 7+4+8*10-2+5+14*25-2+4+3 = 449 instruction ; cycles worst case (including call and return) ;*********************************************** fdiv24_8_8 mov W, BARGB0 snb Z retw #1 ;divide by zero clr AEXP mov W, AARGB0 snb Z retw #0 ;zero result ;loop to use all 8 bits of dividend (integer 8 by 8 divide) mov AARGB1, W clr BARGB1 mov W, #$08 mov AARGB0, W ;aargb0 is used as loop counter fdiv24_8_8b rl AARGB1 rl BARGB1 mov W, BARGB0 mov W, BARGB1-w snb C mov BARGB1, W decsz AARGB0 jmp fdiv24_8_8b rl AARGB1 ;aargb1 is the integer quotient so far ;loop to fill all the bits of 16bit mantissa clr AARGB0 mov W, #$8E mov AEXP, W clrb C fdiv24_8_8c rl BARGB1 mov W, BARGB0 sb C ;check carry (9th bit) jmp fdiv24_8_8d sub BARGB1, W setb C jmp fdiv24_8_8e fdiv24_8_8d mov W, BARGB1-w snb C mov BARGB1, W fdiv24_8_8e rl AARGB1 rl AARGB0 dec AEXP sb AARGB0.7 jmp fdiv24_8_8c clrb AARGB0.7 ;replace explicit msb with sign retw #0 ;*********************************************** ; Nikolai http://techref.massmind.org/member/NG--944
file: /Techref/scenix/lib/math/div/8by8to24fp-ng_sx.htm, 2KB, , updated: 2004/6/10 13:40, local time: 2024/11/5 13:42,
owner: NG--944,
18.118.128.210:LOG IN ©2024 PLEASE DON'T RIP! THIS SITE CLOSES OCT 28, 2024 SO LONG AND THANKS FOR ALL THE FISH!
|
©2024 These pages are served without commercial sponsorship. (No popup ads, etc...).Bandwidth abuse increases hosting cost forcing sponsorship or shutdown. This server aggressively defends against automated copying for any reason including offline viewing, duplication, etc... Please respect this requirement and DO NOT RIP THIS SITE. Questions? <A HREF="http://sxlist.com/techref/scenix/lib/math/div/8by8to24fp-ng_sx.htm"> SX Microcontroller Math Method - Divide 8 bit int by 8 bit to 24 bit float (AN575)</A> |
Did you find what you needed? |
Welcome to sxlist.com!sales, advertizing, & kind contributors just like you! Please don't rip/copy (here's why Copies of the site on CD are available at minimal cost. |
Ashley Roll has put together a really nice little unit here. Leave off the MAX232 and keep these handy for the few times you need true RS232! |
.