鱼C论坛

 找回密码
 立即注册
查看: 6711|回复: 11

压栈、出栈的问题

[复制链接]
发表于 2016-3-7 11:02:00 | 显示全部楼层
刚搜了一下,可能是Debug软件的问题,它也在用这一部分内存。撸主测试一下定义一个堆栈segment(大一点或小一点),然后再试试。 如果有结论,求回复!让我们也开开眼
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-7 13:30:44 | 显示全部楼层
l13127131w 发表于 2016-3-7 13:24
现在栈是16个字节,-g 0043是 mov ax,4c00h的偏移地址。注意红色框里面出栈后,不一样。
看了别的帖子 ...

现在你还没调用21H中断···关中断什么事?中断类似其他语言的函数,怎么会还没执行就私自修改内存数据?
还有,我说的栈是系统最大给你的,不是你自己申请的,你变量中申请了16字节,但是你push大于16字节也会正常压入,因为你可以使用64K大小的栈空间。
我上边的意思:你pop以后,原数据被覆盖了,是被Debug这个软件自己运行的数据覆盖了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-8 08:22:42 | 显示全部楼层
l13127131w 发表于 2016-3-7 16:44
其实在mov ax,cs的时候,-t执行对ss和sp操作的时候,我发现栈中的值就变了(这个你看我上传的第三张图 ...

-t单步调试的时候,DEBUG软件调用了系统中断(上边我说错了,我理解成应用程序调用中断了···对不起),然后pushf / push cs / push ip 一系列操作,就把你的堆栈区数据修改掉了。这时DEBUG软件的问题,他也要使用你申请的堆栈空间。每一次单步调试都要使用,所以每一次都会改变,你可以试一下,注意-d查看的时候看得多一点。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-15 03:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表