Ciao,
innanzitutto devi togliere la riga
jbe ciclo
altrimenti le tre righe sotto non vengono mai eseguite.
Il tuo loop che hai chiamato ciclo non viene mai interrotto, infatti l'istruzione LOOP continua un numero di volte pari a CX, ma non vedo che hai inizializzato CX da nessuna parte.
Prima della riga
ciclo: dec al
devi quindi aggiungere le righe:
MOV CL, AL
XOR CH, CH
Così hai CX che è uguale a AL
Questo solo per quel che riguarda la parte di programma quando inserisci numeri minori di 5.
Però non ho capito quando dici "visualizzare tutti i numeri da 1 a N."
Intendi proprio il numero oppure il carattere ASCII relativo a quel numero ??
Perchè tu ora avendo la riga
SUB al,30H
hai trasformato il numero ASCII contenuto in AL in numero decimale (quindi da zero in poi), ma se vuoi visualizzare proprio il numero in ASCII, dopo la riga
XOR CH, CH
devi aggiungere la riga
OR AL, 30H
per riportare il numero in ASCII
Spero di esserti stato utile
Quando hai sistemato questa parte, poi vediamo anche il resto.
Sergio