鱼C论坛

 找回密码
 立即注册
查看: 2429|回复: 6

push后栈中数据,和pop后栈中数据问题?

[复制链接]
发表于 2012-11-29 22:05:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我将2000:0~2000:f的空间当作栈,这段空间原来数据全为0.执行push2次写入内存中的数据没错,可为什么其他地方会有数据被改写呢?还有pop后数据读出,原来地方的数据会被改写,并非书上写的要push进新数据后才覆盖呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-11-29 22:38:22 | 显示全部楼层
有可能是系统默认修改,也可能是有些其它操作修改了你的栈啊,把过程说清楚点吧,这样的话,我感觉有太多可能啦!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-11-30 00:01:45 | 显示全部楼层
期待大侠讲解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-12-1 10:18:37 | 显示全部楼层
说的不够清楚
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-12-1 18:21:15 | 显示全部楼层
不好意思,我现在把代码写下。其实也就是王爽第二版Page65中代码,我改写了SS的值为2000.之前内存2000:0以后单元的数值都是0。 在debug中执行代码如下:
a
mov ax,2000h
mov ss,ax
mov sp,0010h
mov ax,001ah
mov bx,001bh
push ax
push bx
sub ax,ax
sub bx,bx
pop bx
pop ax
然后单步执行,查看内存就发现有的数据有改写。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-12-1 22:04:52 | 显示全部楼层
不过你自己的数据不会被改,这就够了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-12-6 04:15:01 | 显示全部楼层
系统会随时接收各种中断信号,此时会压栈保存现场(要知道,push再pop的话,原来的数据并不是移动走,而是复制),因此,栈空间会变得比较奇怪~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-18 06:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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