.data
prompt1: .asciiz "Introduza uma string\n"
result:  .asciiz "O número de caracteres numéricos: "
str:     .space 40

.text
.globl main

main:
    # Print prompt1
    la $a0, prompt1
    li $v0, 4
    syscall

    # Read string into str
    la $a0, str
    li $a1, 40
    li $v0, 8
    syscall

    # Initialize n = 0
    li $t0, 0
    # Initialize index i = 0
    li $t1, 0

loop:
    lb $t2, 0($a0)       # Load byte from str[i]
    beq $t2, $zero, end  # If str[i] == '\0', end loop

    li $t3, '0'
    li $t4, '9'
    blt $t2, $t3, skip   # If str[i] < '0', skip
    bgt $t2, $t4, skip   # If str[i] > '9', skip

    addi $t0, $t0, 1     # n++

skip:
    addi $a0, $a0, 1     # i++
    j loop

end:
    # Print result string
    la $a0, result
    li $v0, 4
    syscall

    # Print integer n
    move $a0, $t0
    li $v0, 1
    syscall

    # Exit program
    li $v0, 10
    syscall
