求详细介绍delphi汇编的教程
解决方案 »
- 关于结构的问题。
- Inno打包时遇到的问题。
- 全文检索检索到的文件怎么打不开呀?
- image1.height:= image1.width*1.5 不行啊,怎办?
- 一个简单的问题,关于调用同一程序中,另一个窗口的EDIT1值的疑惑???
- 如何注册一个dll?大伙帮帮忙,up有分…
- 无法为更新行集定位:一些值可能以在最后读取后改变
- 在Delphi中的 DCB 定义为什么与 MSDN 里有这么大的不同
- 数据处理问题!!!!
- 用Database Desktop生成的表(db)怎么有那么多文件?
- 一个初级问题
- 求助!关于delphi如何用sql语句在access中如何把一个表中整个字段的定义和值复制到另一个表中
只是多了个ASM和END.
使用嵌入汇编主要就是要注意寄存器和堆栈的恢复,除非必要否则不该用这东西。
写一个程序可以动态调用 Dll 中的函数, 且参数个数不定, 参数类型不定, 函数返回值类型不定, 允许其声明函数格式, 并调用它.
若使用 Delphi 本身的函数是无法做到这一点的, 唯有通过内嵌汇编来实现, 前提是你必须完全理解各种调用协议的参数传递, 及压栈顺序.
ASM:
begin
end;但具体就不懂了,没搞过、这方面的也搞不起
asm
......汇编
end;就这么用了。想知道汇编怎么用。得学汇编。不是DELPHI!!
比如可以这样
var i:integer;
....
asm
mov eax,i;
inc eax;
mov i,eax;
end;
这样的话,就可以把I加1了。:)呵呵。这样效率高,不过用处不大。所以必须是不得已时用
调用api用堆栈传参,stdcall方式,delphi中的函数用eax、edx,ecx?若我次序没记错的话。
再多也用堆栈。不过是pascal方式……你自己试试吧,我记得不清楚了。
因不易传播,出现了打孔机
因编码易出错,出现了汇编语言
因不易移植,出现了高级语言
因不易维护和重构,出现了面向对象语言
因入门不易,开发效率慢,出现了RAD这种弱智级的编程方式而如今人们已经习惯了RAD这种奇妙的,用鼠标写程序的方式之后,却为什么要回到汇编语言呢?
就像下面的EAX的轮回
CALL NEXT
NEXT:
POP ESI
SUB ESI,5
PUSH ESI
INC EAX
DIV ECX
MOV EAX,EDX
RET