                         
; -------------------------------------------------------------
; A. Veneziani -                         
; programma che effettua una moltiplicazione 
; ripetendo operazioni di somma                                
; -------------------------------------------------------------

; area di stack (segmento stack)
Stack  SEGMENT
     DB 48 DUP(?)  
Stack  ENDS
                                
; segmento dati                                
Dati   SEGMENT 
  N   DB 30  
  M   DB 5
  Ris DW ?
Dati   ENDS
               
; segmento codice               
Codice SEGMENT

Inizio: 
   MOV AX,Dati     ; fapuntare il registro DS all'area dati
   MOV DS,AX
 
   MOV CH,0d       ; carica N in CX
   MOV CL, N
   MOV AH,0d       ; carica M in AX (addendo sommato N volte)
   MOV AL, M
   MOV Ris,0d      ; azzera la locazione ove viene inserito il risultato
Ciclo:
   CALL Somma   
   LOOP Ciclo      ; effettua N cicli
   
   MOV AH,4Ch      ; ritorno al DOS
   INT 21h
   
Somma PROC NEAR    ; porcedura assembly che compie    
   ADD Ris,AX      ; la sola operazione di somma
   RET 
Somma ENDP    
    
Codice ENDS

END Inizio 