《30天自制操作系统》笔记(01)——hello bitzhuwei’s OS!
《30天自制操作系統(tǒng)》筆記(01)——hello bitzhuwei's OS!
最初的OS代碼
1 ; hello-os 2 ; TAB=4 3 4 ORG 0x7c00 ; 指明程序的裝載地址 5 6 ; 以下這段是標(biāo)準(zhǔn)FAT12格式軟盤專用的代碼 7 8 JMP entry 9 DB 0x90 10 DB "HELLOIPL" ; freeparam 啟動(dòng)區(qū)的名稱可以是任意的字符串(8字節(jié)) 11 DW 512 ; 每個(gè)扇區(qū)(sector)的大小(必須為512字節(jié)) 12 DB 1 ; 簇(cluster)的大小(必須為1個(gè)扇區(qū)) 13 DW 1 ; FAT的起始位置(一般從第一個(gè)扇區(qū)開始) 14 DB 2 ; FAT的個(gè)數(shù)(必須為2) 15 DW 224 ; 根目錄的大小(一般設(shè)成224項(xiàng)) 16 DW 2880 ; 該磁盤的大小(必須是2880扇區(qū)) 17 DB 0xf0 ; 磁盤的種類(必須是0xf0) 18 DW 9 ; FAT的長(zhǎng)度(必須是9扇區(qū)) 19 DW 18 ; 1個(gè)磁道(track)有幾個(gè)扇區(qū)(必須是18) 20 DW 2 ; 磁頭數(shù)(必須是2) 21 DD 0 ; 不使用分區(qū),必須是0 22 DD 2880 ; 重寫一次磁盤大小 23 DB 0,0,0x29 ; 意義不明,固定 24 DD 0xffffffff ; (可能是)卷標(biāo)號(hào)碼 25 DB "HELLO-OS " ; freeparam 磁盤的名稱(11字節(jié)) 26 DB "FAT12 " ; 磁盤格式名稱(8字節(jié)) 27 RESB 18 ; 先空出18字節(jié) 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 ; 顯示一個(gè)文字 45 MOV BX,15 ; 指定字符顏色 46 INT 0x10 ; 調(diào)用顯卡BIOS 47 JMP putloop 48 fin: 49 HLT ; 讓CPU停止;等待指令 50 JMP fin ; 無(wú)限循環(huán) 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 ; 以下是啟動(dòng)區(qū)以外部分的輸出 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 02helloos.nas?
虛擬機(jī)加載helloos.img
下載(30天自制操作系統(tǒng)光盤.rar),解壓。
將"OS\projects\01_day\helloos1"文件夾復(fù)制到"OS\tolset"文件夾下,如下圖所示。
進(jìn)入"OS\tolset\helloos1"文件夾,刪除"helloos.nas"文件,然后將上表中的"02helloos.nas"內(nèi)容保存到此處,并重命名為"helloos.nas"。(即更新helloos.nas文件的內(nèi)容)
雙擊"!cons_9x.bat"(若后續(xù)操作失敗,則雙擊"!cons_nt.bat"重試),在彈出的命令行窗口中輸入"asm",回車;然后輸如"run",回車。
之后你就可以看到QEMU這個(gè)虛擬機(jī)加載啟動(dòng)了(以helloos.nas為源代碼生成的)helloos.img這個(gè)及其簡(jiǎn)單的操作系統(tǒng),如下圖所示。
真機(jī)加載helloos.img
剛剛是用虛擬機(jī)啟動(dòng)的helloos.img這個(gè)操作系統(tǒng),下面介紹如何用物理機(jī)器加載啟動(dòng)之。
制作啟動(dòng)盤
首先,準(zhǔn)備一個(gè)U盤,保證里面的數(shù)據(jù)你都不需要了。
然后,下載一個(gè)UltraISO軟件。運(yùn)行之,打開剛剛生成的helloos.img,如下圖所示。
然后,使用菜單項(xiàng)"啟動(dòng)-寫入硬盤映像…",如下圖所示。
在彈出的窗口中,確定"硬盤驅(qū)動(dòng)器"中選中的是你準(zhǔn)備好的U盤,然后點(diǎn)擊"寫入"按鈕,稍候即可,如下圖所示。
真機(jī)啟動(dòng)
刻錄成功了,就是說(shuō)啟動(dòng)盤做好了。下面就重啟電腦,然后選擇從U盤啟動(dòng),你就可以看到真機(jī)啟動(dòng)helloos.img了。除了一些細(xì)節(jié)不同外,和虛擬機(jī)加載helloos.img的情況基本一致。
總結(jié)
以后繼續(xù)編寫OS用虛擬機(jī)測(cè)試比較方便。
操作系統(tǒng)的hello world就算完成了。
?
?點(diǎn)此查看下一篇《30天自制操作系統(tǒng)》筆記(02)——導(dǎo)入C語(yǔ)言
總結(jié)
以上是生活随笔為你收集整理的《30天自制操作系统》笔记(01)——hello bitzhuwei’s OS!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 将公用文件夹从Exchange2010迁
- 下一篇: 简单数据类型转换