操作系统真相还原第四章-------进入保护模式

进入保护模式主要有三个步骤:
1.打开a20地址使能:
in al,0x92
or al,0000_0010B
out 0x92,al
2.构建GDT表,初始化出代码段、数据段、栈段的段描述符,确定各个段的起始地址,段的大小,以及访问权限等信息。
GDT表的第一项初始化为全0.
3.使能creg0的第0位
mov eax,cr0
or eax,0x00000001
mov cr0,eax

整个代码如下所示:
boot.inc

LOADER_BASE_ADDR equ 0x900
LOADER_START_SECTOR equ 0x2
;一一一一一一- gdt 描述符属性 一一一一一一-

G_4k equ 1_00000000000000000000000b
D_32 equ 1_0000000000000000000000b
L equ 0000000000000000000000b
AVL equ 000000000000000000000b
LIMIT_DATA equ 1111_0000000000000000b
LIMIT_CODE equ LIMIT_DATA
LIMIT_VIDIO equ 0000_0000000000000000b
P equ 1_000000000000000b ;当时这个位置成了0,导致发生错误,不能打开32位地址
DPL_USR equ 11_0000000000000b
DRL_OS equ 00_0000000000000b
S equ 1_000000000000b
TYPE_CODE equ 1000_00000000b
TYPE_DATA equ 0010_00000000b

;代码段高32

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值