0

我要写一个简单的操作系统。从 16 位实模式切换到 32 位保护模式时发生错误。

加载 GDT 寄存器并设置 GDT 后,保护模式已成功开启。我想跳转到内存中的0x0地址但是失败了,GDT的信息显示有数千个GDT描述器。

'''

    lgdt    (gdt_48 - _start + 0x7c00)
    movw    $0x1, %ax
    lmsw    %ax         // switch protect mode on 

    jmp $0x8, $0x0      // jmp 0:0

gdt:
    .word   0, 0, 0, 0

    .word   0x07ff
    .word   0x0000
    .word   0x9a00
    .word   0x00c0

    .word   0x07ff
    .word   0x0000
    .word   0x9200
    .word   0x00c0

gdt_48:
    .word   0x7ff       // 2048/8=256
    .word   gdt, 0   

'''

这是调试信息: 在此处输入图像描述

4

0 回答 0