好的,我只是试图理解有助于访问 1Mb 以上内存的代码。我正在下面写所需的代码段。我会写我理解的,我只需要确认我理解的是否正确(我是自学操作系统)。提前致谢
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
它,它会进入它的缓冲区,最终将输出端口设置为 write 。
我们seta20.1
首先检查 mkbc 是否已读取并设置输出端口。完成后,我们发送0xdf
将设置 A20 门的数据,这最终将允许我们访问 1Mb 以上的内存。
我的理解对吗?如果不是,请在正确的地方纠正我。