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

/* ==============================
*  TEST CODE
*  ==============================
*/
reset:  ldr sp,=STACK 
        ldr r3,=VECTORES
        ldr r2,=CADENA

otrapalabra:
        mov r4,#0
        mov r1,r2         @ puntero a la primera letra 
otro:   ldrb r0,[r2],#1    @ buscar palabra
        cmp r0,#' '       
        beq finpal
        cmp r0,#0
        beq finpal
        add r4,#1         @ contar letras
        b otro
finpal:
        cmp r4,#0
        beq continuar
        cmp r4,#3         @ calcula vector a guardar según el largo de la palabra 
        movlo r4,#3       @ para las menores a 3 letras la deja como 3 
        cmp r4,#12
        movhi r4,#12      @ y para las mayores a 12 las deja como 12     
        sub r4,#3         @ restando 3 al resultado queda todo comprendido entre 0 y 9 donde este valor indica el vector a usar   
        mov r5,#40        
        mul r4,r5         @ se multiplica por 40 para calcular la posicion dentro del vector general 
        mov r5,#10
otrolugar:
        ldr r6,[r3,r4]    @ busco un lugar vacio 
        cmp r6,#0
        beq grabar
        add r4,#4
        subs r5,#1
        bne otrolugar

        b continuar
grabar:
        str r1,[r3,r4]          @ se graba el puntero de la primer letra en el lugar vacio
        mov r5,#0       
        strb r5,[r2,#-1]        @ y un nulo en el espacio siguiente a la última letra 
         
continuar:
        cmp r0,#0 
        bne otrapalabra 

loop:   b loop

CADENA: .ascii "hola es la mundo palabra varios"
        .balign 4
@ se utiliza un solo vector de 10 * 10, formado por 10 filas de 10 elementos, cada fila representa un vector 
VECTORES:
        .rept 10 
        .word 0,0,0,0,0,0,0,0,0,0
        .endr
      
        .space(200)
STACK:

        .end

