私のコードはvirtualboxで完全に機能しますが、実際のPCで起動した場合は機能しません(BIOSがUSBハードドライブとして検出するUSBペンドライブから)。
virtualboxで; コードはディスクのセクター2と3をメモリに読み取り、最初の128バイトを(デバッグステップとして)出力してから、それらのセクターに格納されているコードを実行します。
私の実際のPCでは、正しいバイトを画面に正常に出力します(したがって、明らかにディスクを正しく読み取り、メモリ内の期待される場所に書き込みます)が、ジャンプするのではなく、その時点で実行を停止します。
なぜそれが違うのでしょうか、そして私は何を間違っているのでしょうか?
ORG 0x7C00;
; Load Sector 2&3 from disk to 0x1000
mov bx , 0x1000
mov ah , 0x02
mov al , 0x02
mov ch , 0x00
mov dh , 0x00
mov cl , 0x02
int 0x13;
;Print 0x1000 + 128 bytes
mov ah, 0x0e
mov bx ,0x1000;
loop2:
mov al, [bx]
cmp bx, 0x1000+128
je end2
int 0x10
add bx , 1;
jmp loop2;
end2:
; Run our code
call 0x1000
jmp $;
TIMES 510 - ($ - $$) DB 0
DW 0xAA55