30天自制操做系統 - 來一個hello world

helloos.nas 源碼:spa

 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
相關文章
相關標籤/搜索