2
私は単純なhelloworldブートローダプログラムを習得しようとしています。このlinkを参照してください。私は正常にnasm
アセンブラを使用してこのアセンブリコードのバイナリファイルを生成し、エミュレータbochs
で実行し、正常に動作します。 しかし、ハードディスクで直接同じことをしたときに、文字列をスクリーンに印刷することができません。helloworldを印刷するための基本的なブートローダプログラムが動作していません
私が使用したコードは以下のとおりです。
[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
いつものように、あなたは 'DS'を初期化するのを忘れました。 – Jester
あなたはこのDSが何をしているのか説明してください。私は初心者です。 – skesh
別のSOの回答で[ブートローダのヒント](http://stackoverflow.com/a/32705076/3857942)があります。 _DS_のようなセグメントレジスタを設定する必要があります。あなたがハードドライブを言うと、実際のハードウェアで起動することを意味しますか? –