为什么 nasm 中的 gdtr 不能正常工作?

Why is gdtr in nasm not working as it should?

我正在 NASM 中编写操作系统,我不想切换到保护模式,但我有一个问题,那就是我收到一条错误消息:

deos.asm:20: error: symbol `gdtr' undefined

当我写的时候:

lgdt [gdtr]

有谁知道为什么会这样

[gdtr] 不引用寄存器。这是您必须在内存中声明的标签名称,其中包含一个限制和指向您的 GDT 的指针。或者使用像 lgdt [edi] 这样的寻址模式而不是 lgdt [disp32] 如果你在寄存器中有那个地址。

内部 GDTR base/limit 寄存器是 隐式 lgdt 的目标操作数(以及 sgdt 的源);阅读说明手册:https://www.felixcloutier.com/x86/lgdt:lidt

操作部分包含 LGDT 的伪代码:

        ELSE IF 32-bit Operand Size
            THEN
                GDTR(Limit) ← SRC[0:15];
                GDTR(Base) ← SRC[16:47];
            FI;