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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值