跟着书上的过程敲了一遍,本来以为没有软盘会是一个非常大的阻碍,在买书之前也看过有人评论说,“还在用软盘,早就过时了”,之类的。不过没让我失望,作者提供了不使用软盘的办法。
这个二进制编辑器是在百度云上找到的,跟书里用到的是一样的。
然后经过一丢丢的努力
有了第一个成果,emmm,不错,有东西就行,有反馈就容易坚持
之后就开始用汇编语言了
;hello-os
;TAB=4
;以下这段是标准FAT12格式软盘专用的代码
DB 0xeb, 0x4e, 0x90
DB "HELLOIPL" ;启动区的名称可以是任意的字符串(8字节)
DW 512 ;每个扇区的大小(必须为512字节)
DB 1 ;簇的大小(必须为一个扇区)
DW 1 ;FAT的起始位置(一般从第一个扇区开始)
DB 2 ;FAT的个数(必须为2)
DW 224 ;根目录的大小(一般设置成224项)
DW 2880 ;该磁盘的大小(必须是2880扇区)
DB 0xf0 ;磁盘的种类(必须是0xf0)
DW 9 ;FAT的长度(必须是9扇区)
DW 18 ;一个磁道有几个扇区(必须是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 "I love Xue Chen"
DB 0x0a ;换行
DB 0
RESB 0x1fe-$ ;填写0x00,直到0x01fe
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
不是很懂,emmm。