读书人

栈顶有一个B612不停的移动为什么?解

发布时间: 2012-02-29 16:44:10 作者: rapoo

栈顶有一个B612不停的移动,为什么?
我用下面代码在虚拟DOS下用debug观察压栈:

Assembly code
assume cs:code    code segment        mov ax,1001h        mov ss,ax        mov sp,0010h        mov cx,60h  ;希望观察栈溢出        mov ax,4444h   s:   push ax        loop s        mov ax,4c00h        int 21h    code endsend


发现栈顶有一个 B612不停的移动,为什么?
其次,我想观察栈溢出后的情况,但执行到sp=0004时,自动退出了loop。
为什么?
谢谢!

[解决办法]
如果sp 值设置太小,那么就无法实现 指定次数的进栈。 每次进栈, 使用 d命令 查看栈内存,都会发现, 内存单元里的内容都 莫名其妙的发生改变,当然也包括 自己进栈的 内容。内存单元里的内容都 莫名其妙的发生改变,那么就导致 占用 自己那么 进栈 数据需要使用的内存。

可是,为什么会发生这种改变呢?

读书人网 >汇编语言

热点推荐