QQ329956247 发表于 2013-5-11 18:51:09

汇编出栈后栈里面的内容也跟着改变吗??

代码如下
assume cs:codesg
codesg segment
dw 0123h,0456h,0780h,0abch,0defh,0fedh,0cbah,0987h
dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
start :
mov ax,cs
      mov ss,ax
mov sp,30h
mov cx,8
mov bx,0
s: push cs:
   add bx,2
   loop s

mov bx,0
mov cx,8
s0:pop cs:
   add bx,2
loop s0

mov ax,4c00h
int 21h
codesg ends
end start
出栈前

出栈后

福禄娃娃 发表于 2013-5-11 19:54:01

我只是路过打酱油的。

☆小韦QQ 发表于 2013-5-12 00:04:39

内容应该是没变的,变的是索引的位置吧~~!我只是路过打酱油的。

hide2may 发表于 2013-5-12 00:17:36

我只是路过打酱油的。

haking 发表于 2013-5-12 01:50:35

栈刚开始没东西,入栈了你就添加东西了,出栈你就把东西拿走了。他还有东西吗?

dAb 发表于 2013-5-12 02:24:55

我只是路过打酱油的。我估计你问的应该和你想知道的不是一个样。按问题回答的就是,出栈后,原来的栈地址留下的还是你先前压栈的内容,也有可能改变,因为系统别的东西可能在这里存入别的数据。。。可能是你还不了解栈,出栈后你还管它改不改变啊,你要知道的是你压栈了什么,然后出栈的是什么,这都是需要平衡的,要不就会出错,,出栈后,原来地址的东西都可以视为垃圾内容,不必理会了。。这个多实践,多用调试看内存,以后就慢慢知道了

QQ329956247 发表于 2013-5-12 10:10:42

☆小韦QQ 发表于 2013-5-12 00:04 static/image/common/back.gif
内容应该是没变的,变的是索引的位置吧~~!我只是路过打酱油的。

这里好像是变了内容

QQ329956247 发表于 2013-5-12 10:13:05

dAb 发表于 2013-5-12 02:24 static/image/common/back.gif
我只是路过打酱油的。我估计你问的应该和你想知道的不是一个样。按问题回答的就是,出栈后,原来的栈地址留 ...

但是甲鱼哥好像说出栈后内容还存在那里啊,所以我就做个试验来看看,但是好像很他讲的不太一样,改变了内容里面的内容

☆小韦QQ 发表于 2013-5-12 13:06:07

呵呵~~!书上这么说的,我想可能是被重新push入栈的数据被覆盖了吧~!

bafengao 发表于 2013-5-12 13:27:18

强烈支持楼主ing……

dAb 发表于 2013-5-12 19:17:52

QQ329956247 发表于 2013-5-12 10:13 static/image/common/back.gif
但是甲鱼哥好像说出栈后内容还存在那里啊,所以我就做个试验来看看,但是好像很他讲的不太一样,改变了内 ...

记得以前我实验过,DOS下的是有改变的,理论上这个地址的数据出栈后,还是原来的数据,因为出栈不会改变原数据,只是栈指针改变了。不过原来这位置可能会被系统或别的程序输入数据,是有可能改变的。。
话说回来,这个问题跟本不用纠结,出栈后就不必理会原位置的数据了,是什么都对我们编程没什么用处,以后的分析调试有可能要追踪下栈的痕迹,不过那是调试器的功能,我们跟着调试器走就是了。。。

rainbowofmagic 发表于 2013-5-13 11:25:25

嗯,出栈后的内容没有进行清理或者覆盖就还是原来的内容,楼主的栈内容可能又重写了。

cqk2980 发表于 2013-5-13 11:29:25

激动人心,无法言表!
页: [1]
查看完整版本: 汇编出栈后栈里面的内容也跟着改变吗??