edutecnica

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.