Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 进入32位保护模式_Assembly_Operating System_32 Bit_Protected Mode - Fatal编程技术网

Assembly 进入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]将有效

我正在开发一个操作系统。根据参考,我必须从16位实模式进入32位保护模式。在该步骤中,其使用指令如下:

bits 32
但我的汇编程序说这是非法的,它还使用如下指令:

org 0x7c00
有些教程使用
[bits 32]
。但我两者都用,但运气不好

我用谷歌搜索了这个,但这次它搞砸了

因此,任何指导都会有所帮助


谢谢

您必须告诉CPU您想进入保护模式。你最好从这里开始,看看这个网站。简而言之:在开始时使用
use16
bits 16
之类的实际模式,使用
lgdt[6byteGDTstruct]
将有效值加载到gdt寄存器,在CR0寄存器中设置位0,在代码中的某个地方跳转,然后从那里使用
use32
位32

bits 32
(或等效)更改汇编程序完成的指令编码。它不“做”任何事情,也不是指令。它不是切换到32位模式的一部分(尽管它对生成32位代码很有用)。无论如何,听起来您只需要使用不同的汇编器。请提供一些有关您使用的编译器的信息,和/或您使用什么语法来编写代码以进入保护模式?