如何用汇编完成这个功能? ( 积分: 40 )

  • 主题发起人 主题发起人 hying95
  • 开始时间 开始时间
H

hying95

Unregistered / Unconfirmed
GUEST, unregistred user!
在 004F1235处有字符串:"ABCD"
在 004F124F处有字符串:"EFGH"
我现在要把这两处的字符串加在一起就是:"ABCDEFGH"并把它放在 004F404F处.
用汇编应该怎么写?
下面这个编译通过.但运行出错.堆栈溢出.
edit3.Text:=lstrcat(pchar(edit1.Text),pchar(edit2.Text));
 
只有40分, edit3.text 还没分配内存.
 
edti3.text := edit1.text + edit2.text;
 
我想给一个程序补丁,把用汇编把两个字串加起来。分不够再加100分。两个字串是从INI中读取的,已读到程序中的一个空白地方了。为此我写了一段代码如下。
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
s,s1: string;
begin
s:='ABCD';
S1:='EFGH';
showmessage(s+s1);
end;
把上面的代码反汇编后,我取了其中的一部分如下:
* Possible String Reference to: 'ABCD'
|
004551A6 BA04524500 mov edx, $00455204

* Reference to: System.@LStrLAsg(void;void;void;void);
|
004551AB E834EDFAFF call 00403EE4
004551B0 8D45F8 lea eax, [ebp-$08]

* Possible String Reference to: 'EFGH'
|
004551B3 BA14524500 mov edx, $00455214

* Reference to: System.@LStrLAsg(void;void;void;void);
|
004551B8 E827EDFAFF call 00403EE4
004551BD 8D45F4 lea eax, [ebp-$0C]
004551C0 8B4DF8 mov ecx, [ebp-$08]
004551C3 8B55FC mov edx, [ebp-$04]

* Reference to: System.@LStrCat3;
|
004551C6 E88DEFFAFF call 00404158
004551CB 8B45F4 mov eax, [ebp-$0C]

* Reference to: Dialogs.ShowMessage(AnsiString);
|
004551CE E80922FDFF call 004273DC

对汇编我不会,请大侠帮忙。
 
后退
顶部