30日でできるOS自作入門【3日目】
概要
これはMozyの1人アドベントカレンダー 2018 の3日目の記事です。
書こうとした経緯は、こちら
今日の内容
- 昨日書いたアセンブラを書き直してみる
今日やったこと
; hello-os ; TAB=4 ; 以下は標準的なFAT12フォーマットフロッピーディスクのための記述 DB 0xeb, 0x4e, 0x90 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,0x29 DD 0xffffffff DB "HELLO-OS " DB "FAT12 " RESB 18 ; 本体 DB 0xb8, 0x00, 0x00, 0x8e, 0xd0, 0xbc, 0x00, 0x7c DB 0x8e, 0xd8, 0x8e, 0xc0, 0xbe, 0x74, 0x7c, 0x8a DB 0x04, 0x83, 0xc6, 0x01, 0x3c, 0x00, 0x74, 0x09 DB 0xb4, 0x0e, 0xbb, 0x0f, 0x00, 0xcd, 0x10, 0xeb DB 0xee, 0xf4, 0xeb, 0xfd ; メッセージ DB 0x0a, 0x0a ; 改行2つ DB "hello, world" DB 0x0a ; 改行 DB 0 RESB 0x1fe-$ ; 0x001feまで0x00埋め DB 0x55, 0xaa ; ブートセクタ以外の部分の記述 DB 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 RESB 4600 DB 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 RESB 1469432
ハマりポイント
特になかった。😆
結構順調だ。
知ったこと
- 0x0a は改行を意味する
- DB "hello, world" のようにDB命令は文字列を書くことができるのね
- RESB 0x1fe-$ の$ は行が先頭から数えて何バイト目かを教えてくれる変数である
- DW命令
- data word の略称
- ワードとは16bitのこと。つまり2バイト
- DD命令
- data double-word の略称
- 32bitのことで つまり4バイト