Передача параметров через стек
PUSH BP
MOV BP, SP
PUSHA
POPA
POP BP
RET k
6. Загрузка дальнего указателя: LDS reg,mem
Команда загружает операнд памяти (двойное слово) в регистр сегмента и в регистр-получатель.
{$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
Дата добавления: 2015-10-09; просмотров: 509;