因为MOV SS,段寄存器的操作是原子操作.
堆栈指针是由SS段寄存器和SP组成的,所以修改堆栈的操作需要两条指令,即:
MOV SS,堆栈段指针
MOV SP,堆栈指针
在早期的8086处理器,这两条指令不是原子操作,因此,如果修改SS后发生中断
那么,中断处理程序将得到错误的堆栈,造成系统崩溃,后来INTEL修正了指令系统
在执行 MOV SS,堆栈段指针 以后,自动隐含关闭中断,直到下条指令执行完毕以后,
才会开放中断,实现了修改堆栈的原子操作.
所以,跟在MOV SS,堆栈段指针后的指令,将无法打断,因此不能单步执行.