продолжить это обсуждение в чате

енил свой загрузчик с 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"

Ответы на вопрос(1)

Ваш ответ на вопрос