; Esercizio 10.
; 
; Due vettori hanno elementi da 16 bit e sono memorizzati in memoria dalle 
; locazioni di nome simbolico VETT1 e VETT2 rispettivamente. 
; Il programma elabora tali vettori facendo la somma elemento per elemento e 
; lascia il risultato in un vettore che inizia dalla locazione di memoria di 
; nome simbolico VETT3. 
; Lo spazio di memoria richiesto per ciascuno dei tre vettori è di 100H byte. 
; Il numero di elementi effettivi non può quindi superare 100H. 
; Nota: eventuali traboccamenti nelle somme sono ignorati.

.model small

N EQU	10

.data
	VETT1   DW 100H DUP (?) 
    VETT2   DW 100H DUP (?)
    VETT3   DW 100H DUP (?)
    pkey    DB "Premi un tasto per uscire... $"
    
.stack

.code
start:
	mov ax, @data
	mov ds, ax
	
	mov cx, N			; CX <- N
	mov si, 0			; SI <- 0
     
ciclo:
 	mov ax, VETT1[SI]	; AX <- VETT1[SI]
 	add ax, VETT2[SI]	; AX += VETT2[SI]
 	mov VETT3[SI], ax	; VETT3[SI] <- AX
 	add si,2			; SI += 2 perche' gli elementi dei vettori sono ampi 16 bit
 	dec cl				; CL--
 	jnz ciclo			; Se CL != 0 torna a 'ciclo'
 	
	; Fine esercizio ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    lea dx, pkey
    mov ah, 9
    int 21h        ; output string at ds:dx
    
    ; wait for any key....    
    mov ah, 1
    int 21h
    
    mov ax, 4c00h ; exit to operating system.
    int 21h    
end start