• 締切済み

CDブータブルするカーネルの読み込み方法

お忙しい中、失礼します。 現在、「作りながら学ぶOSカーネル」という書籍の内容に沿って、 カーネルを作成中なのですが、記載してあるカーネルの読み込み方法が、 FDからカーネルを読み込む方法しか記載してありません。 自分としてはCDからカーネルを読み込む方法を選択したいのですが、 どなたか、CDからカーネルを読み込む際のBIOSコールと各レジスタの設定をご教授して頂けないでしょうか?

みんなの回答

  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.1

少なくともEl-Toritoでフロッピーエミュレーションをする限りではFDと同じで良いはずですが。 # 参考 http://tkralia.hp.infoseek.co.jp/mona/mona030/MonaBoot.html FDエミュレーションをしないという話になると、BIOSにCDF-ROMアクセスはなかったと思いますので、直接ハードウェア操作するコードを書く必要があると思います。

参考URL:
http://tkralia.hp.infoseek.co.jp/mona/mona030/MonaBoot.html
ijnhuygjuk
質問者

お礼

早速のご返事誠にありがとうございます。 rinkun様にお教えいただいた、サイトで勉強し直します。 本当にありがとうございます。

ijnhuygjuk
質問者

補足

ちなみにブートのコードが以下の通りです。 [org 0] jmp 07C0h:start start: mov ax, cs mov ds, ax mov es, ax mov ax, 0xB800 mov es, ax mov di, 0 mov ax, word [msgBack] mov cx, 0x7FF paint: mov word [es:di], ax add di,2 dec cx jnz paint read: mov ax, 0x1000 ; ES:BX=1000:0000 mov es, ax mov bx, 0 mov ah, 2 ; ディスクにあるデータをes:bxのアドレスに mov al, 1 ; 1セクタを読み込む。 mov ch, 0 ; 0番目のCylinder mov cl, 2 ; 2番目のセクタから読み込み始める。 mov dh, 0 ; Head=0 mov dl, 0 ; Drive=0 A:ドライブ int 0x13 ; Read! jc read ; エラーになれば、やり直し。 jmp 0x1000:0000 ; kernel.binが位置するところにジャンプする。 msgBack db '.', 0x67 times 510-($-$$) db 0 dw 0AA55h

関連するQ&A