什么是实模式、保护模式和虚拟8086方式(2)
发布时间:2021-06-08
发布时间:2021-06-08
1:实模式:寻址采用和8086相同的16位段和偏移量,最大寻址空间1MB,最大分段64KB。可以使用32位指令。32位的x86 CPU用做高速的8086。2:保护模式:寻址采用32位段和偏移量,最大寻址空间4GB,最大分段4GB (Pentium Pro及以后为64GB)。在保护模式下CPU可以进入虚拟8086方式,这是在保护模式下的实模式程序运行环境。
无论实模式还是保护模式,根本的问题还是程序如何在其中运行。 因此我们在学习保护模式时应该时刻围绕这个问题来思考。
和实模式下一样,保护模式下程序运行的实质仍是“CPU执行指令, 操作相关数据”,因此实模式下的各种代码段、数据段、堆栈段、中 断服务程序仍然存在,且功能、作用不变。
那么保护模式下最大的变化是什么呢?答案可能因人而异,我的 答案是“地址转换方式”变化最大。
第三:地址转换方式比较
先看一下实模式下的地址转换方式,假设我们在ES中存入0x1000, DI中存入0xFFFF,那么ES:DI=0x1000*0x10+0xFFFF=0x1FFFF,这就是众
所周知的“左移4位加偏移”。
那么如果在保护模式下呢?假设上面的数据不变ES=0x1000, DI=0xFFFF,现在ES:DI等于什么呢?
公式如下:(注:0x1000=1000000000000b= 10 0000 0000 0 00) ES:DI=全局描述符表中第0x200项描述符给出的段基址+0xFFFF 现在比较一下,好象是不一样。再仔细看看,又好象没什么区别! 为什么说没什么区别,因为我的想法是,既然ES中的内容都不是 真正的段地址,凭什么实模式下称ES为“段寄存器”,而到了保护模式
就说是“选择子”?
下一篇:苏联的氢弹是独立研制的吗