From: Tony Nixon
; ------------------------------------------ ; SUBROUTINE - 24 BIT DIVISION ; numerator: nratorH nratorM nratorL ; denominator: denomH denomM denomL ; ; result: nratorH nratorM nratorL ; remainder: remainH remainM remainL ; divizn movlw .24 movwf BCount movf nratorH,w movwf shiftH movf nratorM,w movwf shiftM movf nratorL,w movwf shiftL clrf nratorH clrf nratorM clrf nratorL ; clrf remainH clrf remainM clrf remainL dloop bcf status,carry rlf shiftL rlf shiftM rlf shiftH rlf remainL rlf remainM rlf remainH movf denomH,w subwf remainH,w btfss status,z goto nochk ; movf denomM,w subwf remainM,w btfss status,z goto nochk ; movf denomL,w subwf remainL,w nochk btfss status,carry goto nogo ; movf denomL,w subwf remainL btfss status,carry decf remainM movf remainM,w xorlw 0xff btfsc status,z decf remainH movf denomM,w subwf remainM btfss status,carry decf remainH movf denomH,w subwf remainH bsf status,carry nogo rlf nratorL rlf nratorM rlf nratorH decfsz BCount goto dloop ; return