Esercizio 4
Il programma in questione, mostra l'utilizzo del registro CL come contatore,
viene così introdotto un primo esempio di "loop", analogo ai cicli finiti
di tipo "for" che si incontrano in Pascal e in C++. L'istruzione:
MOV CL,5 carica il valore decimale 5 nel registo
CL; l'istruzione
MOV AL,2 carica il valore decimale 2 in AL;
viene poi eseguito il ciclo
DECRE:ADD AL,1
CALL TRAD
DEC CL
JNZ DECRE
All'ingresso AL viene incrementato di 1 (ADD AL,1)
e si porta al valore 3, viene così stampato dalla procedura TRAD. CL viene
decrementato. L'istruzione JNZ DECRE significa che
e il contatore CL non è a zero si deve ritornare all'etichetta DECRE
ed eseguire un altro giro.
Da notare che la funzione TRAD è stata modificata
per permetter la stampa del valore 32 (MOV DL,32);
infatti il 32° carattere del codice ASCII è la barra spaziatrice .
TITLE QUATTRO
;ciclo while che parte da un numero positivo
;e che per 5 volte incrementa di 1 la variabile iniziale
.MODEL SMALL
.STACK
.DATA
.CODE
MOV CL,5
MOV AL,2
DECRE: ADD AL,1
MOV BX,AX
CALL TRAD
MOV AX,BX
DEC CL
JNZ DECRE
MOV AX,4C00H
INT 21H
;_________stampa
TRAD PROC NEAR
ADD AL,48
MOV AH,02
MOV DL,AL
INT 21H
MOV DL,32
INT 21H
RET
TRAD ENDP
END
il programma deve dunque partire da 2 ed incrementarsi di 1 per 5 volte.