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

栈顶有一个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 ends
end


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

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

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