; 
; Siano dato un vettore avente nome simbolico VETT contenenti 10 elementi ampi
; 1 byte, e una variabile avente nome simbolico N, contenete un numero compreso
; tra 1 e 20. Si calcoli la somma degli N elementi di un vettore.
;
.MODEL	small
.stack	100h

include ..\include\utils.inc

.data
    VETT 	db 10 dup (?)
    N    	db 3

.code
start:
	call init

;;; Inizio esercizio
	mov cl, N		; CL <- N ; CL e` l'indice che indica del ciclo che fornisce la
				    ; somma degli elementi.
	mov si, 0 		; SI <- 0 ; SI e` l'indice che punta all'elemento corrente del
				    ; vettore.
	mov al, 0		; AL <- 0 ; azzeriamo il contenuto del registro AL, che utilizzeremo
					; per salvare il risultato temporaneo della somma.
 
ciclo:
 	add al, vett[si]; AL <- VETT[SI] : sommo ad AL il contenuto della locazione 
 					; di memoria avente indirizzo VETT + SI.
 	inc si			; SI++ : incremento l'indice per puntare al successivo elemento
 					; del vettore.  
 	dec cl			; CL-- : decremento l'indice che conta i passi del ciclo
 	jnz ciclo		; CL == 0 ? se no salta all'istruzione posta all'etichetta ciclo
 					; altrimenti prosegui.
;;; Fine esercizio
	call pressKeyAndExit
end start