【问题标题】:Entering 32 bit protected mode进入 32 位保护模式
【发布时间】:2016-03-29 19:23:14
【问题描述】:

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

bits 32

但我的汇编器说这是 非法 它还使用如下指令:

org 0x7c00

一些教程使用[bits 32]。但我两者都用,但没有运气。

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

所以任何指导都会有所帮助。

谢谢

【问题讨论】:

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

标签: assembly operating-system 32-bit protected-mode


【解决方案1】:

你必须告诉 CPU 你想进入保护模式。最好从http://wiki.osdev.org/Babystep1 开始,然后在这个网站上四处看看。简短:在开始时用use16bits 16 之类的东西做一些实模式的东西,用lgdt [6byteGDTstruct] 将一个有效值加载到gdt 寄存器中,在CR0 寄存器中设置位0,在你的代码中跳转到很远的地方并从那里使用use32bits 32

【讨论】:

    猜你喜欢
    • 2018-11-28
    • 2021-05-03
    • 1970-01-01
    • 1970-01-01
    • 2018-08-07
    • 2021-10-12
    • 1970-01-01
    • 1970-01-01
    • 2021-04-22
    相关资源
    最近更新 更多