.data
prompt1:    .asciiz "Introduza um numero\n"
result:     .asciiz "O fatorial do numero inserido é: "

.text
.globl main

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

    # Read integer input
    li $v0, 5
    syscall
    move $t0, $v0  # Store input in $t0

    # Initialize f to 1
    li $t1, 1

    # Initialize i to n
    move $t2, $t0

loop:
    blez $t2, end_loop  # If i <= 0, exit loop

    # f = f * i
    mul $t1, $t1, $t2

    # i--
    sub $t2, $t2, 1

    j loop

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

    # Print factorial value
    move $a0, $t1
    li $v0, 1
    syscall

    # Exit program
    li $v0, 10
    syscall
