ブートローダをVIRTUALBOXで走らせています。
フォントデータの配置によりプログラムが一気に巨大になったので
フロッピーディスクの先頭から2つ目のセクターから54番目のセクターまでを
メモリ0x7E00から配置したいのですが 設定値が間違えているためかうまくいかないので
お願いします
ちなみに、1つのシリンダにつき18のセクターが存在すると書かれていたのでそれを前提に書いています。
では、ディスク先頭2セクタ~18セクタを0x7E00へロードします。
(1つ目のシリンダ)
1ND
1 2 MOV AH, 0x02 ;固定値 3 MOV AL, 18 - 1 ;18のセクタを読み込む 4 MOV CH, 0x00 ;0個目のシリンダ 5 MOV CL, 0x02 ;指定したシリンダ上の2つめのセクタから読み込む(1つ目はBIOSが0x7C00へロードする) 6 MOV DH, 0x00 ;ヘッド 7 MOV DL, 0x00 ;ドライブ 8 9 MOV BX, 0x0000 ;ロード先セグメントベース 10 MOV ES, BX 11 MOV BX, 0x7E00 ;オフセット 12 INT 0x13 13 14 15 16
2シリンダ目の1セクタ~18セクタを0x7C00 + (512 * 18) * 1 へロードします。
2ND
1 MOV AH, 0x02 ;固定値 2 MOV AL, 18 ;18のセクタ読み込み 3 MOV CH, 0x01 ;1つ目のシリンダ(トラック)上にあるセクタを読み込みます 4 MOV CL, 0x01 ;指定したシリンダ上の1つ目のセクタから読み込みます 5 MOV DH, 0x00 6 MOV DL, 0x00 7 8 MOV BX, 0x0000 9 MOV ES, BX 10 MOV BX, 0x7C00 + (512 * 18) * 1 11 INT 0x13 12
3シリンダ目の1セクタ~18セクタを0x7C00 + (512 * 18) * 1 へロードします。
3ND
1 MOV AH, 0x02 ;固定値 2 MOV AL, 18 ;18のセクタ読み込み 3 MOV CH, 0x02 ;1つ目のシリンダ(トラック)上にあるセクタを読み込みます 4 MOV CL, 0x01 ;指定したシリンダ上の1つ目のセクタから読み込みます 5 MOV DH, 0x00 6 MOV DL, 0x00 7 8 MOV BX, 0x0000 9 MOV ES, BX 10 MOV BX, 0x7C00 + (512 * 18) * 2 11 INT 0x13 12
ロードしたはずの位置にジャンプすると仮想マシンが停止するので
2ND,3NDの設定値が間違えていると思われます。
わかる方いましたら教えていただけると助かります
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/03 13:06