Команда загружает операнд памяти (двойное слово) в регистр сегмента и в регистр-получатель.
{$L sum.obj}
Program abc;
Uses CRT;
Const n=20;
Type tm = Array[1..n] of integer;
Var A: tm; i, s:integer;
Procedure SUM (Var A: tm; k:integer; var s: integer);external;
Begin
Clrscr; Randomize;
For i:= 1 to n do begin
A[i]:= Random (100);
Write (A[i]:3);
End;
SUM(A,n,s);
Writeln;
Write(s);
Readkey;
End.

.286; указание типа процессора и набора команд
public sum
stack1 segment stack
db 128 dup (?)
stack1 ends
code segment byte public
assume cs:code, ss:stack1
sum proc near
push bp
mov bp,sp
pusha
lds si,[bp+10]
mov cx,[bp+8]
lds di,[bp+4]
mov ax,0
cycl: add ax,[si]
add si,2
loop cycl
mov [di],ax
popa
pop bp
ret 10
sum endp
code ends
end
Способы адресации
Адресация – это задание адреса хранения операнда.
Существуют следующие способы адресации.
1. Регистровая адресация:
mov ax, bx
push ds
2. Непосредственная адресация:
mov ax, 2
3. Прямая адресация:
mov ax, х
Косвенная адресация:
mov ax, [bх]
5. Базовая, адресация по базе со сдвигом:
mov ax, [bх+2]
mov di, [bp+4]
6. Индексная адресация:
mov ax, mas[si]
7. Базово-индексная адресация:
mov ax, [bx+si+2]






