/[avr-libc]/avr-libc/libc/string/strlwr.S
ViewVC logotype

Diff of /avr-libc/libc/string/strlwr.S

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

revision 1.5 by joerg_wunsch, Tue Sep 13 13:29:54 2005 UTC revision 1.6 by aesok, Sat Nov 5 16:49:46 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     strlwr.S     strlwr.S
33     convert a string to lower case     convert a string to lower case
# Line 33  Line 35 
35     Contributors:     Contributors:
36       Created by Reiner Patommel       Created by Reiner Patommel
37  */  */
38    
39  #include "macros.inc"  #include "macros.inc"
40    
41  #define str_hi r25  #define str_hi r25
# Line 52  Line 55 
55    
56  #if !defined(__DOXYGEN__)  #if !defined(__DOXYGEN__)
57    
58      .text          .text
59      .global _U(strlwr)          .global _U(strlwr)
60      .type   _U(strlwr), @function          .type   _U(strlwr), @function
61    
62  _U(strlwr):  _U(strlwr):
63      LOAD_X(str_lo, str_hi)          X_movw  XL, str_lo
64  .strlwr_loop:  .L_strlwr_loop:
65      LD    temp, X           ; get 1st character          LD      temp, X         ; get 1st character
66      TST   temp              ; is it end of string          TST     temp            ; is it end of string
67      BREQ  .strlwr_done          BREQ    .L_strlwr_done
68      ORI   temp, 0x20        ; make lower case          ORI     temp, 0x20      ; make lower case
69      CPI   temp, 'a'         ; test on [a .. z]          CPI     temp, 'a'       ; test on [a .. z]
70      BRLT  .strlwr_next          BRLT    .L_strlwr_next
71      CPI   temp, 'z'+1          CPI     temp, 'z'+1
72      BRGE  .strlwr_next          BRGE    .L_strlwr_next
73      ST    X, temp           ; ok, it is a char --> store it          ST      X, temp         ; ok, it is a char --> store it
74  .strlwr_next:  .L_strlwr_next:
75      ADIW  XL, 1                         ; point to next character          ADIW    XL, 1           ; point to next character
76          RJMP  .strlwr_loop          RJMP    .L_strlwr_loop
77  .strlwr_done:  .L_strlwr_done:
78      RET          RET
79  .strlwr_end:  .L_strlwr_end:
80          .size _U(strlwr), .strlwr_end - _U(strlwr)          .size   _U(strlwr), .L_strlwr_end - _U(strlwr)
81    
82  #endif /* not __DOXYGEN__ */  #endif /* not __DOXYGEN__ */

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

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