汇编语言和c语言的混合编程中,为什么ESP+4可以用来接收c语言函数的参数? 我来答 可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。 汇编语言 c语言 函数 编程 esp+4 搜索资料 2个回答 #热议# 海关有哪些禁运商品?查到后怎么办? 好求知 推荐于2017-12-16 · TA获得超过6515个赞 知道大有可为答主 回答量:966 采纳率:80% 帮助的人:1172万 我也去答题访问个人页 关注 展开全部 ESP用于指向栈的栈顶(下一个压入栈的活动记录的顶部),而栈由高地址向低地址成长,函数调用是用入栈的方式传递参数,故在函数处理参数时,ESP+4就是最后一个入栈的参数的地址,ESP+8就是再前一个参数的地址。 更多追问追答 追问 顺便一问,int8中的ret是返回哪个值? 追答 调用函数后返回值都是存储在EAX中,MOV EAX, 0,所以返回值是0 追问 对了,为什么要把esp+4的值取出? 追答 ESP+4是最后一个入栈的参数的地址啊,MOV EDX, [ESP+4]; 最后一个参数存入32位寄存器EDXIN AL, DX; DX是EDX的低16位,AL是8位的。从 dx 的端口中输入一个8位的值放在al中 追问 低十六位存入八位不就前面八位也没有了??[ESP+4]的写法是不是等价于ESP:ESP+4? 追答 高8位没有了,所以起名in8,[]是取目标地址的内容,ESP:ESP+4的用法没见过 追问 其实我想问为什么[ESP+4]指向存入栈的最后一个参数? 追答 我最开始的回答有解释 已赞过 已踩过< 你对这个回答的评价是? 评论 收起 精神病院长12 2020-12-10 知道答主 回答量:13 采纳率:0% 帮助的人:8670 我也去答题访问个人页 关注 展开全部 ESP栈顶存放的是返回地址,使用32位模式的话,地址应该也是32位,ESP的栈顶开始的4个字节存储这个32位地址,再然后C语言大部分编译器编译出来,入参的时候都是倒着PUSH参数的,所以最后一次PUSH,是第一个参数,所以ESP+4之后就是第一个参数了,可以参考CALL指令和RET指令的相关信息就知道了 已赞过 已踩过< 你对这个回答的评价是? 评论 收起 推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询 广告您可能关注的内容c语言学习每天免费网上学习c语言学习免费网上学习c语言学习,国内讲师机构专业授课,适合从基础学习,挑战从入门到熟练运用,海量c语言学习学习 从入门到编程技术高超 C语言编程能力快速提升www.huke88.com广告 其他类似问题 2018-03-20 C语言与汇编语言有什么区别与联系? 13 2011-04-13 汇编语言和C语言有什么区别? 3 2019-12-03 C语言和汇编语言的区别是什么? 4 2018-04-12 汇编语言和c语言各有什么特点? 27 2020-03-08 汇编语言与c语言的区别 3 2017-10-01 C语言和汇编语言的关系? 19 2019-09-23 c语言中如何调用汇编程序 6 2017-12-31 c语言汇编语言 3 更多类似问题 > 为你推荐: