汇编出栈后栈里面的内容也跟着改变吗??
代码如下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
出栈前
出栈后
我只是路过打酱油的。 内容应该是没变的,变的是索引的位置吧~~!我只是路过打酱油的。 我只是路过打酱油的。 栈刚开始没东西,入栈了你就添加东西了,出栈你就把东西拿走了。他还有东西吗? 我只是路过打酱油的。我估计你问的应该和你想知道的不是一个样。按问题回答的就是,出栈后,原来的栈地址留下的还是你先前压栈的内容,也有可能改变,因为系统别的东西可能在这里存入别的数据。。。可能是你还不了解栈,出栈后你还管它改不改变啊,你要知道的是你压栈了什么,然后出栈的是什么,这都是需要平衡的,要不就会出错,,出栈后,原来地址的东西都可以视为垃圾内容,不必理会了。。这个多实践,多用调试看内存,以后就慢慢知道了 ☆小韦QQ 发表于 2013-5-12 00:04 static/image/common/back.gif
内容应该是没变的,变的是索引的位置吧~~!我只是路过打酱油的。
这里好像是变了内容 dAb 发表于 2013-5-12 02:24 static/image/common/back.gif
我只是路过打酱油的。我估计你问的应该和你想知道的不是一个样。按问题回答的就是,出栈后,原来的栈地址留 ...
但是甲鱼哥好像说出栈后内容还存在那里啊,所以我就做个试验来看看,但是好像很他讲的不太一样,改变了内容里面的内容 呵呵~~!书上这么说的,我想可能是被重新push入栈的数据被覆盖了吧~! 强烈支持楼主ing…… QQ329956247 发表于 2013-5-12 10:13 static/image/common/back.gif
但是甲鱼哥好像说出栈后内容还存在那里啊,所以我就做个试验来看看,但是好像很他讲的不太一样,改变了内 ...
记得以前我实验过,DOS下的是有改变的,理论上这个地址的数据出栈后,还是原来的数据,因为出栈不会改变原数据,只是栈指针改变了。不过原来这位置可能会被系统或别的程序输入数据,是有可能改变的。。
话说回来,这个问题跟本不用纠结,出栈后就不必理会原位置的数据了,是什么都对我们编程没什么用处,以后的分析调试有可能要追踪下栈的痕迹,不过那是调试器的功能,我们跟着调试器走就是了。。。 嗯,出栈后的内容没有进行清理或者覆盖就还是原来的内容,楼主的栈内容可能又重写了。 激动人心,无法言表!
页:
[1]