保护模式杂问
我想知道一下《自己动手写操作系统》中,对于保护模式的第一个练习,总结台下步骤:
(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设置了另一些属性位。