保护模式中描述符的属性

描述符属性

保护模式中描述符的属性

一致与非一致

  • 当转移的目标是一个特权级更高的一致代码段,当前的
    特权级会被延续下去
  • 而向特权级更高的非一致代码段的转移会引起常规保护错误,除非使用调用门或者任务门。
  • 如果系统代码不访问受保护的资源和某些类型的异常处理,它可以被放在一致代码段中。为避免低特权级的程序访问而被保护起来的系统代码则应放到非一致代码段中。
  • 如果目标代码的特权级低的话,无论它是不是一致代码段,都不能通过call或者jmp转移进去,尝试这样的转移将会导致常规保护错误。
  • 所有的数据段都是非一致的,这意味着不可能被低特权级的代码访问到。
  • 数据段可以被更高特权级的代码访问到,而不需要使用特定的门。

保护模式中描述符的属性

代码解释

  • 在之前的代码中,可以看到代码段的属性是"DA_C + DA_32"
  • pm.inc中有定义:
    ; 描述符类型
    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_CCO		EQU	9Ch	; 存在的只执行一致代码段属性值
    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 陷阱门类型值
    
  • DA_C 是98h,对应的二进制是 1001 1000;DA_32是4000h,对应的二进制是 0100 0000 0000 0000
    P位是1表明这个段在内存中存在,S位是1表明这个段是代码段或者数据段,TYPE=8表明这个段是个代码段,且是只执行的代码段。
    ,由于这个段是代码段,D位是1表明这个段是32位的代码段。所以,这个段是存在的只执行的32位代码段,DPL为0。
    保护模式中描述符的属性
上一篇:学 Win32 汇编[13]: 定义符号常量(=、EQU、TEXTEQU)


下一篇:1401【毕设课设】基于单片机汇编语言抢答器系统设计-汇编