您的位置:首页 > 编程语言

跟大师学习系统编程---操作系统加载(9)

2017-11-02 08:36 351 查看

为保护模式做准备

X86保护模式编程需要用到全局描述符表和中断描述符表

加载中断描述符表和全局描述符表。

全局描述符和中断描述符的相关背景知识请参考xxx

! then we load the segment descriptors

end_move:
mov ax,#SETUPSEG    ! right, forgot this at first. didn't work :-)
mov ds,ax
lidt    idt_48      ! load idt with 0,0
lgdt    gdt_48      ! load gdt with whatever appropriate


让系统能寻址1M以上的内存

并开启A20地址线(在实模式下只能寻址1M的内存,在保护模式下需要寻址超过1M的内存,所以要把这个开关打开)。虽然打开的方式比较特别(通过键盘控制器),但仍然达到了目标。

! that was painless, now we enable A20

call    empty_8042
mov al,#0xD1        ! command write
out #0x64,al
call    empty_8042
mov al,#0xDF        ! A20 on
out #0x60,al
call    empty_8042
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  操作系统 编程 x86