无坚不摧 发表于 2012-11-29 22:05:10

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

我将2000:0~2000:f的空间当作栈,这段空间原来数据全为0.执行push2次写入内存中的数据没错,可为什么其他地方会有数据被改写呢?还有pop后数据读出,原来地方的数据会被改写,并非书上写的要push进新数据后才覆盖呢?

拉登o睡觉 发表于 2012-11-29 22:38:22

有可能是系统默认修改,也可能是有些其它操作修改了你的栈啊,把过程说清楚点吧,这样的话,我感觉有太多可能啦!

网络学习 发表于 2012-11-30 00:01:45

期待大侠讲解

Black_F.c 发表于 2012-12-1 10:18:37

说的不够清楚

无坚不摧 发表于 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
然后单步执行,查看内存就发现有的数据有改写。

志华 发表于 2012-12-1 22:04:52

不过你自己的数据不会被改,这就够了。

张国祥 发表于 2012-12-6 04:15:01

系统会随时接收各种中断信号,此时会压栈保存现场(要知道,push再pop的话,原来的数据并不是移动走,而是复制),因此,栈空间会变得比较奇怪~
页: [1]
查看完整版本: push后栈中数据,和pop后栈中数据问题?