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

本文详细介绍了如何为X86架构的保护模式做准备,包括加载全局描述符表和中断描述符表,以支持更复杂的系统编程。同时,通过开启A20地址线,使得系统能够寻址1M以上的内存,突破了实模式下的内存限制,这一过程涉及到对键盘控制器的特殊操作。

为保护模式做准备

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值