INPUT \ OUTPUT

di il
3 risposte

INPUT \ OUTPUT

Ciao ragazzi! Sono alle prime armi con assembly, e lo reputo un linguaggio molto difficile per via della sua sintassi e logica. Detto questo, stavo provando a scrivere il seguente programma:
dato un numero in input (max=10) stampare tutti i numeri da 0 a numero finchè numero è diverso da 0.
Il codice scritto di mio pugno funziona, ma non capisco perchè in output vengano stampati codici ASCII molto strani, e poi alla fine la sequenza numerica.
Ciao!

.MODEL SMALL
.STACK 100H
.DATA
	n		DB		? 
	cont 	DB		00h
.CODE
.STARTUP
		MOV AH,01H ;richiede in input il numero n 
		INT 21H
		MOV n,AL 
		
ciclo:	CMP n,0 ;ripeti il ciclo fino a quando n!=0
		JE fine ; se n==0 salta a fine 
		INC cont  
		MOV DH,0 ;azzeramento della parte alta di DX
		MOV DL,cont 
		MOV AH,02h ;stampa cont 
		INT 21h
		DEC n 
		JMP ciclo
fine: 	MOV AH,4Ch ;restituisco il comando al DOS
		INT 21h	
END

3 Risposte

  • Re: INPUT \ OUTPUT

    Max 10 o 9?

    In ogni caso AL conterrà il valore in ASCII e non il binario
  • Re: INPUT \ OUTPUT

    No, il numero deve essere max 10.
    Però mi chiedevo dove finisce il numero che inserisco? Non dovrebbe essere in AL?
  • Re: INPUT \ OUTPUT

    In AL ci finisce un singolo carattere.

    Se scrivi 5 ci va il codice ASCII di 5

    Se scrivi 10 ci va il codice ASCII di 1
Devi accedere o registrarti per scrivere nel forum
3 risposte