注册 登录
编程论坛 Delphi论坛

[求助]DELPHI 内联asm 压入字符串问题?

xie139 发布于 2007-10-15 02:07, 1467 次点击


DELPHI 内联asm 压入字符串新问题。

以前我没太注意,今天一个朋友问我DELPHI压入字符串,我随手给它编了一段代码:

var
Form1: TForm1;
dz01:string[100];
implementation


procedure acc;stdcall;
begin
dz01:= 'acc ';
asm
pushad
mov ebx,$754ea4
mov ecx,dword ptr ds:[ebx]
push offset dz01
mov ebx,$430FD0
call ebx
popad
end;
end;

下面是以上DELPHI代码反汇编结果
0044E7BC 60 pusha
0044E7BD BBA44E7500 mov ebx, $00754EA4
0044E7C2 3E8B0B mov ecx, ds:[ebx]
0044E7C5 682C044500 push $0045042C
0044E7CA BBD00F4300 mov ebx, $00430FD0
0044E7CF FFD3 call ebx
0044E7D1 61 popa
0044E7D2 C3 ret

而达不到ASM的偏移指针(压入字符串)的效果
DELPHI 效果:0044E7C5 682C044500 push $0045042C
要达到的效果:0044E7C5 682C044500 push offset dz01

DELPHI有不有办法达到这个效果??????
??

[此贴子已经被作者于2007-10-15 2:08:14编辑过]

3 回复
#2
xie1392007-10-19 00:00
挂了这么久,也没人回复,感觉这个问题比较严重吗?。。。。。。
#3
anthony6342007-10-22 20:07
不熟悉汇编,但是offset dz01 得到的应该是个具体的偏移量,不可能编译后还是offset dz01的。
#4
xie1392007-10-27 22:01
0044E7C5 682C044500 push $0045042C
这个并不是指针到字符串,我需要的是
0044E7C5 682C044500 push offset $0048032f
$0048032f这个地址必须是指针指向字符串的,这样才叫成功压入字符串.

可是测试了好几次,总不是指向字符串的,压入字符串就不成功!

是不是我编写的这段代码错了,希望朋友们帮忙重新编写一段程序,谢谢!
1