您的位置:首页 > 其它

对保护模式及模式及其之间的转换的进一步理解

2007-04-08 20:04 267 查看
现在正在看于渊的《自己动手写操作系统》,里面的保护模式讲的算是比较详细的了,但是我还是有一些疑问。对实模式到保护模式之间的转换没有深入的理解。

今天看了梁大师的《编程高手箴言》,在第二章的最后,总结的几句话,让我如梦惊醒,对保护模式有了更深的理解

1.地址的形成与CPU的工作模式无关,实模式与0特权级保护模式不分页时是一样的

2.CS、DS等段寄存器的值只有在被装入时,才对CPU有用,其他时候CPU不会理会CS的值,所以,从实模式-》保护模式—》实模式,CS的值虽然不变,程序仍能正常执行。因为在实模式下当前指令的地址为:cs×16+offset,而在保护模式下,当前指令的地址为:cs所指向的描述符所指未的基址+offset

当在程序中执行:


mov eax,cr0


or eax,01h


mov cr0,eax



进入保护模式,这中间并没有对CS进行改变。这里面的原因就是因为在程序执行的过程中,如果没有对CS进行重新装载,CPU并不管此时CS的值是多少,而执行下一条指令时,仅对 IP = IP + 1,指向下一条指令的地址

所以,根据以上的说明,你可能就会想到,如果在保护模式下,对FS进行了重新装载,然后回到实模式下,此时并不改变FS的值的话,此时仍可访问系统4G的地址空间(前提是A20地址线必须打开)

3. 如果把IDTR的界限设为0,则CPU自动关闭所有中断,包括NMI
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐