Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
;==========================================================
;16bit division by a constant
;Number_L,Number_H = Number Input 16bit
;Result_H,Result_L = Result
;Remainder =
;==========================================================
Div16_by_144 clrf Result_L
clrf Result_H
;
Divide_Loop movlw .144 ; 10
subwf Number_L,W ; subtract 144 from value
btfss STATUS,C
goto Adjust_Res_H
movwf Number_L
Adjust_Res_L incfsz Result_L,F
goto Divide_Loop
incf Result_H,F
goto Divide_Loop
Adjust_Res_H movwf Temp_L
movf Number_H,W
btfsc STATUS,Z
goto Adjust_Remainder
decf Number_H,F
movf Temp_L,W
movwf Number_L
goto Adjust_Res_L
Adjust_Remaindermovf Number_L,W ; remainder
movwf Remainder
return
bcf STATUS,C ;do Temp = Number * 2
rlf Number_L,w
movwf Temp_L
rlf Number_H,w
movwf Temp_H ;assume no carry due to only 8 bit
rlf Temp_L,w ;do Temp = Number * 4
rlf Temp_H,F
addwf Number_L,f ;add Number to make it * 5
btfsc STATUS,Z
incf Temp_H,f
movfw Temp_H
addwf Number_H,f
rlf Number_L,f ;finally * 2 to get Number * 10
rlf Number_H,f
Get_Fraction bcf STATUS,C ; Fraction round upto BCD
rrf Remainder,F ; divide by 16
bcf STATUS,C ;
rrf Remainder,F ;
bcf STATUS,C ;
rrf Remainder,F ;
bcf STATUS,C ;
rrf Remainder,F
movf Remainder,W
return