Assembly 进入32位保护模式
我正在开发一个操作系统。根据参考,我必须从16位实模式进入32位保护模式。在该步骤中,其使用指令如下:Assembly 进入32位保护模式,assembly,operating-system,32-bit,protected-mode,Assembly,Operating System,32 Bit,Protected Mode,我正在开发一个操作系统。根据参考,我必须从16位实模式进入32位保护模式。在该步骤中,其使用指令如下: bits 32 但我的汇编程序说这是非法的,它还使用如下指令: org 0x7c00 有些教程使用[bits 32]。但我两者都用,但运气不好 我用谷歌搜索了这个,但这次它搞砸了 因此,任何指导都会有所帮助 谢谢您必须告诉CPU您想进入保护模式。你最好从这里开始,看看这个网站。简而言之:在开始时使用use16或bits 16之类的实际模式,使用lgdt[6byteGDTstruct]将有效
bits 32
但我的汇编程序说这是非法的,它还使用如下指令:
org 0x7c00
有些教程使用[bits 32]
。但我两者都用,但运气不好
我用谷歌搜索了这个,但这次它搞砸了
因此,任何指导都会有所帮助
谢谢您必须告诉CPU您想进入保护模式。你最好从这里开始,看看这个网站。简而言之:在开始时使用
use16
或bits 16
之类的实际模式,使用lgdt[6byteGDTstruct]
将有效值加载到gdt寄存器,在CR0寄存器中设置位0,在代码中的某个地方跳转,然后从那里使用use32
或位32
。bits 32
(或等效)更改汇编程序完成的指令编码。它不“做”任何事情,也不是指令。它不是切换到32位模式的一部分(尽管它对生成32位代码很有用)。无论如何,听起来您只需要使用不同的汇编器。请提供一些有关您使用的编译器的信息,和/或您使用什么语法来编写代码以进入保护模式?