Ho fatto questo programma... ma non capisco cos è che non va... mi fa uscire come risultato una faccina che ride...

codice:

Sistema SEGMENT STACK
   DB 64 DUP (?)
Sistema ENDS


Dati SEGMENT
   a   DB 4 DUP (?)
Dati ENDS
 

Codice SEGMENT
        ASSUME CS:Codice,SS:Sistema,DS:Dati
    
        Inizio:   MOV AH,01h      ;Input da tastiera. Ritorna il valore in AL
                   INT 21H
                   MOV a,AL


                   MOV AH,01h
                   INT 21H


                   SUB a,AL                 ;a=a-AL

                   MOV AH,0Ah
                   MOV AL,a                ;Metto il carattere della stringa in AL
                   MOV BH,0      ;così da poterlo stampare
                   MOV CX,1      ;una sola volta sullo schermo
                   INT 10H

        Premi:   MOV AH,08h      ;Input da tastiera senza echo
                   INT 21H   

                   CMP AL,27      ;Controlla se il tasto premuto sia il tasto ESC (27 dec.)
                     JE Esci         ;Se uguale esce dal programma
                     JNE Premi              ;Altrimenti attende che rivenga premuto un tasto...

         Esci:   MOV AX,4C00h      ;Torno al DOS
                  INT 21h

Codice ENDS

END Inizio

Ho provato la stampa anche così... ma non va:
codice:
      MOV AH,0Ah
      MOV AL,a+30h                ;Metto il carattere della stringa in AL
      MOV BH,0      ;così da poterlo stampare
      MOV CX,1      ;una sola volta sullo schermo
      INT 10H
E infine ho provato anche così:
codice:
      MOV AH,01h
      INT 21H
      MOV a,AL

      MOV AH,01h
      INT 21H

      SUB a,AL

      MOV DL,a
      MOV AH,02H
      INT 21H
Nessuno dei tre funziona.... cosa sbaglio?

Grazie per l'aiuto