Mercurial > hg > Members > kono > nitros9-code
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 +