assume cs:codesg
codesg segment
mov ax,1000h
mov ss,ax
mov sp,4
push ax
push bx
pop ax
pop bx
mov ax,4c00h
int 21h
codesg ends
end
为什么这段程序单步执行时,执行到push ax时会cs的值回跳的一个别的地方去,当我把ss设置为不同的值时,cs调到的地方就不同
具体结果如下图
但是如果我把mov sp,4 改为mov sp,0就可以
------解决方案--------------------------------------------------------
栈设置得太小了。单步跟踪也需要栈,那么点根本不够用,会出现一些错误。具体是怎么回事我懒得研究了。我是在debug里试的,sp改大一点就没问题了。
------解决方案--------------------------------------------------------
居然没有一眼看出来,看来我确实生疏了。