_DATA segment t dw 10, 8, 18, 5, 20, 23, 17 n dw ? ; numarul de elemente il vom calcula suma dw ? _DATA ends assume ds:_DATA assume cs:_TEXT _TEXT segment start: mov ax, _DATA mov ds, ax ; calculam numarul de elemente mov ax, offset n - offset t ; lungimea tabloului, in numar de octeti mov dx, 0 ; dx:ax = nr. de octeti mov di, 2 div di ; ax = nr. de elemente mov n, ax mov di, 0 ; di va tine indexul curent mov suma, 0 bucla: ; verificam daca mai avem elemente cmp di, n jae final ; calculam adresa elementului curent mov ax, 2 ; dimensiunea elementului mul di add ax, offset t ; ax = adresa elementului curent mov bx, ax ; ax nu poate fi folosit la adresare ; extragem elementul curent si-l adunam la suma mov ax, word ptr [bx] add suma, ax ; incrementam indexul inc di jmp bucla final: mov ax, 4C00h int 21h _TEXT ends _STACK segment stack db 512 dup(?) _STACK ends end start