汇编语言和c语言的混合编程中,为什么ESP+4可以用来接收c语言函数的参数?
答案:1 悬赏:50 手机版
解决时间 2021-12-01 06:52
- 提问者网友:风月客
- 2021-11-30 17:15
汇编语言和c语言的混合编程中,为什么ESP+4可以用来接收c语言函数的参数?
最佳答案
- 五星知识达人网友:痴妹与他
- 2021-11-30 18:22
ESP用于指向栈的栈顶(下一个压入栈的活动记录的顶部),而栈由高地址向低地址成长,函数调用是用入栈的方式传递参数,故在函数处理参数时,ESP+4就是最后一个入栈的参数的地址,ESP+8就是再前一个参数的地址。追问顺便一问,int8中的ret是返回哪个值?追答调用函数后返回值都是存储在EAX中,MOV EAX, 0,所以返回值是0追问对了,为什么要把esp+4的值取出?追答ESP+4是最后一个入栈的参数的地址啊,
MOV EDX, [ESP+4]; 最后一个参数存入32位寄存器EDX
IN AL, DX; DX是EDX的低16位,AL是8位的。从 dx 的端口中输入一个8位的值放在al中追问低十六位存入八位不就前面八位也没有了??[ESP+4]的写法是不是等价于ESP:ESP+4?追答高8位没有了,所以起名in8,[]是取目标地址的内容,ESP:ESP+4的用法没见过追问其实我想问为什么[ESP+4]指向存入栈的最后一个参数?追答我最开始的回答有解释
MOV EDX, [ESP+4]; 最后一个参数存入32位寄存器EDX
IN AL, DX; DX是EDX的低16位,AL是8位的。从 dx 的端口中输入一个8位的值放在al中追问低十六位存入八位不就前面八位也没有了??[ESP+4]的写法是不是等价于ESP:ESP+4?追答高8位没有了,所以起名in8,[]是取目标地址的内容,ESP:ESP+4的用法没见过追问其实我想问为什么[ESP+4]指向存入栈的最后一个参数?追答我最开始的回答有解释
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯