2

アセンブリ (NASM 構文) で単純なブートローダーを作成しましたが、QEMU で実行すると、改行が次のように表示されます。

ここに画像の説明を入力

これは私のコードです:

0Ah行を前に進めるのを止める方法はありますか?

.loop_top:

mov si, text_string ; Put string position into SI
call print_string   ; Call our string-printing routine

loop .loop_top

jmp $           ; Jump here - infinite loop!


text_string db "This is my cool new OS!", 0Ah, 0
4

2 に答える 2

12

まあ、明らかに:-)あなたの「print_string」サブルーチンは0x0aを真剣に受け止めます-それは「LF」と呼ばれ、それはまさにそれを行い、次の行に進みます。

私の推測では、 0x0a 0x0d を使用するとうまくいくと思います。

于 2012-07-03T22:36:09.007 に答える
2

を送信する\rと、カーソルが画面の左側に戻ると思います。そのため、または同様のものを使用\r\nして、新しい行を作成する必要があります。

詳細がないとわかりません。print_string プロシージャがどのように実装されているかわかりません。int 0x10, AH=0x0E を使用して文字列を循環するなど、BIOS 呼び出しによって実装されている場合は、上記の解決策が機能します。または、int 0x10, AH=0x03 を使用してカーソル位置を手動で調整することもできます。

于 2012-07-03T23:00:29.617 に答える