Des_32  EQU 4000h ; 32 位段
Des_16  EQU 0000h ; 16 位段
Des_G  EQU 8000h ; 段界限粒度, G=1 表示界限粒度为4K 字节


Des_DPL0  EQU   00h ; DPL = 0 00 0  0000
Des_DPL1  EQU   20h ; DPL = 1 01 0  0000
Des_DPL2  EQU   40h ; DPL = 2 10 0  0000
Des_DPL3  EQU   60h ; DPL = 3 11 0  0000

Des_DR  EQU 90h ;1001  0000  存在的 只读     数据段类型值
Des_DRW  EQU 92h ;1001  0010  存在的 可读写   数据段属性值
Des_DRWA EQU 93h ;1001  0011  存在的 可读写  已访问  数据段类型值

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

Des_C  EQU 98h ;1001  1000  存在的 只执行  代码段属性值
Des_CR  EQU 9Ah ;1001  1010  存在的 可执行可读  代码段属性值
Des_CE  EQU 9Ch ;1001  1100  存在的 只执行    一致 代码段属性值
Des_CER  EQU 9Eh ;1001  1110  存在的 可执行可读一致  代码段属性值

 

Des_LDT  EQU   82h ;1000  0010  局部描述符表段类型值
Des_TaskGate EQU   85h ;1000  0101  任务门类型值
Des_386TSS EQU   89h ;1000  1001 可用 386 任务状态段类型值
Des_386CGate EQU   8Ch ;1000  1100  386 调用门类型值
Des_386IGate EQU   8Eh ;1000  1110  386 中断门类型值
Des_386TGate EQU   8Fh ;1000  1111  386 陷阱门类型值

Sel_RPL0  EQU 0 ; ┓
Sel_RPL1  EQU 1 ; ┣ RPL
Sel_RPL2  EQU 2 ; ┃
Sel_RPL3  EQU 3 ; ┛

Sel_TIG  EQU 0 ; ┓TI
Sel_TIL  EQU 4 ; ┛

PG_P  EQU 1 ; 页存在属性位
PG_RWR  EQU 0 ; R/W 属性位值, 读/执行
PG_RWW  EQU 2 ; R/W 属性位值, 读/写/执行
PG_USS  EQU 0 ; U/S 属性位值, 系统级
PG_USU  EQU 4 ; U/S 属性位值, 用户级

%macro Descriptor 3     ; 段基址, 段界限,  属性
 dw %2 & 0FFFFh    ; 段界限 1    (2 字节)
 dw %1 & 0FFFFh    ; 段基址 1    (2 字节)
 db (%1 >> 16) & 0FFh   ; 段基址 2    (1 字节)
 dw ((%2 >> 8) & 0F00h) | (%3 & 0F0FFh) ; 属性 1 + 段界限 2 + 属性 2  (2 字节)
 db (%1 >> 24) & 0FFh   ; 段基址 3    (1 字节)
%endmacro ; 共 8 字节

%macro Gate 4      ; 选择子、偏移、属性1、属性2
 dw (%2 & 0FFFFh)    ; 偏移 1    (2 字节)
 dw %1     ; 选择子    (2 字节)
 dw (%3 & 1Fh) | ((%4 << 8) & 0FF00h) ; 属性     (2 字节)
 dw ((%2 >> 16) & 0FFFFh)   ; 偏移 2    (2 字节)
%endmacro ; 共 8 字节

 posted on 2008-11-17 23:06  sun_kang  阅读(171)  评论(0编辑  收藏  举报