BIOSビデオ割り込みを使用して、画面にキャラクターを表示しようとしています。アセンブリ コードは次のとおりです。
mov $0x0A, %AH
mov $0x68, %AL ; to display character 'h'
int $0x10
GNU アセンブラーを使用してこのコードをアセンブルし、sample.o というオブジェクト ファイルを生成しました。sample.o の合計サイズは 449 バイトです。ここで、起動可能にするために、このオブジェクト ファイルの 511 番目と 512 番目のバイト位置に 16 進数の 0x55 と 0xAA を手動で書き込みます。だから私は今、512バイトのブートセクターを持っていると信じています。qemu を使用して、このオブジェクト ファイルからの起動を試みます。
$> qemu -fda sample.o
qemuエミュレーターが起動し、「フロッピーから起動中...」と表示された時点でフリーズしますが、ブートセクターを検出した後、BIOSビデオ割り込みコードが実行され、画面に文字が表示されるはずだと思いました。
私はひどく間違ったことをしていることを知っています。たぶん、割り込みの概念全体が欠けています。誰でも助けることができます。
編集:だから私は今 as86 と ld86 を使用してフラット バイナリだけを生成しています。そして、AH の 0x0A の代わりに 0x0E を使用していますが、うまくいったようです。BIOSの実装の問題のようです。
返信してくれたすべての人に感謝します。
ありがとう