boot/include/pm.inc

Code:
  1. ;By Marcus Xing   
  2. ;boot/include/pm.inc   
  3. ;保护模式下的宏定义,供boot文件夹下的文件使用   
  4.   
  5. ; 描述符类型   
  6. DA_32       EQU 4000h   ; 32 位段   
  7. DA_LIMIT_4K EQU 8000h   ; 粒度4K   
  8.   
  9. DA_DPL0     EQU   00h   ; DPL = 0  
  10. DA_DPL1     EQU   20h   ; DPL = 1  
  11. DA_DPL2     EQU   40h   ; DPL = 2  
  12. DA_DPL3     EQU   60h   ; DPL = 3  
  13.   
  14. ; 存储段描述符类型   
  15. DA_DR       EQU   90h   ; 存在的只读数据段类型值   
  16. DA_DRW      EQU   92h   ; 存在的可读写数据段属性值   
  17. DA_DRWA     EQU   93h   ; 存在的已访问可读写数据段类型值   
  18. DA_C        EQU   98h   ; 存在的只执行代码段属性值   
  19. DA_CR       EQU   9Ah   ; 存在的可执行可读代码段属性值   
  20. DA_CCO      EQU   9Ch   ; 存在的只执行一致代码段属性值   
  21. DA_CCOR     EQU   9Eh   ; 存在的可执行可读一致代码段属性值   
  22.   
  23. ; 系统段描述符类型   
  24. DA_LDT      EQU   82h   ; 局部描述符表段类型值   
  25. DA_TaskGate EQU   85h   ; 任务门类型值   
  26. DA_386TSS   EQU   89h   ; 可用 386 任务状态段类型值   
  27. DA_386CGate EQU   8Ch   ; 386 调用门类型值   
  28. DA_386IGate EQU   8Eh   ; 386 中断门类型值   
  29. DA_386TGate EQU   8Fh   ; 386 陷阱门类型值   
  30.   
  31. ; 选择子类型   
  32. SA_RPL0     EQU 0   ; ┓   
  33. SA_RPL1     EQU 1   ; ┣ RPL   
  34. SA_RPL2     EQU 2   ; ┃   
  35. SA_RPL3     EQU 3   ; ┛   
  36.   
  37. SA_TIG      EQU 0   ; ┓TI   
  38. SA_TIL      EQU 4   ; ┛   
  39. ;----------------------------------------------------------------------------   
  40.   
  41. ;宏   
  42.   
  43. ;%1 Base      
  44. ;%2 Limit      
  45. ;%3 Attr      
  46. %macro  Descriptor 3      
  47.   dw %2 & 0ffffh      
  48.   dw %1 & 0ffffh      
  49.   db (%1 >> 16) & 0ffh      
  50.   db %3 & 0ffh      
  51.   db ((%3 >> 8) & 0ffh) | ((%2 >> 16) & 0fh)      
  52.   db (%1 >> 24) & 0ffh      
  53. %endmacro     
  54.   
  55. ;%1 Selector   
  56. ;%2 Offset   
  57. ;%3 Para Count   
  58. ;%4 Attr   
  59. %macro Gate 4   
  60.   dw %2 & 0ffffh   
  61.   dw %1 & 0ffffh   
  62.   db %3 & 00011111b   
  63.   db %4 & 0ffh   
  64.   dw (%2 >> 16) & 0ffffh   
  65. %endmacro   
  66.   
  67. ;%1 Descriptor's Offset      
  68. ;%2 Segment's Offset      
  69. %macro  Fill_Descriptor 2      
  70.   xor eax,eax      
  71.   mov ax,cs      
  72.   shl eax,4      
  73.   add eax,%2      
  74.   mov word [%1 + 2],ax      
  75.   shr eax,16      
  76.   mov byte [%1 + 4],al      
  77.   mov byte [%1 + 7],ah      
  78. %endmacro      
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值