cli 禁止中断发生
sti 允许中断发生
在对 ss 和sp操作的时候, 如果有中断发生,中断的保存现场的操作是将相关寄存器值保存到ss:sp指向的地址.
如果ss 或者sp没有完成赋值操作, 这时候ss:sp指向的地址则是不期望的地方. 如果将系统或者其他应用的数据覆盖,会导致系统/应用崩溃.
下面是两条规则:
1)在改变ss:sp之前,必须用cli指令屏蔽中断,然后等操作执行完立即用sti指令恢复
2)ss:sp需要设置在空闲的内存地址,不要建立在其他的程序代码区
正确的写法:
cli
mov ax,0b900h
mov ss,ax
mov sp,100h
sti
|
阅读(1253) | 评论(0) | 转发(0) |