1

我有一个用 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. 博克斯有什么问题?

谢谢!

PSBochs是在支持下编译的x86_64,但它不适bochs用于官方 arch repo。

4

2 回答 2

1

我建议您坚持使用 Intel 语法,因为它通常比 AT&T 更具可读性。对于它们之间的一些基本区别,您可以检查thisthis

在 Ubuntu 上,bochs 需要bochs-x并且bochs-sdl才能正常运行。然后你应该能够从你的软盘映像启动:

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

另一种选择是使用qemu而不是bochs

qemu -fda floppy.img
于 2015-05-22T12:17:30.000 回答
-1

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

.org 0x7DFE
.word 0xAA55

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

于 2013-08-09T10:22:50.613 回答