cs寄存器 x86 特权模式_操作系统-保护模式中的特权级

一.保护模式中的特权级(上)

A.保护模式小结

a.使用选择子访问段描述符表时,索引值的合法性检测

1.当索引值越界时,引发+异常

2.判断的规则是:索引值 x8+7<=段描述表界限值

b.内存段类型合法检测性

1.具备可执行属性的段(代码段)只能加载到CS寄存器

2.具备可写属性的段(数据段)才能加载到SS寄存器

3.具备只读属性的段才能加载到DS,ES,FS,GS寄存器

c.代码段和数据段的保护

1.处理器每访问一个地址都要确认该地址不超过界限值

2.判断规则:代码段:IP+指令长度<=代码段界限;数据段:访问起始地址+访问数据长度<=数据段界限

在这里需要注意的是:保护模式中代码中定义的界限值通常为:最大偏移地址值(相对于段基地址)

d.代码示例

%include "inc.asm"

org 0x9000

jmp ENTRY_SEGMENT

[section .gdt]

; GDT definition

; ¶Î»ùÖ·£¬ ¶ÎœçÏÞ£¬ ¶ÎÊôÐÔ

GDT_ENTRY : Descriptor 0, 0, 0

CODE32_DESC : Descriptor 0, Code32SegLen - 1, DA_C + DA_32

VIDEO_DESC : Descriptor 0xB8000, 0x07FFF, DA_DRWA + DA_32

DATA32_DESC : Descriptor 0, Data32SegLen - 1, DA_DR + DA_32

STACK32_DESC : Descriptor 0, TopOfStack32, DA_DRW + DA_32

; GDT end

GdtLen equ $ - GDT_ENTRY

GdtPtr:

dw GdtLen - 1

dd 0

; GDT Selector

Code32Selector equ (0x0001 << 3) + SA_TIG + SA_RPL0

VideoSelector equ (0x0002 <<

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值