在虚拟dos下,debug到pop ax 会出错,出错的原因在于现场信息的没被完全保存。t命令会产生中断,所以就需要把现场信息(标志寄存器 cs ip)依次压栈到栈段;
当执行add sp,4后,可以用-d cs:0 5查得:
2000:0000 A7 15 89 0F 20 20
非常恰好的是cs=15A7 ,所以标志寄存器中内容为0F89,ip是最后压栈的,但是ip的值在栈段中是不存在的。
把add sp,4换成add sp,m(m>=6),就不会出错。用-d查得:
2000:0000 08 00 A7 15 89 0F
同样用-r...