- Published on
ubuntuでOS自作入門2日目
- Authors
- Name
- Daisuke Kobayashi
- https://twitter.com
最近 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
以下ソースコードをファイルに保存後
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