测试本机x86程序,构建可启动映像/驱动器

时间:2012-02-16 22:57:43

标签: assembly x86 nasm boot sector

我有下一个问题:我正在使用NASM并构建一些本机并以这种方式编译它:

nasm -f bin source -o out

我正在为x86获取我的原生程序。

现在最有趣的是,如何让它可以启动然后测试呢?

我认为有三种方法可以制作可引导的(但对我来说,它们都失败了:()

  • 使用mkbt实用程序(或其他相似的软件)将其写入软盘
  • 构建ISO映像,并在其中编辑可引导扇区
  • 手动将内存扇区写入usb / sd-card或其他驱动程序

至于测试,所有重启PC都非常糟糕,所以最好使用一些虚拟操作系统软件,如Vbox,VMWare等。

所以我使用了VBox。 为了构建ISO - 我使用了CDBurnerXP。

使用cdburner我为我的本机程序选择了可启动扇区,然后在Vbox中选择新的ISO作为磁盘,我的程序将从该启动。

结果总是空屏,没有显示错误,只是没有......

我想,我有很多错误......

使用mkbt,我无法将其写入usb驱动程序....我现在没有flooppy,所以我无法将图像写入软盘,mkbt无法写入usb ...: (

我错了什么?

如何解决我的问题?

1 个答案:

答案 0 :(得分:1)

这样做:
nasm -f bin -o boot.bin boot.asm
qemu -boot order = a -fda boot.bin

你应该看到这条消息。对于其他模拟器,您将要填充图像 1474560字节。

boot.asm:

        BITS 16
        ORG 0
        jmp 0x07c0:start

start:
        mov ax, cs
        mov ds, ax

        mov si, msg
        call print_string

hang:
        jmp hang

print_string:
        cld
        lodsb
        or al, al
        jz .done
        mov ah, 0x0E
        int 0x10
        jmp print_string
.done:
        ret

msg:    db 'Hello World!', 13, 10, 0

        times 510-($-$$) db 0
        dw 0xAA55