Sono con il TASM.

Nel mio programma vorrei stampare una stringa ad ogni riga, e ad ogni stampa vorrei che si spostasse a destra di un tab.
Ho scritto il codice seguente, ma l'allineamento è sbagliato

codice:
.MODEL tiny

.STACK

.DATA
var1 db 5
var2 db 10
var3 db 1
messaggio db "Hello world",13,10, "$"
tab	 db " ", 9

.CODE
inizio:
    MOV ax, @data
    MOV ds, ax
        
    MOV bl, var1   
    MOV cl, var3
         
    JMP subito
     	 
    ciclo:
        
        howmanytabs:
		LEA dx, tab
		MOV ah, 09H 
		INT 21H
		SUB cl, 1
		CMP cl,0
		JG howmanytabs
        
        subito:
        	LEA dx, messaggio    
		MOV ah, 09H           	      ; stampa di stringhe        	
		INT 21H			 	 ; richiedo il servizio        	
        	ADD bl, 1			 ; incremento il contatore
        	CMP bl, var2			; confronto il contatore con var2
        	JNGE ciclo			 ; salta (cioè cicla) fino a che il contatore è minore di var2
      
    fine:  
	MOV ah, 4ch
      	INT 21h

END inizio
Dov'ho sbagliato?