1

次の問題があります。NASM を使用してネイティブをビルドし、次のようにコンパイルしています。

nasm -f bin source -o out

x86 用のネイティブ プログラムを取得しています。

そして今、最も興味深いのは、どうすればブート可能にしてからテストできるのでしょうか?

起動可能にする方法は3つあると思います(しかし、私にとっては、すべて失敗しました:()

  • mkbt ユーティリティ (または同様の別のソフト) を使用して、フロッピー ディスクに書き込みます。
  • ブータブル セクタを編集して ISO イメージを構築する
  • 手動でメモリ セクタを USB/SD カードまたは別のドライバに書き込む

テストに関しては、常に PC を再起動するのは非常に悪いので、Vbox、VMWare などの仮想 OS ソフトを使用することをお勧めします。

そこで、これには VBox を使用しました。ISO の構築には、CDBurnerXP を使用しました。

cdburner を使用して、ネイティブ プログラム用にブータブル セクタを選択し、Vbox でプログラムを起動するディスクとして新しい ISO を選択しました。

結果は常に空の画面で、エラーは表示されず、何も表示されません...

エラーが多いと思いますが…

mkbt を使用して、usb ドライバーに書き込むことができません....現在 flooppy を持っていないため、イメージをフロッピーに書き込むことができず、mkbt は usb に書き込むことができません... :(

私は何を間違っていますか?

どうすれば問題を解決できますか?

4

1 に答える 1

1

これを行うだけです:
nasm -f bin -o boot.bin boot.asm
qemu -boot order=a -fda boot.bin

そして、メッセージが表示されるはずです。他のエミュレーターでは、画像を 1474560 バイトにパディングする必要があります。

ブート.asm:

        BITS 16
        ORG 0
        jmp 0x07c0:start

start:
        mov ax, cs
        mov ds, ax

        mov si, msg
        call print_string

hang:
        jmp hang

print_string:
        cld
        lodsb
        or al, al
        jz .done
        mov ah, 0x0E
        int 0x10
        jmp print_string
.done:
        ret

msg:    db 'Hello World!', 13, 10, 0

        times 510-($-$$) db 0
        dw 0xAA55
于 2012-02-17T00:39:37.707 に答える