Published on

ubuntuでOS自作入門2日目

Authors

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

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

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

※注意点:

DBHELLO-OSDBFAT12

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

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

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

nasmhelloos.asmohelloos.imgnasm helloos.asm -o helloos.img qemu-system-i386 -fda helloos.img

; helloos.asm

        ORG     0x7c00

        JMP     entry
        DB      0×90
        DBHELLOIPL        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
        DBHELLO-OS        DBFAT12        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