OS自作入門 #1

OS自作入門をペラペラと。とりあえず、

なんてことを思った。
んでまぁ、

  • FDの最初の1セクタ(512 bytes)をブートセクタと呼ぶ
  • ブートセクタの最後の2バイトが little endian で 0xaa55 なら BIOS がブートセクタをメモリの 0x7c00 以降にロードして実行する
  • AH に 0x0e を、あとほかのレジスタを適当な値にセットして int 0x10 とやると BIOS の機能で画面に1文字表示される

ということは分かった。
ので、適当な IPL とか。

        org     0x7c00
        xor     ax, ax
        mov     si, msg
putloop:
        mov     al, [si]
        inc     si
        cmp     al, 0
        je      fin
        mov     ah, 0x0e
        mov     bx, 0x0f
        int     0x10
        jmp     putloop
fin:
        hlt
        jmp     fin
msg:
        db      0x0d, 0x0a, 0x0d, 0x0a
        db      "hello IPL"
        db      0x0d, 0x0a

        times 0x1fe-($-$$) db 0
        dw      0xaa55