.arm
.global _start
_start:
        b reset
        b loop
        b loop
        b loop
        b loop
        nop
        b loop
        b loop

/* ==============================
*  TEST CODE
*  leer 2 cadenas de texto, devolver en r0 = 1 iguales r0 = 0 distintas
*  ==============================
*/
reset:
        ldr sp,=STACK

        ldr r0,=VECT1
        ldr r1,=VECT2
        mov r4, #4
        mov r5, #5
        mov r6, #6
        bl comparar

        cmp r0,#1 
        beq iguales 
              
iguales:

loop:   b loop
        
        .ltorg

/* ----------------------------------------------------------------------------*/
/* comparar dos cadenas en r1 y r2 terminación nula */
/* ----------------------------------------------------------------------------*/
comparar:
/*
        stmdb sp!,{r4,r5,r6,lr}
        stmfd sp!,{r4,r5,r6,lr}
*/
        push {r4,r5,r6,lr}
        mov r5,r0
        mov r6,r1
        ldr r0,=0xffff
        
otro:   ldrb r0,[r5],#1
        bl amayuscula
        mov r4,r0

        ldrb r0,[r6],#1
        bl amayuscula
        
        cmp r0,r4
        bne comparar_noigual

        cmp r0,#0
        bne otro 
        mov r0,#1 /* igual */
        b comparar_salir
comparar_noigual:
        mov r0,#0 /* distinto */
comparar_salir:
/*
        ldmfd sp!,{r4,r5,r6,lr}
        ldmia sp!,{r4,r5,r6,lr} 
*/
        pop {r4,r5,r6,lr}
        mov pc,lr
.ltorg
/* fin función */

/* ----------------------------------------------------------------------------*/
/* cambiar a mayúscula */
/* ----------------------------------------------------------------------------*/
amayuscula:  
        cmp r0,#'a'
        blo amayuscula_no
        cmp r0,#'z'
        bhi amayuscula_no
        sub r0,#('a' - 'A')
amayuscula_no:
        mov pc,lr
/* fin función */

/* ==============================
*  CONTANTES
*  ==============================
*/
VECT1:  .asciz "Hola munDo"
VECT2:  .asciz "HOLa MUndo"
        
        .balign 4
        .space 200
STACK:
        .balign 4
        .end

