首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

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

2012-02-29 
栈顶有一个B612不停的移动,为什么?我用下面代码在虚拟DOS下用debug观察压栈:Assembly codeassume cs:codec

栈顶有一个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命令 查看栈内存,都会发现, 内存单元里的内容都 莫名其妙的发生改变,当然也包括 自己进栈的 内容。内存单元里的内容都 莫名其妙的发生改变,那么就导致 占用 自己那么 进栈 数据需要使用的内存。

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

热点排行