======================================================
注:本文源代码点此下载
======================================================
#4楼[楼主] 2008-11-21 15:42 万一
@roc_sunny
汇编还没学通, 过几天再学.
我现在没有把握回复你.
回复 引用 查看
#5楼 2008-11-21 16:06 roc_sunny[未注册用户]
@万一
如果在参数里只有一个的话,用eax,如果有两个的话用ecx,edx.不知道,我这种说活,是否正确.
回复 引用
#6楼 2009-02-09 14:11 delphi汇编学习[未注册用户]
@roc_sunny
错误
一个用eax
2个用eax edx
3个用eax edx ecx
回复 引用
#7楼 2009-02-17 10:44 初学者00001[未注册用户]
那四个五个呢??
回复 引用
#8楼[楼主] 2009-02-17 14:10 万一
@初学者00001
这个我也不知道, 当时学汇编只是浅浅地入门一下, 我还将继续, 就在最近.
如果你早知道这个问题, 希望告诉我.
回复 引用 查看
#9楼 2009-02-17 17:49 打着灯笼走夜道[未注册用户]
估计再多的参数用堆栈解决,猜的.@初学者00001
回复 引用
#10楼 2009-10-14 21:35 lexyao
在调试器中看到以下代码:
unit6.pas.68: proc(11,22); {显示: 0,22}
005694b8 ba16000000mov edx,$00000016
005694bd b80b000000mov eax,$0000000b
005694c2 e865ffffffcall generics + $56942c
由此可见,eax为第一个参数,edx为第二个
回复 引用 查看
#11楼 2009-10-14 21:42 lexyao
在调试器中看到以下代码:
unit6.pas.69: proc(11,22,33); {显示: 0,22,33}
005694d8 b921000000mov ecx,$00000021
005694dd ba16000000mov edx,$00000016
005694e2 b80b000000mov eax,$0000000b
005694e7 e840ffffffcall generics + $56942c
由此可见,eax为第一个参数,edx为第二个,ecx为第三个
回复 引用 查看
#12楼 2009-10-14 21:45 lexyao
两个或三个参数都把第一个给了eax,但是,eax的值都是0,原因是后边后这么一个语句
0056943e 33c0xor eax,eax
那么,第一个参数保存在哪里呢?
回复 引用 查看
#13楼 2011-06-17 19:56 李龙江
procedure add(x, y, z: integer);
var
ex, ey, ez: integer;
begin
asm
mov eax,x;//首先把x的值赋给eax,不然eax值是默认值0
mov ex,eax;//然后把eax的值赋给ex
mov ey,edx;//第二步把edx的值赋给ey
mov ez,ecx;//第三步把ecx的值赋给ez
end;
showmessage(format('%d,%d,%d', [ex, ey, ez]));//显示ex,ey,ez的值,不如实参11,22,33显示的结果就是11,22,33,所以证明eax,edx,ecx的默认顺序是正确的
end;
楼上你把eax重新赋一次值不就行了吗
回复 引用 查看
注册用户登录后才能发表评论,请 登录 或 注册,返回博客园首页。
最新it新闻:
·ios 5.1 beta3文件预示未来 siri有可能支持 ipad和 ipod touch
·android平台12月广告浏览份额51.6% 超越ios
» 更多新闻...
最新知识库文章:
copyright ©2012 万一 powered by: 博客园 模板提供:沪江博客
======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/