Test de programmes x86 natif, la construction d'images / disque d'amorçage
Question
J'ai le problème suivant: Je travaille avec MSNA et la construction d'une compilation native et sur la façon suivante:
nasm -f bin source -o out
Je reçois mon programme natif pour x86.
Et maintenant, le plus intéressant, comment puis-je le rendre bootable puis le tester?
Je pense qu'il ya 3 façons de rendre amorçable (mais pour moi, tout ce qu'ils ont échoué :()
- à l'aide de l'utilitaire mkbt (ou un autre doux qui est similaire) pour écrire sur une disquette
- construction de l'image ISO, avec l'édition secteur de démarrage dans ce
- secteur de mémoire d'écriture manuelle à carte SD USB / ou un autre conducteur
En ce qui concerne le test, en tout temps le PC est réinitialisé est très mauvais, il est donc préférable d'utiliser un soft OS virtuel comme Vbox, VMWare etc ..
Alors je VBox pour cela. Pour la construction de l'ISO - je CDBurnerXP
.Avec CDBurner j'ai optionné secteur de démarrage pour mon programme natif, puis choisissez ISO nouvelle dans Vbox comme disque à partir duquel sera mon démarrage du programme.
Le résultat est toujours vide écran, aucune erreur ne montrent, que rien ...
Je pense que j'ai beaucoup d'erreurs ...
Utilisation mkbt, je ne peux pas écrire pour pilote usb .... Je n'ai pas flooppy maintenant, donc je ne suis pas en mesure de l'image d'écriture sur disquette, mkbt ne peut pas écrire usb ...: (
Que dois-je tort?
Comment puis-je résoudre mon problème?
La solution
Il suffit de faire ceci:
bin de nasm -o boot.bin boot.asm
qemu ordre -boot = a -fda boot.bin
Et vous devriez voir le message. Pour d'autres émulateurs vous voulez pad l'image 1474560 octets.
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