小编tre*_*xet的帖子

int 13h 42h在Bochs中没有加载任何东西

我将引导加载程序从CHS更改为LBA,因此我将其替换int 13h 02hint 13h 42h.它在QEMU中正常工作,但是,我在使用Bochs和笔记本电脑时遇到了麻烦.

我把bootloader写入了USB闪存盘dd if=main.bin of=/dev/sdb bs=512.笔记本电脑加载英特尔UNDI并给我以下错误:No bootable device - insert boot disk and press any key.

所以我尝试用Bochs调试它,并注意到Bochs将这个二进制文件识别为可引导的.但是,int 13h执行后没有加载任何内容.

然后我尝试从这个闪存驱动器加载我的旧PC,它的工作原理!它加载程序并正确执行它.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
    ; …
Run Code Online (Sandbox Code Playgroud)

x86 bios nasm bootloader bochs

2
推荐指数
1
解决办法
1257
查看次数

标签 统计

bios ×1

bochs ×1

bootloader ×1

nasm ×1

x86 ×1