为保护模式做准备
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架构的保护模式做准备,包括加载全局描述符表和中断描述符表,以支持更复杂的系统编程。同时,通过开启A20地址线,使得系统能够寻址1M以上的内存,突破了实模式下的内存限制,这一过程涉及到对键盘控制器的特殊操作。
&spm=1001.2101.3001.5002&articleId=78420713&d=1&t=3&u=fad0ccd5df82437aa4a5c84a9275be68)
520

被折叠的 条评论
为什么被折叠?



