30天自制操作系统 - 来一个hello world

helloos.nas 源码:

 1 ; hello-os
 2 ; TAB=4
 3 
 4 ; 以下这段是标准的FAT12格式软盘专用代码
 5 
 6         DB        0xeb, 0x4e, 0x90
 7         DB        "HELLOIPL"        ; 启动区名称,可以是任意的字符串(8个字节)
 8         DW        512                ; 每个扇区(sector)的大小(必须为512字节)
 9         DB        1                ; 簇(clustor)的大小(必须为1个扇区)
10         DW        1                ; FAT的起始位置(一般从第一扇区开始)
11         DB        2                ; FAT的个数(必须为2)
12         DW        224                ; 根目录的大小(一般设为224项)
13         DW        2880            ; 该磁盘的大小(必须是2880扇区)
14         DB        0xf0            ; 磁盘的种类(必须是0xf0)
15         DW        9                ; FAT的长度(必须是9个扇区)
16         DW        18                ; 1个磁道(track)有几个扇区(必须是18个)
17         DW        2                ;磁头数(必须是2个)
18         DD        0                ; 不使用分区必须是0
19         DD        2880            ; 从写一次磁盘大小
20         DB        0,0,0x29        ; 意义不明,固定
21         DD        0xffffffff        ; 大概卷序列号
22         DB        "HELLO-OS   "    ;磁盘名称(11字节)
23         DB        "FAT12   "        ;格式名称(8字节)
24         RESB    18                ;先空18个字节
25 
26 ; 程序主体
27 
28         DB        0xb8, 0x00, 0x00, 0x8e, 0xd0, 0xbc, 0x00, 0x7c
29         DB        0x8e, 0xd8, 0x8e, 0xc0, 0xbe, 0x74, 0x7c, 0x8a
30         DB        0x04, 0x83, 0xc6, 0x01, 0x3c, 0x00, 0x74, 0x09
31         DB        0xb4, 0x0e, 0xbb, 0x0f, 0x00, 0xcd, 0x10, 0xeb
32         DB        0xee, 0xf4, 0xeb, 0xfd
33 
34 ; 信息部分
35 
36         DB        0x0a, 0x0a        ; 2个改行
37         DB        "hello, world"   ;输出信息
38         DB        0x0a            ; 改行
39         DB        0 
40 
41         RESB    0x1fe-$            ; 填写0x00,直到0x001fe
42 
43         DB        0x55, 0xaa
44 
45 ; 以下是非启动扇区以外的部分的描述
46 
47         DB        0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
48         RESB    4600
49         DB        0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
50         RESB    1469432

 

posted @ 2018-04-10 02:30  极客先锋  阅读(1828)  评论(0编辑  收藏  举报