如何驗證編寫的主引導程序?
解決方案設計:
將彙編源碼編譯爲二進制機器碼(nasm)
建立虛擬盤(bximage)
將二進制代碼寫入虛擬盤起始位置(dd)
在虛擬機中將虛擬盤做爲啓動盤執行(vmware)spa
就算編譯獲得了二進制碼,如何將二進制的機器碼拿到硬件上面去執行呢?
由於沒有操做系統,因此必需要使用實際的存儲介質了,比方說光盤。將咱們編譯獲得的二進制碼刻錄到光盤中,而後讓計算機從光盤來啓動。可是這樣作太麻煩了。
須要使用一個簡單的方法,此時虛擬機就能夠派上用場了。既然是虛擬機,就乾脆完全一點,建立一個虛擬盤。讓虛擬機去讀取虛擬盤中的二進制碼。這樣的話,就方便了。
如何將編譯獲得的二進制碼寫到一張虛擬盤中?
可使用dd命令進行完成操作系統
實驗原材料
nasm
.nasm boot.asm -o boot.bin
bximage 建立虛擬軟盤,-fd表明的就是建立的虛擬軟盤,虛擬軟盤的大小爲1.44M,-q表示咱們不須要進行交互,一次性建立出a.img就能夠了。
.bximage a.img -q -fd -size=1.44
-dd 將二進制的機器碼寫入虛擬軟盤
dd if=boot.bin of =a.img bs=512 count=1 conv=notrunc
if表示輸入,輸入就是咱們編譯獲得的二進制機器碼;
of表示輸出,輸出到a.img這個虛擬軟盤上去;
bs表示咱們寫入時每一個單元的大小,在這個地方咱們只須要寫512個字節就能夠了。所以用count=1來指定一個512字節;
conv=notrunc表示連續的寫入,不要有任何的間隔
以上就是實驗所用到的命令。設計
總結:開發
主引導程序的代碼量不能超過512字節
主引導程序須要使用彙編語言開發
主引導程序中能夠經過BIOS中斷使用硬件功能
主引導程序運行於實模式(地址都是實際的物理地址)源碼