Тестируйте собственные программы x86, создавая загрузочные образы / диски
У меня следующая проблема: я работаю с NASM, собираю некоторые нативные и собираю их следующим образом:
nasm -f bin source -o out
Я получаю родную программу для x86.
А теперь самое интересное, как я могу сделать его загрузочным, а затем протестировать его?
Как мне кажется, есть 3 способа сделать загрузочные (но для меня все они провалились:()
- используя утилиту mkbt (или другую похожую программу), чтобы записать ее на дискету
- создание ISO -образа с редактированием загрузочного сектора в нем
- вручную записать сектор памяти на USB / SD-карту или другой драйвер
Что касается тестирования, все время перезагрузка ПК очень плохая, поэтому лучше использовать некоторые виртуальные ОС, такие как Vbox, VMWare и т. Д.
Поэтому я использовал VBox для этого. Для построения ISO - я использовал CDBurnerXP.
С помощью cdburner я выбрал загрузочный сектор для своей родной программы, а затем выбрал новый ISO в Vbox в качестве диска, с которого будет загружаться моя программа.
Результат всегда пустой экран, никаких ошибок не отображается, просто ничего...
Я думаю, что у меня много ошибок...
Используя mkbt, я не могу записать его в драйвер usb.... У меня сейчас нет flooppy, поэтому я не могу записать образ на дискету, mkbt не может записать в usb...:(
Что я не прав?
Как я могу решить мою проблему?
1 ответ
Просто сделай это:
nasm -f bin -o boot.bin boot.asm
qemu -boot order = -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