栈顶有一个B612不停的移动,为什么?解决办法
栈顶有一个B612不停的移动,为什么?我用下面代码在虚拟DOS下用debug观察压栈:Assembly codeassume cs:codec
栈顶有一个B612不停的移动,为什么?
我用下面代码在虚拟DOS下用debug观察压栈:
Assembly codeassume 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命令 查看栈内存,都会发现, 内存单元里的内容都 莫名其妙的发生改变,当然也包括 自己进栈的 内容。内存单元里的内容都 莫名其妙的发生改变,那么就导致 占用 自己那么 进栈 数据需要使用的内存。
可是,为什么会发生这种改变呢?