《30天自制操作系統》筆記(01)——hello bitzhuwei's OS!
最初的OS代碼

1 ; hello-os 2 ; TAB=4 3 4 ORG 0x7c00 ; 指明程序的裝載地址 5 6 ; 以下這段是標準FAT12格式軟盤專用的代碼 7 8 JMP entry 9 DB 0x90 10 DB "HELLOIPL" ; freeparam 啟動區的名稱可以是任意的字符串(8字節) 11 DW 512 ; 每個扇區(sector)的大小(必須為512字節) 12 DB 1 ; 簇(cluster)的大小(必須為1個扇區) 13 DW 1 ; FAT的起始位置(一般從第一個扇區開始) 14 DB 2 ; FAT的個數(必須為2) 15 DW 224 ; 根目錄的大小(一般設成224項) 16 DW 2880 ; 該磁盤的大小(必須是2880扇區) 17 DB 0xf0 ; 磁盤的種類(必須是0xf0) 18 DW 9 ; FAT的長度(必須是9扇區) 19 DW 18 ; 1個磁道(track)有幾個扇區(必須是18) 20 DW 2 ; 磁頭數(必須是2) 21 DD 0 ; 不使用分區,必須是0 22 DD 2880 ; 重寫一次磁盤大小 23 DB 0,0,0x29 ; 意義不明,固定 24 DD 0xffffffff ; (可能是)卷標號碼 25 DB "HELLO-OS " ; freeparam 磁盤的名稱(11字節) 26 DB "FAT12 " ; 磁盤格式名稱(8字節) 27 RESB 18 ; 先空出18字節 28 29 ; 程序核心 30 31 entry: 32 MOV AX,0 ; 初始化寄存器 33 MOV SS,AX 34 MOV SP,0x7c00 35 MOV DS,AX 36 MOV ES,AX 37 38 MOV SI,msg 39 putloop: 40 MOV AL,[SI] 41 ADD SI,1 ; 給SI加1 42 CMP AL,0 43 JE fin 44 MOV AH,0x0e ; 顯示一個文字 45 MOV BX,15 ; 指定字符顏色 46 INT 0x10 ; 調用顯卡BIOS 47 JMP putloop 48 fin: 49 HLT ; 讓CPU停止;等待指令 50 JMP fin ; 無限循環 51 52 msg: ; 信息顯示部分 53 DB 0x0a, 0x0a ; 換行2次 54 DB "hello, bitzhuwei's OS!" ; freeparam 55 DB 0x0a ; 換行 56 DB 0 57 58 RESB 0x7dfe-$ ; 填寫0x00,直到0x001fe 59 60 DB 0x55, 0xaa 61 62 ; 以下是啟動區以外部分的輸出 63 64 DB 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 65 RESB 4600 66 DB 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 67 RESB 1469432
虛擬機加載helloos.img
下載(30天自制操作系統光盤.rar),解壓。
將"OS\projects\01_day\helloos1"文件夾復制到"OS\tolset"文件夾下,如下圖所示。
進入"OS\tolset\helloos1"文件夾,刪除"helloos.nas"文件,然后將上表中的"02helloos.nas"內容保存到此處,并重命名為"helloos.nas"。(即更新helloos.nas文件的內容)
雙擊"!cons_9x.bat"(若后續操作失敗,則雙擊"!cons_nt.bat"重試),在彈出的命令行窗口中輸入"asm",回車;然后輸如"run",回車。
之后你就可以看到QEMU這個虛擬機加載啟動了(以helloos.nas為源代碼生成的)helloos.img這個及其簡單的操作系統,如下圖所示。
真機加載helloos.img
剛剛是用虛擬機啟動的helloos.img這個操作系統,下面介紹如何用物理機器加載啟動之。
制作啟動盤
首先,準備一個U盤,保證里面的數據你都不需要了。
然后,下載一個UltraISO軟件。運行之,打開剛剛生成的helloos.img,如下圖所示。
然后,使用菜單項"啟動-寫入硬盤映像…",如下圖所示。
在彈出的窗口中,確定"硬盤驅動器"中選中的是你準備好的U盤,然后點擊"寫入"按鈕,稍候即可,如下圖所示。
真機啟動
刻錄成功了,就是說啟動盤做好了。下面就重啟電腦,然后選擇從U盤啟動,你就可以看到真機啟動helloos.img了。除了一些細節不同外,和虛擬機加載helloos.img的情況基本一致。
總結
以后繼續編寫OS用虛擬機測試比較方便。
操作系統的hello world就算完成了。
文章列表