是否有简单的代码可以切换到保护模式? (对于NASM)是的 - 我尝试使用Google解决它。不过,我不明白如何...以及如何加载内核(在此模式下),它位于VBR后面? (首先是512字节,大小为512字节)谢谢!
答案 0 :(得分:0)
在保护模式下,您无权访问BIOS来为您执行操作。您需要编写驱动程序以便引导程序加载内核并启动它。相对较小的内核(小于~640kb)的另一种方法是,当你仍然处于实模式时,用BIOS加载它,一旦处于保护模式,就将它从低内存中移开并启动它。
答案 1 :(得分:0)
我已经做了很长时间但是如果我没记错,在你可以从真实模式切换到保护模式之前你必须重置8259控制器(Pic),但是再次重置i386芯片所以这可能不再是必要的了。
然后使用CR0切换到保护模式。
mov eax, cr0
inc eax ; PE bit must be set
mov cr0, eax ; store the new value in CR0
jmp dword pSelector ; switch to selector
显然,在你可以切换到保护模式之前,你必须设置IDT,GDT和e特别注意有一个双故障处理程序(不要问)。 如果您正在使用GAS,那么您必须将其转换为以下内容:
mov %cr0, %eax
inc %eax
mov %eax, %cr0
jmp pSelector
关于i386编程有一些不错的书籍,我相信AMD手册会告诉你如何从真实模式切换到保护模式:)