PutDecimal clrf Decimal100 ;clear hundreths
Count100s incf Decimal100,F ;will inc once too many times
addlw 0x100-.100 ;add-100 (sub 100)
btfsc STATUS,C ;gone negative?
goto Count100s ;no, keep counting
addlw .100 ;add back 100
clrf Decimal10 ;clear tens digit
Count10s incf Decimal10,F ;waii also inc once too many
addlw 0x100-.10 ;add-10 (sub 10)
btfsc STATUS,C ;gone negative?
goto Count10s ;no, keep counting
movwf Units ;keep units count -10
movfw Decimal100 ;get hundredths
addlw "0"-1 ;convert to ascii and correct for extra inc
call PutChar ;print it
movfw Decimal10 ;same for
addlw "0"-1 ;tens
call PutChar
movfw Units ;do units
addlw "0"+0ah ;conv to ascii and add back the -10
goto PutChar