现在的位置: 首页 > 技术文章 > 正文

段描述符属性

2014年03月05日 技术文章 ⁄ 共 1884字 ⁄ 字号 段描述符属性已关闭评论 ⁄ 阅读 1,907 次

段描述符属性占5、6字节,其具体特性如下:

段描述符属性

在这里主要介绍第5字节的内容。

1、 P:存在(Present)位。

1 表示段在内存中存在

0 表示段在内存中不存在

2、 DPL:表示描述符特权级(Descriptor Privilege level),共2位。

它规定了所描述段的特权级,用于特权检查,以决定对该段能否访问。

3、 S:说明描述符的类型。

1 数据段和代码段描述符

0系统段描述符和门描述符

4、 TYPE:说明存储段描述符所描述的存储段的具体属性

数据段类型:

类型值              说明

---------------------------------

0                只读

1                只读、已访问

2                读/写

3                读/写、已访问

4                只读、向下扩展

5                只读、向下扩展、已访问

6                读/写、向下扩展

7                读/写、向下扩展、已访问

代码段类型:

类型值              说明

---------------------------------

8                只执行

9                只执行、已访问

A                执行/读

B                执行/读、已访问

C                只执行、一致码段

D                只执行、一致码段、已访问

E                执行/读、一致码段

F                执行/读、一致码段、已访问

系统段类型:

类型编码         说明

----------------------------------

0                <未定义>

1                可用286TSS

2                LDT

3                忙的286TSS

4                286调用门

5                任务门

6                286中断门

7                286陷阱门

8                未定义

9                可用386TSS

A                <未定义>

B                忙的386TSS

C                386调用门

D                <未定义>

E                386中断门

F                 386陷阱门

三、pm.inc中的宏定义

在程序中,我们定义属性时,使用了pm.inc中的宏定义DA_DRW、DA_C、DA_32、DA_DRW、DA_DRWA。下面让我来向大家解释这些宏定义。

DA   : Descriptor Attribute

D    : 数据段

C    : 代码段

S    : 系统段

R    : 只读

RW   : 读写

A    : 已访问

-----------------------------------------------------------

DA_32               EQU 4000h       ; 32 位段

DA_DPL0          EQU   00h        ; DPL = 0

DA_DPL1          EQU   20h        ; DPL = 1

DA_DPL2          EQU   40h        ; DPL = 2

DA_DPL3          EQU   60h        ; DPL = 3

-----------------------------------------------------------

存储段描述符类型值说明

-----------------------------------------------------------

DA_DR                  EQU 90h  ; 存在的只读数据段类型值

DA_DRW              EQU 92h  ; 存在的可读写数据段属性值

DA_DRWA            EQU 93h  ; 存在的已访问可读写数据段类型值

DA_C                     EQU 98h  ; 存在的只执行代码段属性值

DA_CR                  EQU 9Ah  ; 存在的可执行可读代码段属性值

DA_CCOR            EQU 9Eh  ; 存在的可执行可读一致代码段属性值

-----------------------------------------------------------

系统段描述符类型值说明

-----------------------------------------------------------

DA_LDT             EQU   82h       ; 局部描述符表段类型值

DA_TaskGate    EQU   85h       ; 任务门类型值

DA_386TSS      EQU   89h       ; 可用 386 任务状态段类型值

DA_386CGate   EQU   8Ch       ; 386 调用门类型值

DA_386IGate     EQU   8Eh       ; 386 中断门类型值

DA_386TGate    EQU   8Fh       ; 386 陷阱门类型值

×