diff lib/alib/div8x8.as @ 2783:03f26e88b809 lwtools-port

Renamed files and setup for lwasm/lwlink work
author Boisy Pitre <boisy.pitre@nuance.com>
date Sat, 26 Jan 2013 17:18:24 -0600
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/alib/div8x8.as	Sat Jan 26 17:18:24 2013 -0600
@@ -0,0 +1,81 @@
+*********************************
+* 8 x 8 Divide
+
+* OTHER MODULES NEEDED: none
+
+* ENTRY: A = divisor
+*        B = dividend
+
+*  EXIT: A = remainder
+*        B = quotient
+
+ nam 8x8 bit Divide
+ ttl Assembler Library Module
+
+
+ section .bss
+negcount rmb 1
+ endsect
+
+ section .text
+
+* Signed Divide
+SDIV88:
+ clr negcount,u
+ PSHS D
+ tst ,s
+ bpl testquo
+ lda ,s
+ coma
+ inca
+ sta ,s
+ inc negcount,u
+testquo
+ tst 1,s
+ bpl ok
+ ldd 1,s
+ coma
+ adda #$01
+ std 1,s
+ inc negcount,u
+ok
+ puls d
+ bsr DIV88
+ dec negcount,u
+ bne goforit
+ pshs d
+ lda ,s
+ coma
+ inca
+ sta ,s
+ lda 1,s
+ coma
+ inca
+ sta 1,s 
+ puls d
+goforit
+ rts
+
+
+DIV88:
+ PSHS A save divisor
+ LDA #8 bit counter
+ PSHS A
+ CLRA initialize remainder
+
+div1
+ ASLB shift dividend & quotient
+ ROLA
+ CMPA 1,S trial subtraction needed
+ BLO div2
+ SUBA 1,S
+ INCB
+
+div2
+ DEC 0,S count down # of bits
+ BNE div1
+ LEAS 2,S clean up stack
+ RTS
+
+ endsect
+