![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
sadf
Dependencies: mbed
Diff: main.c
- Revision:
- 0:b7eda4fdb627
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.c Thu Oct 29 00:45:39 2015 +0000 @@ -0,0 +1,45 @@ +#include "mbed.h" + +__asm void my_strcpy(const char *src, char *dst); +__asm void my_capitalize(char *str); + +int main(void){ + const char a[] = "Hello World!"; + char b[20]; + + my_strcpy(a,b); + my_capitalize(b); + + while(1) + ; +} + +__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 ; What 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 byte 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 memory + +cap_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 +} \ No newline at end of file