var
Form1: TForm1;
a, b, c: Integer;
implementation
{$R *.dfm}
procedure test1(x, y, z: integer);
asm
mov a,eax
mov b,edx
mov c,ecx
end;
procedure test2(x, y, z: integer);
var
i,j,k: integer;
asm
mov i,eax
mov j,edx
mov k,ecx
mov eax,[esp+8]
mov a,eax
mov eax,[esp+4]
mov b,eax
mov eax,[esp+0]
mov c,eax
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
test2(1,2,3);
ShowMessage(Format('%d,%d,%d', [a, b, c]));
end;
end.
new
var
Form1: TForm1;
a,b,c,d,e: Integer;
implementation
{$R *.dfm}
procedure test1(p1,p2,p3,p4,p5: integer);
asm
mov a,eax
mov b,edx
mov c,ecx
mov eax,[esp+$0c]
mov d,eax
mov eax,[esp+8]
mov e,eax
end;
procedure test2(p1,p2,p3,p4,p5: integer);
var
i,j,k: integer;
asm
mov i,eax
mov j,edx
mov k,ecx
mov eax,[esp+8]
mov a,eax
mov eax,[esp+4]
mov b,eax
mov eax,[esp+0]
mov c,eax
mov eax,[esp+$0c+$8+4]
mov d,eax
mov eax,[esp+$0c+$8+0]
mov e,eax
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
//test1(1,2,3,11,5);
test2(1,2,3,7,8);
ShowMessage(Format('%d,%d,%d,%d,%d', [a, b, c, d, e]));
end;
end.