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

DOWNLOAD    MAIN
;  Call:  var3:0  = 32 bit value to be displayed
;         len     = String length
;         tmp1:0  = Don't care (high register must be assigned)
;         tmp2    = Don't care
;
;  Result:var3:0  = Unknown
;         len     = Not changed
;         tmp1:0  = Unknown
;         tmp2    = 0
;
; Size:  58 words
; Clock: depends on output routine
; Stack: 11 bytes max (+output routine)
;
; Examples:    var    len    output
;              100      0    "100"
;            -1234      0    "-1234"
;         31450000      0    "31450000"
;                0      7    "      0"
;             -400      5    " -400"
;              100      5    "  100"
;              100      2    "100"

mk_dec8:        
				clr     var1 
                sbrc    var0,7
                dec     var1
mk_dec16:       clr     var2
                sbrc    var1,7
                dec     var2
mk_dec24:       clr     var3
                sbrc    var2,7
                dec     var3
mk_dec32:     
                clr     tmp2
                clt            
                tst     var3
                brpl    PC+10
                set 
                com     var0
                com     var1
                com     var2
                com     var3
                adc     var0,tmp2
                adc     var1,tmp2
                adc     var2,tmp2
                adc     var3,tmp2
                inc     tmp2
                clr     tmp0
                ldi     tmp1,32
                lsl     var0
                rol     var1
                rol     var2
                rol     var3
                rol     tmp0
                cpi     tmp0,10
                brcs    PC+3
                subi    tmp0,10
                inc     var0
                dec     tmp1
                brne    PC-10
                subi    tmp0,-'0' 
                push    tmp0
                cp      var0,tmp1
                cpc     var1,tmp1
                cpc     var2,tmp1
                cpc     var3,tmp1
                brne    PC-20 
                brtc    PC+4 
                ldi     var0,'-' 
                push    var0
                inc     tmp2 
                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