.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 r1,=VECTOR
        ldr r2,=POSICION 
        ldr r3,=TAMANIO

otro:   ldrb r0,[r1],#1
        cmp r0,#0
        beq salir
        cmp r0,#'-'   
        beq pasar
        
        bl esnumero
        cmp r0,#0 
        beq continuar           @ si no es signo menos o dígito, continua 
pasar:
/* contar el resto del número hasta encontra un no dígito y no signo */
        sub r0,r1,#1        
        str r0,[r2],#4          @ guarda la posición de signo o dígito encontrado
        mov r4,#1               @ contador de dígitos
otro_d: ldrb r0,[r1],#1
        cmp r0,#0
        beq salir_num
        
        cmp r0,#'.'             @ verificar si es punto 
        beq contar
        
        cmp r0,#','             @ verificar si es coma 
        beq contar
        
        mov r5,r0

        bl esnumero             @ verificar si es numero  
        cmp r0,#1
        beq contar
        
        mov r0,r5        

        bl esletra              @ verificar si es letra  
        cmp r0,#1
        beq contar 
        
        b salir_num        

contar:
        add r4,#1
        b otro_d
salir_num:
        str r4,[r3],#4         @ cuarda el conteo 
continuar:        
        b otro
salir:
loop:   b loop

/*
devuelve si un ascii es un digito decimal
entrada r0 con el ascii
salida r0=0 no es digito r0=1 es digito
*/
esnumero:
        cmp r0,#'0'
        blo esnumero_no
        cmp r0,#'9'
        bhi esnumero_no
        mov r0,#1
        b esnumero_salir
esnumero_no:
        mov r0,#0
esnumero_salir:
        mov pc,lr

/*
devuelve si un ascii es una letra hexa (A-F)
entrada r0 con el ascii
salida r0=0 no es letra r0=1 es letra
*/
esletra:
        cmp r0,#'A'
        blo esletra_no
        cmp r0,#'F'
        bhi esletra_no
        mov r0,#1
        b esletra_salir
esletra_no:
        mov r0,#0
esletra_salir:
        mov pc,lr
        

VECTOR: .asciz "hola3442,323 mundo0A.3345"
.balign 4
POSICION: .word 0,0,0,0,0,0,0,0,0,0,0,0
TAMANIO: .word  0,0,0,0,0,0,0,0,0,0,0,0 
      .space(200)
STACK:

        .end

