NASM -USBドライブからコードを読み込みます
-
11-10-2019 - |
質問
アセンブリの達人は議論を知っていますか(登録 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ブートシークレット
所属していません StackOverflow