在写自己的操作系统时,不能总在实模式下,进入保护模式才是"正道",不过怎么进入保护模式又是一个问题,我把
XuOS里进入保护模式的代码分析一下.
; 装入GDT
mov eax,ds ;设置GDT在物理内存中的正确位置
shl eax,4
add [gdt_addr+2],eax
cli ; 关中断
lgdt [gdt_addr] ;载入GDT
; 下面打开A20地址线,这段代码可以在OSzone上找到相关解释.
call Empty_8042
mov al,0xd1
out 0x64,al
call Empty_8042
mov al,0xdf
out 0x60,al
call Empty_8042
; 进入保护模式
mov eax,cr0 ;置PE位
or eax,1
mov cr0,eax
jmp oscodesel:code_32 ; 跳到32位代码处执行
Empty_8042:
in …
阅读全文 »
近期评论