J'essaie d'apprendre un simple programme de bootloader helloworld. renvoyer cette link. J'ai réussi à générer le fichier binaire pour ce code d'assemblage en utilisant nasm
assembleur et exécuter avec un émulateur bochs
et cela fonctionne très bien. Mais quand j'ai fait la même chose directement avec un disque dur, je ne suis pas capable d'imprimer la chaîne à l'écran.Le programme Bootloader de base pour imprimer helloworld ne fonctionne pas
Veuillez trouver ci-dessous le code que j'ai utilisé.
[BITS 16]
[ORG 0x7C00]
MOV SI, HelloString
CALL PrintString
JMP $
PrintCharacter:
MOV AH, 0x0E
MOV BH, 0x00
MOV BL, 0x07
INT 0x10
RET
PrintString:
next_character:
MOV AL, [SI]
INC SI
CALL PrintCharacter
OR AL, AL
JZ exit_function
JMP next_character
exit_function:
RET
HelloString db "Pell",0
TIMES 510 - ($ - $$) db 0
DW 0xAA55
Comme d'habitude, vous avez oublié de 'intialize DS'. – Jester
Pourriez-vous s'il vous plaît expliquer ce que fait cette DS.Je suis débutant dans l'assemblage. – skesh
J'ai [Conseils Bootloader] (http://stackoverflow.com/a/32705076/3857942) dans une autre réponse SO. La configuration du registre de segment comme _DS_ peut être nécessaire. Quand vous dites disque dur voulez-vous dire que vous démarrez sur du matériel réel? –