さて、私は 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
、最終的に出力ポートを write に設定するバッファに書き込みます。
ではseta20.1
、最初に mkbc がそれを読み取って出力ポートを設定したかどうかを確認しています。完了したら、0xdf
最終的に 1Mb を超えるメモリにアクセスできるようにする A20 ゲートを設定するデータを送信します。
私の理解は正しいですか?そうでない場合は、正しい場所で私を修正してください。