Q:主引導程序是軟件還是固件?如果是軟件,那么由誰開發(fā)?如何開發(fā)?
A.主引導程序
1.一段存儲在主引導區(qū)中的有效代碼
2.并不固化于硬件,屬于操作系統(tǒng)代碼的一部分
3.啟動操作系統(tǒng)內(nèi)核的橋梁,由匯編程序?qū)懗?br/>4.代碼總量不能超過512個字節(jié)(包含0x55aa)
我們可以由圖可以看出BIOS的入口于C/C++的入口的對比
實驗-編寫一個主引導程序(匯編語言),可獨立運行于x86架構(gòu)的主機(無操作系統(tǒng)),運行后在屏幕上打印"Hello,DTOS!"
A.實現(xiàn)思路
1.將關(guān)鍵寄存器的值設為0(mov ax,0)
2.定義需要打印的數(shù)據(jù)(db "Hello,D.T.OS!")
3.打印預定義好的字符數(shù)據(jù)(int 0x10)
在這里需要知道的是
mov:賦值操作,將右操作數(shù)賦值給左操作數(shù)
int:觸發(fā)中斷
hlt:停止運行,CPU進入暫停狀態(tài),不執(zhí)行任何操作
匯編中地址的訪問 方式:段地址:段內(nèi)偏移地址
標簽
B.中斷調(diào)用VS函數(shù)調(diào)用
實驗解決方案的設計
1.將匯編源碼編譯為二進制機器碼(nasm)創(chuàng)建虛擬網(wǎng)盤
2.創(chuàng)建虛擬盤(bximage)設置大小
3.將二進制代碼寫入虛擬盤起始位置(dd)if為輸入 of為輸出 bs為大小 連續(xù)寫入沒有間隔
4.在虛擬機將虛擬盤作為啟動盤執(zhí)行(vmware)
B.實現(xiàn)過程如下
a.編寫匯編語言
創(chuàng)新互聯(lián)公司是專業(yè)的資源網(wǎng)站建設公司,資源接單;提供網(wǎng)站制作、做網(wǎng)站,網(wǎng)頁設計,網(wǎng)站設計,建網(wǎng)站,PHP網(wǎng)站建設等專業(yè)做網(wǎng)站服務;采用PHP框架,可快速的進行資源網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
org 0x7c00
start:
mov ax, cs//關(guān)鍵寄存器地址為0
mov ss, ax
mov ds, ax
mov es, ax
mov si, msg//賦值操作 將msg的第一行地址賦值到si寄存器中
print:
mov al, [si]//[]表示取數(shù)據(jù)
add si, 1//si保存的地址值+1
cmp al, 0x00//結(jié)束位置
je last//進行比較跳轉(zhuǎn)
mov ah, 0x0e
mov bx, 0x0f
int 0x10//觸發(fā)中斷,打印字符
jmp print//相當于while循環(huán)
last:
hlt
jmp last//無條件的跳轉(zhuǎn)
msg:
db 0x0a, 0x0a//定義兩個連續(xù)數(shù)據(jù) 0x0a換行
db "Hello, DTOS!"http://定義字符串數(shù)據(jù)
db 0x0a, 0x0a//定義換行符
times 510-($-$$) db 0x00//填0滿足512字節(jié)
db 0x55, 0xaa//占用兩個字節(jié)
b.在Linux下將其編譯成二進制
1-2.通過nasm命令進行二進制編譯,如果沒有安裝nasm通過提示進行安裝
3-4.通過bximage命令進行網(wǎng)盤設置,如果沒有安裝bximage通過提示進行安裝
5-8.分別設置虛擬為虛擬網(wǎng)盤,然后將其設置為標準大小1.44兆,同時將其命名為a.img
9.通過dd命令將二進制代碼寫入虛擬盤起始位置,不間斷的寫入大小為512
生成的a.img如圖所示
c.在虛擬機上新建一個操作系統(tǒng),對其進行設置完之后,對啟動盤進行設置,將生成的a.img拷貝至新建的虛擬機下進行設置
d.設置完成之后啟動該操作系統(tǒng),可以得到我們需要的打印結(jié)果如圖所示
小結(jié)
1.主引導程序的代碼量不能超過512字節(jié)
2.主引導程序需要使用匯編語言開發(fā)
3.主引導程序中可以通過BIOS中斷使用硬件功能
4.主引導程序運行于實模式(地址都是實際的物理地址)
本文名稱:操作系統(tǒng)-Hello,DTOS!的創(chuàng)建
當前URL:http://chinadenli.net/article32/gchssc.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、Google、標簽優(yōu)化、品牌網(wǎng)站制作、服務器托管、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)