section .data
    msg db "Numero: ", 0 ; Stringa da stampare
    newline db 10, 0    ; Carattere newline

section .bss
    counter resb 1      ; Variabile per il contatore (1 byte)

section .text
    global _start

_start:
    ; Inizializzazione del contatore
    mov byte [counter], 0

loop_start:
    ; Stampa del valore del contatore
    mov eax, 4          ; syscall write
    mov ebx, 1          ; file descriptor 1 = stdout
    mov ecx, msg        ; indirizzo della stringa
    mov edx, 9          ; lunghezza della stringa
    int 0x80

    mov eax, 1          ;syscall write per il numero
    mov ebx, 1
    mov ecx, counter    ; numero da stampare
    mov edx, 1          ;lunghezza del numero
    int 0x80

    mov eax, 4          ; syscall write per il newline
    mov ebx, 1
    mov ecx, newline
    mov edx, 2
    int 0x80

    ; Incrementa il contatore
    inc byte [counter]

    ; Condizione di uscita: se counter < 10
    cmp byte [counter], 10
    jl loop_start       ; Salta a loop_start se counter < 10

    ; Fine del programma
    mov eax, 1          ; syscall exit
    xor ebx, ebx        ; codice di uscita 0
    int 0x80