初学 Delphi 嵌入汇编[5] - 寄存器在过程与函数中的使用 - 续

探讨汇编语言中参数传递规则及内存操作细节,包括参数保存位置与内存分配策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


======================================================
注:本文源代码点此下载
======================================================

#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

·测试版ios源代码显示ipad 3或将支持siri

·斯蒂芬·霍金的新电脑

·京东商城2.95亿竞得北京商业地一块

» 更多新闻...

最新知识库文章:

·javascript 面向对象编程

·持续集成之“everything is code”

·持续集成之“软件自我识别”

·持续集成之戏说check-in dance

·什么是闭包。
       我的理解

» 更多知识库文章...

china-pub 2011秋季教材巡展

china-pub 计算机绝版图书按需印刷服务

copyright ©2012 万一 powered by: 博客园 模板提供:沪江博客


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值