进入保护模式

  1. 设置全局描述符表
  2. 打开A20地址线
    在实模式采用段基址:段内偏移地址的形式, 有20根地址线,最大寻址空间1MB, 但这种寻址方式可以寻址范围0x0000: 0x0000 ~ 0xffff: 0xffff, 即0 ~ 0x10ffef, 而20位地址线的访问空间是0 ~ 0xfffff, 即1MB范围, 所以当寄存器的表示范围超过地址线所能表示的范围后, 会发生地址会绕, 即或舍弃高位的溢出, 比如, 0x10000寻址到0x0000所表示的内存地址.
    CPU发展到了80286后, 虽然地址总线从原来的20位发展到了24位, 从而能够访问的内存范围可以到达2的24次方, 等于16MB. 但任何时候, Intel都会把兼容放在第一位. 80286是第一款具有保护模式的CPU, 他在实模式下时, 其表现也应该和8086/8088完全一样, 即仍然只使用20条地址线. 但80286有24条地址线, 要访问它所有的内存地址空间, 为了解决它, IBM在键盘控制器上的一些输出线来控制第21位(A20)的有效性, 故被称为A20Gate
    in al, 0x92
    or al, 0000_0010B
    out 0x92, al
    对于80286后续的CPU, 通过A20GATE来控制A20地址线
  3. 保护模式的开关, CR0寄存器的PE位
    这是进入保护模式的最后一步, 这一步过后, 我们将突破1MB内存的束缚.
    在前面说寄存器的时候, 有讲到过控制寄存器CRx. 控制寄存器是CPU的窗口,既可以用来展示CPU的内部状态, 也可用于控制CPU的运行机制. 这次我们要用到的是CR0寄存器. 更准确的说, 我们要用到寄存器的第0位, 即PE(Protection Enable)位, 此位用于启用保护模式, 是保护模式的开关. 当打开此位后, CPU才真正进入保护模式.
    mov eax, cr0
    or eax, 0x00000001
    mov cr0, eax
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值