真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

操作系統(tǒng)-Hello,DTOS!的創(chuàng)建

一.Hello,DTOS的創(chuàng)建

Q:主引導(dǎo)程序是軟件還是固件?如果是軟件,那么由誰(shuí)開(kāi)發(fā)?如何開(kāi)發(fā)
A.主引導(dǎo)程序
1.一段存儲(chǔ)在主引導(dǎo)區(qū)中的有效代碼
2.并不固化于硬件,屬于操作系統(tǒng)代碼的一部分
3.啟動(dòng)操作系統(tǒng)內(nèi)核的橋梁,由匯編程序?qū)懗?br/>4.代碼總量不能超過(guò)512個(gè)字節(jié)(包含0x55aa)
我們可以由圖可以看出BIOS的入口于C/C++的入口的對(duì)比
操作系統(tǒng)-Hello,DTOS!的創(chuàng)建
實(shí)驗(yàn)-編寫(xiě)一個(gè)主引導(dǎo)程序(匯編語(yǔ)言),可獨(dú)立運(yùn)行于x86架構(gòu)的主機(jī)(無(wú)操作系統(tǒng)),運(yùn)行后在屏幕上打印"Hello,DTOS!"
A.實(shí)現(xiàn)思路
1.將關(guān)鍵寄存器的值設(shè)為0(mov ax,0)
2.定義需要打印的數(shù)據(jù)(db "Hello,D.T.OS!")
3.打印預(yù)定義好的字符數(shù)據(jù)(int 0x10)
在這里需要知道的是
mov:賦值操作,將右操作數(shù)賦值給左操作數(shù)
操作系統(tǒng)-Hello,DTOS!的創(chuàng)建
int:觸發(fā)中斷
操作系統(tǒng)-Hello,DTOS!的創(chuàng)建
hlt:停止運(yùn)行,CPU進(jìn)入暫停狀態(tài),不執(zhí)行任何操作
操作系統(tǒng)-Hello,DTOS!的創(chuàng)建
匯編中地址的訪問(wèn) 方式:段地址:段內(nèi)偏移地址
操作系統(tǒng)-Hello,DTOS!的創(chuàng)建
標(biāo)簽
操作系統(tǒng)-Hello,DTOS!的創(chuàng)建
操作系統(tǒng)-Hello,DTOS!的創(chuàng)建
B.中斷調(diào)用VS函數(shù)調(diào)用
操作系統(tǒng)-Hello,DTOS!的創(chuàng)建
實(shí)驗(yàn)解決方案的設(shè)計(jì)
1.將匯編源碼編譯為二進(jìn)制機(jī)器碼(nasm)

操作系統(tǒng)-Hello,DTOS!的創(chuàng)建創(chuàng)建虛擬網(wǎng)盤(pán)
2.創(chuàng)建虛擬盤(pán)(bximage)
操作系統(tǒng)-Hello,DTOS!的創(chuàng)建設(shè)置大小
3.將二進(jìn)制代碼寫(xiě)入虛擬盤(pán)起始位置(dd)
操作系統(tǒng)-Hello,DTOS!的創(chuàng)建if為輸入 of為輸出 bs為大小 連續(xù)寫(xiě)入沒(méi)有間隔
4.在虛擬機(jī)將虛擬盤(pán)作為啟動(dòng)盤(pán)執(zhí)行(vmware)
B.實(shí)現(xiàn)過(guò)程如下
a.編寫(xiě)匯編語(yǔ)言

創(chuàng)新互聯(lián)公司是專業(yè)的資源網(wǎng)站建設(shè)公司,資源接單;提供網(wǎng)站制作、做網(wǎng)站,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行資源網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

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//進(jìn)行比較跳轉(zhuǎn)
    mov ah, 0x0e
    mov bx, 0x0f
    int 0x10//觸發(fā)中斷,打印字符
    jmp print//相當(dāng)于while循環(huán)

last:
    hlt
    jmp last//無(wú)條件的跳轉(zhuǎn)

msg:
    db 0x0a, 0x0a//定義兩個(gè)連續(xù)數(shù)據(jù) 0x0a換行
    db "Hello, DTOS!"http://定義字符串?dāng)?shù)據(jù) 
    db 0x0a, 0x0a//定義換行符
    times 510-($-$$) db 0x00//填0滿足512字節(jié)
    db 0x55, 0xaa//占用兩個(gè)字節(jié)

b.在Linux下將其編譯成二進(jìn)制
操作系統(tǒng)-Hello,DTOS!的創(chuàng)建操作系統(tǒng)-Hello,DTOS!的創(chuàng)建
1-2.通過(guò)nasm命令進(jìn)行二進(jìn)制編譯,如果沒(méi)有安裝nasm通過(guò)提示進(jìn)行安裝
3-4.通過(guò)bximage命令進(jìn)行網(wǎng)盤(pán)設(shè)置,如果沒(méi)有安裝bximage通過(guò)提示進(jìn)行安裝
5-8.分別設(shè)置虛擬為虛擬網(wǎng)盤(pán),然后將其設(shè)置為標(biāo)準(zhǔn)大小1.44兆,同時(shí)將其命名為a.img
9.通過(guò)dd命令將二進(jìn)制代碼寫(xiě)入虛擬盤(pán)起始位置,不間斷的寫(xiě)入大小為512
生成的a.img如圖所示
操作系統(tǒng)-Hello,DTOS!的創(chuàng)建
c.在虛擬機(jī)上新建一個(gè)操作系統(tǒng),對(duì)其進(jìn)行設(shè)置完之后,對(duì)啟動(dòng)盤(pán)進(jìn)行設(shè)置,將生成的a.img拷貝至新建的虛擬機(jī)下進(jìn)行設(shè)置
操作系統(tǒng)-Hello,DTOS!的創(chuàng)建
d.設(shè)置完成之后啟動(dòng)該操作系統(tǒng),可以得到我們需要的打印結(jié)果如圖所示
操作系統(tǒng)-Hello,DTOS!的創(chuàng)建
小結(jié)
1.主引導(dǎo)程序的代碼量不能超過(guò)512字節(jié)
2.主引導(dǎo)程序需要使用匯編語(yǔ)言開(kāi)發(fā)
3.主引導(dǎo)程序中可以通過(guò)BIOS中斷使用硬件功能
4.主引導(dǎo)程序運(yùn)行于實(shí)模式(地址都是實(shí)際的物理地址)


當(dāng)前標(biāo)題:操作系統(tǒng)-Hello,DTOS!的創(chuàng)建
分享URL:http://weahome.cn/article/gchssc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部