日期:2014-05-16  浏览次数:20585 次

保护模式杂问

我想知道一下《自己动手写操作系统》中,对于保护模式的第一个练习,总结台下步骤:
(1)准备GDT;
  (2)用lgdt加载gdtr,
(3)打开A20;
(4)置cr0的PE位。
(5)跳转,进入保护模式。

我想知道,这个步骤,有没有可能有另外一个步骤,
如1 2 43 5,或是1   4   3   2   5  


LABEL_DESC_CODE32: Descriptor               0,   SegCode32Len   -   1,   DA_C   +   DA_32;   非一致代码段,   32
在该例子中,DA_C   +   DA_32空间是两值是加起来,还是把两值并列起来,比如da_c=fa,da_32=eb,那么,两者加起来,
应该是0x15呢不是faeb??谢谢

------解决方案--------------------
置cr0的PE位就宣告已经进入保护模式,而其他的设置是在实模式下进行的,所以我认为第4步必须在后面
DA_C + DA_32两值相加是为了设置属性,属性的设置由很多二进制位构成,将这两个值换算为2进制数我们会发现它们其实不可能在同一个位都为1,所以将它们相加其实就是将两个属性合并,就好像先用DA_C设置了某些属性位然后又用DA_32设置了另一些属性位。