注册 登录
编程论坛 Delphi论坛

[讨论]Delphi中内嵌ASM

zshoucheng 发布于 2007-04-29 21:47, 1417 次点击

Delphi中内嵌ASM:
procedure sh(ss:string);
begin
showmessage(ss);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
begin
s := 'hello!';
asm
lea edx,s
call sh
end;
end;

上面有什么问题>?

4 回复
#2
anthony6342007-04-30 10:26

procedure sh(ss:string); stdcall;//这里要记得delphi默认是register调用,而不是stecall
begin
showmessage(ss);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
begin
s := 'hello!';
asm
push s {string的首地址是不能访问的,所以lea取它的首地址再跳转的时候会出错,我感觉应该是这样的}
call sh
end;
end;

#3
anthony6342007-04-30 10:39
另外附上一点建议,在混合编程的时候尽量别用string,用PCHAR,
#4
zshoucheng2007-05-01 10:35

我要的就是寄存器的方式
调用API才用stdcall

1