8-bit Divide
From Nesdev wiki
The following code divide two 8-bit integers (range 0...255) and outputs a 16-bit result using only real calculation, no lockup table so the size of the code is very small.
;8-bit divide
;by Bregalad
;Enter with A = Dividend, Y=Divisor
;Output with YA = (1/256)*(A/Y)
Division
sta Dvd ;Stores divident
sty Dvs ;Stores divisor
lda #$00
sta Res ;Clear result
ldy #$10 ;The loop is for 16-bit result
- asl Dvd
rol A ;Shift divisor in 1 bit
cmp Dvs ;Check if fractional dividend is greater than divisor
bcc +
sbc Dvs ;Substract (C is always set)
+ rol Res ;Shift result (1 if substation was done, 0 otherwise)
rol Res2
dey
bne -
lda Res
ldy Res2
rts