ubuntuでOS自作入門2日目

Posted Mon Jun 18 2012

最近OS自作入門を読んでます.

開発環境としてノートPCを使っていて,VirtualBoxにubuntuを入れてます.

書籍の方ではwindowsメインで説明がされているんだけど,せっかくなのでubuntuでやってます.以下覚書です.nasmを使ってます.アセンブラ全く知らないので,Chapter 2からかなり手こずりました.

※注意点:

DB “HELLO-OS “
DB “FAT12 “

上記2行はスペースの数が違うと動かない?

RESB 18 => TIMES 18 DB 0
RESB 0x7dfe-$ => 0x1fe-($-$$) DB 0
RESB 1469432 => TIMES 1469432 DB 0

以下ソースコードをファイルに保存後

$ nasm helloos.asm -o helloos.img
$ qemu-system-i386 -fda helloos.img
; helloos.asm

        ORG     0x7c00

        JMP     entry
        DB      0×90
        DB      “HELLOIPL”
        DW      512
        DB      1
        DW      1
        DB      2
        DW      224
        DW      2880
        DB      0xf0
        DW      9
        DW      18
        DW      2
        DD      0
        DD      2880
        DB      0, 0, 0×29
        DD      0xffffffff
        DB      “HELLO-OS   “
        DB      “FAT12   “
        TIMES   18 DB 0

entry:
        MOV     AX,0
        MOV     SS,AX
        MOV     SP,0x7c00
        MOV     DS,AX
        MOV     ES,AX

        MOV     SI,msg
putloop:
        MOV     AL,[SI]
        ADD     SI,1
        CMP     AL,0
        JE      fin
        MOV     AH,0x0e
        MOV     BX,15
        INT     0×10
        JMP     putloop
fin:
        HLT
        JMP     fin

msg:
        DB      0x0a, 0x0a
        DB      “hello, world”
        DB      0x0a
        DB      0

        TIMES   0x1fe-($-$$) DB 0

        DB      0×55, 0xaa

        DB      0xf0, 0xff, 0xff, 0×00, 0×00, 0×00, 0×00, 0×00
        TIMES   4600 DB 0
        DB      0xf0, 0xff, 0xff, 0×00, 0×00, 0×00, 0×00, 0×00
        TIMES   1469432 DB 0