Chinaunix首页 | 论坛 | 博客
  • 博客访问: 203306
  • 博文数量: 67
  • 博客积分: 2720
  • 博客等级: 少校
  • 技术积分: 625
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-05 13:53
文章分类
文章存档

2011年(1)

2010年(43)

2009年(23)

我的朋友

分类:

2009-12-17 18:57:11



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) |
给主人留下些什么吧!~~