《30天自制操作系统》第一天
Posted NONE
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《30天自制操作系统》第一天相关的知识,希望对你有一定的参考价值。
一开始作者搞了一个装满二进制的文件,用binary editor来制作。该软件下载地址http://www.vcraft.jp/soft/bz.html
当然,在我看来,这些二进制没什么意义,因为根本无法阅读。
但作者是想让读者了解cpu其实就是解读二进制指令的。
直接附上第一天的汇编代码:
; hello-os ; TAB=4 ; 以下は標準的なFAT12フォーマットフロッピーディスクのための記述 DB 0xeb, 0x4e, 0x90 DB "HELLOIPL" ; ブートセクタの名前を自由に書いてよい(8バイト) DW 512 ; 1セクタの大きさ(512にしなければいけない) DB 1 ; クラスタの大きさ(1セクタにしなければいけない) DW 1 ; FATがどこから始まるか(普通は1セクタ目からにする) DB 2 ; FATの個数(2にしなければいけない) DW 224 ; ルートディレクトリ領域の大きさ(普通は224エントリにする) DW 2880 ; このドライブの大きさ(2880セクタにしなければいけない) DB 0xf0 ; メディアのタイプ(0xf0にしなければいけない) DW 9 ; FAT領域の長さ(9セクタにしなければいけない) DW 18 ; 1トラックにいくつのセクタがあるか(18にしなければいけない) DW 2 ; ヘッドの数(2にしなければいけない) DD 0 ; パーティションを使ってないのでここは必ず0 DD 2880 ; このドライブ大きさをもう一度書く DB 0,0,0x29 ; よくわからないけどこの値にしておくといいらしい DD 0xffffffff ; たぶんボリュームシリアル番号 DB "HELLO-OS " ; ディスクの名前(11バイト) DB "FAT12 " ; フォーマットの名前(8バイト) RESB 18 ; とりあえず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
无语的是,关键部分的代码还是db 0x。。这种形式。也就是说,本质上没什么区别,只是用rest xxxx这样的汇编语句循环复杂了之前那么多的0。
记录下一些比较有用的信息:
1软盘的第一个扇区为启动区。
2计算机读软盘是以512字节为单位来读写,所以一个扇区为512字节。
3一张软盘有1440KB,2880个扇区。
4第一个扇区为启动区,IPL。加载操作系统用。
5启动区的结束标志为:55AA
以上是关于《30天自制操作系统》第一天的主要内容,如果未能解决你的问题,请参考以下文章