中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

操作系統-Hello,DTOS!的創建

發布時間:2020-07-12 02:33:59 來源:網絡 閱讀:523 作者:淡淡_小孩 欄目:系統運維

一.Hello,DTOS的創建

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

操作系統-Hello,DTOS!的創建創建虛擬網盤
2.創建虛擬盤(bximage)
操作系統-Hello,DTOS!的創建設置大小
3.將二進制代碼寫入虛擬盤起始位置(dd)
操作系統-Hello,DTOS!的創建if為輸入 of為輸出 bs為大小 連續寫入沒有間隔
4.在虛擬機將虛擬盤作為啟動盤執行(vmware)
B.實現過程如下
a.編寫匯編語言

org 0x7c00

start:
  mov ax, cs//關鍵寄存器地址為0
    mov ss, ax
    mov ds, ax
    mov es, ax

    mov si, msg//賦值操作 將msg的第一行地址賦值到si寄存器中

print:
    mov al, [si]//[]表示取數據
    add si, 1//si保存的地址值+1
    cmp al, 0x00//結束位置
    je last//進行比較跳轉
    mov ah, 0x0e
    mov bx, 0x0f
    int 0x10//觸發中斷,打印字符
    jmp print//相當于while循環

last:
    hlt
    jmp last//無條件的跳轉

msg:
    db 0x0a, 0x0a//定義兩個連續數據 0x0a換行
    db "Hello, DTOS!"http://定義字符串數據 
    db 0x0a, 0x0a//定義換行符
    times 510-($-$$) db 0x00//填0滿足512字節
    db 0x55, 0xaa//占用兩個字節

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

梓潼县| 嘉善县| 浏阳市| 长治市| 景泰县| 巍山| 太保市| 高阳县| 廊坊市| 页游| 仁化县| 青浦区| 临洮县| 江安县| 佛教| 蒙城县| 商洛市| 崇义县| 四平市| 长葛市| 水城县| 阿拉善盟| 漳平市| 通州区| 垣曲县| 锡林浩特市| 三穗县| 宝兴县| 同德县| 岗巴县| 伊通| 板桥市| 岢岚县| 云林县| 河北省| 西藏| 信阳市| 房山区| 桐梓县| 宝清县| 昌黎县|