本文主要是介绍delphi与汇编笔记(2)------关于EBP寄存器的说明与使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
作者: 不得闲
时间:2007-11-21
联系:75492895@QQ.com
(此篇系属于原创,转载请保留字句)
进几天一直在研究在delphi中使用汇编的问题。上回说了一点。今天再把我刚刚弄出来的一点东西写上来。
EBP、ESP、BP和SP都称为指针寄存器,主要用于存放堆栈内存储单元的偏移量,用它们可实现多种存储器操作数的寻址方式。
现在我们来说一说EBP:
EBP是基址指针寄存器:一般用来确认堆栈帧的起始位置,也就是指向栈底。也就是说,一般一个函数入口的地址也就存放在EBP中(所以一般在进入函数的时候将ebp寄存器内容压栈,即保存其函数的上级调用函数的栈基地址,以便于以后返回调用)。
比如,我们要实现点一个Form1上的按扭Button1实现弹出对话框。我们一般是
procedure TForm1.Button1Click(Sender: TObject);
var ss: string;
begin
ss := '不得闲BASM测试';
showmessage(ss);
end;
那么换成汇编的写法如下:
procedure TForm1.Button1Click(Sender: TObject);
var ss: string;
begin
ss := '不得闲BASM测试';
asm
mov eax,[ebp-$04]
cal
这篇关于delphi与汇编笔记(2)------关于EBP寄存器的说明与使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!