カスタムオペレーティングシステムを作成しています。2 つの nasm ファイルがあります。
ブート.asm:
[BITS 16] ;tell the assembler that its a 16 bit code
[ORG 0x7C00] ;Origin, tell the assembler that where the code will
;be in memory after it is been loaded
INT 0x13
JMP $ ;infinite loop
TIMES 510 - ($ - $$) db 0 ;fill the rest of sector with 0
DW 0xAA55 ; add boot signature
開始.asm:
[BITS 16]
MOV AL, 72
CALL PrintCharacter
MOV AL, 101
CALL PrintCharacter
MOV AL, 108
CALL PrintCharacter
MOV AL, 108
CALL PrintCharacter
MOV AL, 111
CALL PrintCharacter
MOV AL, 44
CALL PrintCharacter
MOV AL, 32
CALL PrintCharacter
MOV AL, 87
CALL PrintCharacter
MOV AL, 111
CALL PrintCharacter
MOV AL, 114
CALL PrintCharacter
MOV AL, 108
CALL PrintCharacter
MOV AL, 100
CALL PrintCharacter
MOV AL, 33
CALL PrintCharacter
PrintCharacter:
MOV AH, 0x0E
MOV BH, 0x00
MOV BL, 0x07
INT 0x10
RET
TIMES 512 - ($ - $$) db 0
次のコマンドを使用して、それらを .bin ファイルにコンパイルします。
nasm boot.asm -f bin -o boot.bin
nasm start.asm -f bin -o start.bin
次に、次のコマンドを使用して、それらをフロッピー イメージに追加します。
dd if=boot.bin bs=512 of=MyOS.img count=1
dd if=start.bin bs=512 of=MyOS.img count=2
VirtualBox のフロッピー イメージから起動すると、感嘆符が 1 つではなく 2 つ表示され、QEmu (Q.app) で起動することさえできません。私はオペレーティング システムの開発に慣れていないので、どこが間違っていたのか、OS をより適切にセットアップする方法について誰かが教えてくれたらうれしいです。