了解引导加载程序代码以设置A20门

时间:2014-05-30 10:26:11

标签: assembly x86 bootloader gdt

好的伙计们,我只是想了解有助于访问1Mb以上内存的代码。我正在编写下面所需的片段。我会写出我理解的内容,我只需要确认我理解的是对的(我是自学OS)。提前致谢

seta20.1:
  inb $0x64,%al # Wait for not busy
  testb $0x2,%al
  jnz seta20.1

  movb $0xd1,%al # 0xd1 -> port 0x64
  outb %al,$0x64

seta20.2:
  inb $0x64,%al # Wait for not busy
  testb $0x2,%al
  jnz seta20.2

  movb $0xdf,%al # 0xdf -> port 0x60
  outb %al,$0x60

seta20.1首先,我们从键盘控制器(mkbc)获取状态,以检查是否可以写入内容。一旦它被释放,我们就会向它写入0xd1,它进入它的缓冲区,最终将输出端口设置为写入。

seta20.1中,我们首先检查mkbc是否已读取它并设置输出端口。完成后,我们发送数据0xdf,这将设置A20门,这将最终允许我们访问1Mb以上的内存。

我的理解是对的吗?如果没有,请在正确的地方纠正我。

0 个答案:

没有答案