продолжить это обсуждение в чате
енил свой загрузчик с CHS на LBA, поэтому я заменилint 13h 02h
сint 13h 42h
, В QEMU он работает правильно, однако у меня проблемы с запуском Bochs и моего ноутбука.
Я записал загрузчик на флешку сdd if=main.bin of=/dev/sdb bs=512
, Ноутбук загружает Intel UNDI и выдает мне следующую ошибку:No bootable device - insert boot disk and press any key
.
Поэтому я попытался отладить его с помощью Bochs и заметил, что Bochs распознает этот двоичный файл как загрузочный. Тем не менее, ничего не было загружено послеint 13h
казнены.
Затем я попытался загрузить свой старый компьютер с этой флешки, и она работает! Он загружает программу и выполняет ее правильно. QEMU дает мне тот же результат.
Вот код загрузчика:
org 0x7c00
bits 16
boot:
cli
; Overlap CS and DS
mov ax, cs
mov ds, ax
mov es, ax
; Setup 4K stack before this bootloader
mov ax, 0x07c0
mov ss, ax
mov sp, 4096
; Load next sectors
mov si, DAP
mov ah, 42h
; DL didn't changed
int 13h
; Start
jmp bootend
; Disk address packet
DAP:
db 10h, 0
dw %1 ; Number of sectors to be loaded
dd bootend
dq 1
; Fill the rest of bootsector with zeroes and end it
times 510 - ($ - boot) db 0
dw 0xAA55
bootend:
bochsrc:
megs: 32
romimage: file=/usr/share/bochs/BIOS-bochs-latest, address=0xfffe0000
vgaromimage: file=/usr/share/bochs/VGABIOS-lgpl-latest
floppya: 1_44=main.bin, status=inserted
boot: a
panic: action=ask
log: bochsout.txt
mouse: enabled=0
keyboard: type=mf, serial_delay=200, paste_delay=100000
display_library: x, options="gui_debug"