保护模式
-
准备GDT(全局描述符表)
-
加载GDTR
-
设置CR0寄存器
mov eax, cr0
or eax, 1
mov cr0, eax
- 跳转到保护模式代码
jmp dword code_selector:offset
保护模式与实模式的区别
- 内存寻址方式
- 实模式: 段基址:偏移地址,最大寻址1MB
- 保护模式: 通过段选择子和段描述符,最大寻址4GB
- 特权级别
- 实模式: 无特权级别保护
- 保护模式: 4个特权级别(Ring 0-3)
- 内存保护
- 实模式: 程序可以访问任意内存
- 保护模式: 具有内存保护机制
注意事项
- 进入保护模式前需要关中断
- 需要预先设置好段描述符
- 跳转后需要重新设置段寄存器