如何进入保护模式

本文详细介绍了8086到386处理器的进化,特别是如何进入保护模式。保护模式需要设置CR0的PE位,初始化全局描述符表(GDT),解决A20问题,关闭中断,并刷新段寄存器以确保正确操作。GDT提供了段的独立性和内存管理的依据。在进入保护模式前,必须启用A20地址线,以避免寻址问题,同时在set PE后使用特定的跳转指令来更新段寄存器和清空流水线。
摘要由CSDN通过智能技术生成
如何进入保护模式
    这是个复杂的过程,其原因在于保护模式本身是复杂的。
    相对于8086来说,386增加了很多新寄存器,用于支持多任务操作系统,或者说让CPU能工作在保护模式下。CR0就是其中之一。CR指Control Register,控制寄存器。CR0是CR中的一个。CR的最后一个bit是PE位,Protected-mode Enable,保护模式使能位。386开机后工作在实模式,可以通过16位指令置CR0的最后一个bit为1,从此CPU进入保护模式。
    set PE操作虽然能让CPU进入保护模式,但这并不意味着进入保护模式的CPU可以正常工作。这是因为相对于实模式下的CPU,保护模式下的CPU需要依赖一些特殊的数据结构才能正常工作,除此之外,很多琐碎的问题也需要考虑在内。
    首先,为了给存储器内的段提供独立性,386引入了一个数据结构GDT,Global Descriptor Table。386有32位的寄存器,32根地址线,不在依靠分段机制访问“超过寄存器长度的存储器地址(指段地址:偏移的寻址方式)”,但是出于兼容性与内存管理等方面的考虑,段的概念依然被保留在了386内。此时,段机制的意义只在与将存储器分割成了更小的部分。为了让这些段具有独立性,Intel引入了GDT,保存各个段在存储器中的位置与和段隔离有关的信息。该表可以很大,保存在RAM中,而386通过GDTR(GDT Register),一个32(base address) + 16(boundary)= 48位的寄存器,定位GDT的位置。从寄存上看,GDT可以存在于4GB RAM的任何位置,但实模式下,386只能寻址1MB。因此GDT往往在RAM的第一个1MB内。GDT是一个数据结构&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值