We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
#include "MKL25Z4.h" // Device header
__asm void my_strcpy(const char *src, char *dst) {loop LDRB r2, [r0] //; Load byte into r2 from memory pointed to by r0 (src pointer) ADDS r0, #1 //; Increment src pointer STRB r2, [r1] //; Store byte in r2 into memory pointed to by (dst pointer) ADDS r1, #1 //; Increment dst pointer CMP r2, #0 //; Was the byte 0? BNE loop //; If not, repeat the loop BX lr //; Else return from subroutine }__asm void my_capitalize(char *str){cap_loop LDRB r1,[r0] //; Load byte into r1 from memory pointed to by r0 (str pointer) CMP r1, #'a'-1 //; compare it with the character before 'a' BLS cap_skip //; If byte is lower or same, then skip this byte CMP r1, #'z' //; Compare it with the 'z' character BHI cap_skip //; If it is higher, then skip this byte SUBS r1,#32 //; Else subtract out difference to capitalize it STRB r1,[r0] //; Store the capitalized byte back in memorycap_skip ADDS r0, r0, #1 //; Increment str pointer CMP r1, #0 //; Was the byte 0? BNE cap_loop //; If not, repeat the loop BX lr //; Else return from subroutine}
int main(void){ const char a[] = "Hello world!"; char b[20];
my_strcpy (a, b); my_capitalize(b); while (1);}
///////////////////////////////////