[low]初めの第一歩

その昔「30日でできるOS自作入門」を片手にHariboteOSを写経した経験はある。
だけどそれで終わっていた。今回はそれを踏まえたのかなんなのか知らないけど自分で調べてOS作りをすることにする。ちなみに「30日でできるOS自作入門」は友達に貸したまま返ってきていない。

今日の目標

アセンブラを使ってOSも何もないところで画面に文字を出す。
いわゆるPCそのものでのHello World

とりあえず一文字だけ表示するプログラムはこんな感じ

[ORG 0]
jmp 07C0h:start

start:
        mov al, 'h'
        mov ah, 0Eh
        int 10h

hang:
        jmp hang
        times 510-($-$$) db 0
        dw 0AA55h

これをhello.asmとして

$ nasm hello.asm
$ qemu -fda hello

とすると画面に一文字「h」と表示される。

CPUは電源を入れた瞬間にBIOS様が起動してディスク(HDDでもフロッピーでもCDでもいい)の先頭から512byte を取り出してメモリの 07C0h(0x07C0)に展開して実行する。そして512バイトの一番最後に 0AA55hがあればブートシーケンスとして解釈してくれる。そこでレジスタにいろいろ値を入れて割り込みを発生させるという要領。


さて次はVRAMに直接書き込むってのをやってみる。