Home     Projects     Micro     Tools     Delphi     Developer     Site map
HOME  
 
 
       
Universal decimal string conversion (8/16/32 bit unsigned)

DOWNLOAD    MAIN
;  Call:   var1:0  = 16 bit value to be converted
;          len     = String length
;          tmp1:0  = Don't care (high register must be assigned)
;          tmp2    = Don't care
;
;  Result: var1:0  = Unknown
;          len     = Not changed
;          tmp1:0  = Unknown
;          tmp2    = 0
;
; Size:  30 words
; Clock: depends on output routine
; Stack: 10 bytes max (+output routine)
;
; Examples:   var1    len    output
;              100      0    "100"
;             1234      0    "1234"
;                0      7    "      0"
;              100      5    "  100"
;              100      2    "100"


mk_decu8:       clr     var1
mk_decu16:
                clr     tmp2
                inc     tmp2
                clr     tmp0 
                ldi     tmp1,16
                lsl     var0
                rol     var1
                rol     tmp0
                cpi     tmp0,10
                brcs    PC+3
                subi    tmp0,10
                inc     var0
                dec     tmp1
                brne    PC-8
                subi    tmp0,-'0' 
                push    tmp0
                cp      var0,tmp1
                cpc     var1,tmp1
                brne    PC-16
                cp      tmp2,len
                brcc    PC+5
                inc     tmp2
                ldi     var0,' ' 
                push    var0
                rjmp    PC-5
                pop     var0
                 rcall  xmit
                dec     tmp2
                brne    PC-3
                ret
		  

Copyright(c) 2005-2008 sixca.com, All right reserved.
Best view @ 800X600, IE 6.0 up   
Terms of Use  Privacy Policy