Appearance
Day1
assembly
; hello-os
; TAB=4
; 以下是Fat12格式的软盘专用代码
DB 0xeb, 0x4e, 0x90 ;DB: define byte写入一个字节的指令
DB "HELLOIPL" ; 启动区的名字,任意的字符, 8字节
DW 512 ; 一个扇区的大小
DB 1 ; 一个簇的大小
DW 1 ; FAT的起始位置
DB 2 ; FAT的个数
DW 224 ; 根目录的大小,一般为224
DW 2880 ; 磁盘大小
DB 0xf0 ; 磁盘的种类
DW 9 ; FAT的长度
DW 18 ; 一个磁轨的扇区数
DW 2 ; 磁头数
DD 0 ; 不用进行分盘
DD 2880 ; 重写一次的磁盘大小
DB 0,0,0x29 ; 意义不明, 固定
DD 0xffffffff ;
DB "HELLO-OS " ; 磁盘的名字11字节
DB "FAT12 " ; 磁盘格式的名字
RESB 18 ; 空出18字节, reserve byte: 空出字节
; 程序主体
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 ; \n\n
DB "hello, world"
DB 0x0a ; \n
DB 0
RESB 0x1fe-$ ; 写入0x00直到0x1fe, $代表自己本身的位置地址
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
FAT12: 软盘格式
启动区: 软盘的第一个区
IPL: inital program loader启动程序加载器