質問

アセンブリの達人は議論を知っていますか(登録 DL)それは最初のUSBドライブを意味しますか?

私はいくつかのNASMチュートリアルを使用していますが、物理的なブーツを手に入れたいと思います(QEMUできれいなブーツを手に入れることができます)。

これは、ディスクから「カーネル」データをロードするコードのセクションです。

loadkernel:
    mov si, LMSG ;; 'Loading kernel',13,10,0
    call prints  ;; ex puts()

    mov dl, 0x00 ;; The disk to load from
    mov ah, 0x02 ;; Read operation
    mov al, 0x01 ;; Sectors to read
    mov ch, 0x00 ;; Track
    mov cl, 0x02 ;; Sector
    mov dh, 0x00 ;; Head
    mov bx, 0x2000 ;; Buffer end
    mov es, bx
    mov bx, 0x0000 ;; Buffer start

    int 0x13
    jc loadkernel

    mov ax, 0x2000
    mov ds, ax

    jmp 0x2000:0x00

それが違いを生むならば、私は株式デル・インスピロン15 BIOSを運営しています。


どうやら、私にとって正しい値は0x80です。

BIOSはハードドライブをロードし、0x80からラベル付けします この答えによると.

私の特定のBIOSは、何らかの理由でUSBドライブを最初のものとしてロードすることにしたので、そこから起動できます。

役に立ちましたか?

解決

簡単な答えは、正しい値です dl 入っています dl.

幸せな答えはそれです dl で価値 int 13h, ah=8 ドライブパラメーターを取得すると、ジオメトリを使用して使用し、USBフラッシュドライブから起動できるBIOS/バージョンからFAT12フロッピーディスクイメージコードが実行されます。

ここで私の投稿を参照してください: USBブートシークレット

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top