2

私は x86 リアル モード コーディングに取り組んでおり、ここでいくつかのサンプル コードを見つけました: http://www.nondot.org/sabre/os/files/Booting/nasmBoot.txt

その記事の 3 番目の例では、リアル モードで BIOS 呼び出しを使用してフロッピーのいくつかのセクタをメモリにロードし、それらにジャンプします。シンプルなブートローダーです。2 番目のセクターから 5 セクターをロードします。2 番目のセクター (最初のセクターの 512 バイトの後) には、テキストを出力するための命令がいくつかあります。

さて、コンパイルしてバイナリを試してみましたが、テキストが出力されません。この機能不全を再現して、それを修正する方法を教えてもらえますか?

あなたの助けに感謝し、私の質問の陳腐さをお詫びします. (しかし、どこで問題が発生したのかわかりません)。

4

2 に答える 2

3

qemu を使用する場合は、イメージをセクター サイズの整数倍にパディングする必要があります。

これを image.asm の最後に追加します。

times 512*2-($-$$) db 0

そして、次のように組み立てて実行します。

nasm -f bin -o image.bin image.asm
qemu-system-i386 -fda image.bin

別のエミュレータでは、(1+5)*512 の長さ、またはフロッピーの全長 (1474560 バイト) までパディングする必要がある場合があります。

于 2013-03-28T19:06:23.343 に答える
0

すぐにわかることの 1 つは、そのコードでは、スタックが の近くにないことを保証していないということです1000h:0000

于 2013-03-28T16:45:06.177 に答える