/[avr-libc]/avr-libc/libc/misc/ultoa.S
ViewVC logotype

Diff of /avr-libc/libc/misc/ultoa.S

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.4 by joerg_wunsch, Tue Sep 13 13:29:54 2005 UTC revision 1.5 by aesok, Wed Oct 12 20:24:45 2005 UTC
# Line 26  Line 26 
26    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27    POSSIBILITY OF SUCH DAMAGE. */    POSSIBILITY OF SUCH DAMAGE. */
28    
29    /* $Id $*/
30    
31  /*  /*
32     ultoa.S     ultoa.S
33    
# Line 68  _U(ultoa): Line 70  _U(ultoa):
70          push    ZH              ; keep &string          push    ZH              ; keep &string
71          push    ZL          push    ZL
72          cpi     a_radix, 2      ; no radix < 2          cpi     a_radix, 2      ; no radix < 2
73          brlt    conv_finished   ; return with \0          brlt    99f             ; return with \0
74          cpi     a_radix, 37     ; no radix > 36          cpi     a_radix, 37     ; no radix > 36
75          brge    conv_finished   ; return with \0          brge    99f             ; return with \0
76          mov     r_radix, a_radix; save radix          mov     r_radix, a_radix; save radix
77  divide_loop:  1:
78          mov     r18, r_radix    ; radix is divisor          mov     r18, r_radix    ; radix is divisor
79          clr     r19             ; remainder of number is dividend          clr     r19             ; remainder of number is dividend
80          clr     r20          clr     r20
# Line 84  divide_loop: Line 86  divide_loop:
86          pop     ZH          pop     ZH
87          subi    r22, 0xd0       ; + '0'          subi    r22, 0xd0       ; + '0'
88          cpi     r22, 0x3a       ; > '9' ?          cpi     r22, 0x3a       ; > '9' ?
89          brlt    L_10          brlt    10f
90          subi    r22, 0xd9       ; + 'a' - 10 - '0'          subi    r22, 0xd9       ; + 'a' - 10 - '0'
91  L_10:  10:
92          st      Z+, r22         ; write character to string in reverse order!          st      Z+, r22         ; write character to string in reverse order!
93          mov     a_val_lo, r18   ; quotient -> dividend          mov     a_val_lo, r18   ; quotient -> dividend
94          mov     a_val_hi, r19          mov     a_val_hi, r19
# Line 96  L_10: Line 98  L_10:
98          sbci    a_val_hi, 0          sbci    a_val_hi, 0
99          sbci    a_val_hlo, 0          sbci    a_val_hlo, 0
100          sbci    a_val_hhi,0     ; value == 0 ?          sbci    a_val_hhi,0     ; value == 0 ?
101          brne    divide_loop          brne    1b
102  conv_finished:  99:
103          st      Z, __zero_reg__ ; terminate string          st      Z, __zero_reg__ ; terminate string
104          pop     a_val_hlo       ; restore &string as return value          pop     a_val_hlo       ; restore &string as return value
105          pop     a_val_hhi          pop     a_val_hhi

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26