简单的bootloader和bochs

时间:2013-08-09 04:52:32

标签: assembly bootloader att bochs yasm

我有一个用AT& T语法编写的简单引导加载程序。

[bits 16]
[org   0x7c00]
jmp   $
times 510-($-$$) db 0
dw    0xaa55

我使用yasm -f bin -o boot.bin loader.s来编译它,并使用bochs来运行。

dd if=boot.bin bs=512 of=floppy.img
bochs -q

bochs表示有no bootable device

所以,我有以下问题:

  1. 如何使用AT& T语法重写它(我必须使用哪种结构times 510-($-$$) db 0)
  2. bochs有什么问题?
  3. 谢谢!

    P.S。 Bochs是使用x86_64支持编译的,但它不适用于官方arch repo中的bochs

2 个答案:

答案 0 :(得分:0)

如果您不了解AT& T语法,我无法想象为什么要尝试编写AT& T语法!我认为“时代”行将是......

.org 0x7DFE
.word 0xAA55

.org 0x7DFE .word 0xAA55

Bochs可能正在寻找一张完整的1.44M软盘图像。

答案 1 :(得分:0)

我建议你坚持使用英特尔语法,因为它通常比AT& T更具可读性。对于它们之间的一些基本差异,您可以查看thisthis

在Ubuntu上,bochs需要bochs-xbochs-sdl才能正常运行。然后你应该可以用你的软盘映像启动:

bochs -q 'display_library: sdl' 'boot:a' 'floppya: 1_44=floppy.img, status=inserted'

另一个选择是使用qemu代替bochs

qemu -fda floppy.img