2013-08-09 4 views
0

У меня есть простой загрузчик, написанный на AT & T синтаксис.Простой загрузчик и bochs

[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
?

PS Bochs был скомпилирован с поддержкой x86_64, но он не " t работать с bochs из официального архивного репо.

ответ

0

Я не могу себе представить, почему вы пытаетесь написать синтаксис AT & T, если вы не знаете AT & T синтаксис! Я думаю, что линия «раз» будет ...

.org 0x7DFE 
.word 0xAA55 

Bochs, вероятно, ищет целые изображения на карте 1.44M.

+0

* Bochs, вероятно, ищет весь 1.44M дискеты * - Нет, вы можете кормить Bochs небольшими файлами. – rkhb

0

Я предлагаю вам придерживаться синтаксиса Intel, поскольку это, как правило, более читабельным, чем AT & Т. За несколько основных различий между ними вы можете проверить this и this.

На Ubuntu для достижения бега без ошибок требуется bochs-x и bochs-sdl. Тогда вы должны быть в состоянии загрузиться с дискеты с:

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

Другой вариант заключается в использовании qemu вместо bochs:

qemu -fda floppy.img 

 Смежные вопросы

  • Нет связанных вопросов^_^