好的伙计们,我只是想了解有助于访问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以上的内存。
我的理解是对的吗?如果没有,请在正确的地方纠正我。