dfsgfdhgdyjfhg 发表于 2013-4-9 15:53:06

把栈中数据逆序怎么会这样

codesg segment
                dw 0123h,0456h,0789h,0defh,0cbah,0987h
                dw 0,0,0,0,0,0,0,0,
       
start:        mov ax,cs
                mov ss,ax
                mov sp,32
                mov bx,0
                mov cx,8
        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这个是照着视屏打的,跟视频改了几次,应该没打错,但是我debug的时候感觉很奇怪

这个是之前的

这个是运行到最后用d命令出来的
为什么会这样

思来想去 发表于 2013-4-10 08:18:00

逆序存放,数据出来的就是逆的。
无回帖,不论坛,这才是人道。

dfsgfdhgdyjfhg 发表于 2013-4-10 20:22:59

思来想去 发表于 2013-4-10 08:18 static/image/common/back.gif
逆序存放,数据出来的就是逆的。
无回帖,不论坛,这才是人道。

奇怪的是原本为0的位置变成了其他的数,还有用来当栈的地址上的数也变成了其他的数,而不是原来放进栈中的数,这些代码中貌似没有对这地址放入其他的数为什么还会这样??

思来想去 发表于 2013-4-10 21:19:36

虚拟的8086模式,有数据应该是正常的,我认为是这样的
无回帖,不论坛,这才是人道。

dfsgfdhgdyjfhg 发表于 2013-4-10 22:24:08

思来想去 发表于 2013-4-10 21:19 static/image/common/back.gif
虚拟的8086模式,有数据应该是正常的,我认为是这样的
无回帖,不论坛,这才是人道。

由0变成其他数字,栈中,原本入栈的数字在出栈后该栈中的内容发生改变.....
那么......推论:进行栈操作的时候会对该地址空间的内容进行改变?
                  还是,有其他程序的操作对这些空间进行了改变??
页: [1]
查看完整版本: 把栈中数据逆序怎么会这样