上次我們說了代碼,這次我們說說怎樣看到實驗結果。
首先編譯源文件(我的源文件就在當前路徑下,a盤和c盤在上一級目錄下):
nasm -f bin c08_mbr.asm -o c08_mbr.bin
nasm -f bin c09_1.asm -o c0901.bin
然后將bin文件寫入a盤和c盤
dd if=c08_mbr.bin of=../a.img
dd if=c0901.bin of=../c.img bs=512 seek=100 conv=notrunc
注意:也許你需要根據自身的情況修改路徑
?
好了,運行Bochs
可是結果令人失望,不管我怎么嘗試,都看到了如下的圖
[](http://img.blog.csdn.net/20160103005657960)
只能看到屏幕中間的“@”在閃爍,可是根本看不到時間。



我也試圖調試一下,在中斷處理程序里面打了斷點,可是中斷似乎進不去。
無法運行出正確的結果,也許不是我們錯了,或許是工具的問題。畢竟我用的是win7+vmware+ubuntu+bochs,而不是一個真實的環境。
?
好吧,既然這條路走不通,那我就換一條路吧。是不是vmware的問題呢?那我們用virtualBox試一試。
于是,我打造了win7+virtualBox+ubuntu+bochs,可是和上面的結果完全一樣,還是失敗了。看來不是vmware的問題。
真的是山窮水盡了嗎?我又想了一個方法,就是作者在第四章推薦的方法,virtualBox+VHD文件;
說干就干,首先,我們需要在virtualBox上創建一臺虛擬機。
?
第1步:啟動VirtualBox,點擊【新建】
[](http://img.blog.csdn.net/20160103005704989)
圖中的名稱是自己起的,我的叫“hello_asm”;
類型和版本也不重要,很多人都會誤解,以為VirtualBox會根據我們的選擇來安裝一個現成的操作系統。其實,并不是這樣,讓我們選擇操作系統的唯一目的,就是根據我們的選擇,在后面的步驟中為我們提供合理的硬件配置。實際上,我們不打算安裝任何操作系統,所以,我選擇了Other。好的,我們點擊【下一步】;
?
第2步:分配內存大小
[](http://img.blog.csdn.net/20160103005714944)
內存大小就根據自己主機的物理內存來配置吧,這里我選了512M,然后點擊【下一步】;
?
第3步:創建虛擬硬盤(或者用作者提供的)
[](http://img.blog.csdn.net/20160103005724790)
這里可以用作者提供的VHD文件,也可以自己創建。為了不失一般性,我們選擇‘現在創建虛擬硬盤’,點擊【創建】
?
第4步:選擇虛擬硬盤的文件類型
[](http://img.blog.csdn.net/20160103005735590)
這里一定要選擇VHD,因為我們打算用作者提供的工具(fixvhdwr.exe),然后點擊【下一步】;
?
第5步:選擇虛擬硬盤的類型
[](http://img.blog.csdn.net/20160103113346601)
一定要選擇“固定大小”,因為本書的配套工具只支持固定大小的。然后點擊【下一步】
?
第6步:選擇虛擬硬盤的位置和大小
[](http://img.blog.csdn.net/20160103113357408)
VHD文件位置是自己設置的,一定要放在一個你可以找到的地方。其實,放在作者提供的配書工具所在的文件夾是最方便的。我這里放在D盤。
另外,還要選擇虛擬硬盤的大小,我選了2GB;作者的要求是,一定要大于50MB
,然后點擊【創建】;
?
通過以上6步,我們的虛擬硬盤就創建好了。
?
下面的任務是把我們的bin文件寫入虛擬盤,最后看一下結果。
第1步:打開作者的配書工具——fixvhdwr.exe
[](http://img.blog.csdn.net/20160103113410399)
第2步:選擇虛擬磁盤文件
[](http://img.blog.csdn.net/20160103113416235)
找到我們剛才保存虛擬硬盤的目錄,選擇哪個VHD文件,然后【下一步】;
[](http://img.blog.csdn.net/20160103113420127)
第3步:選擇數據文件
[](http://img.blog.csdn.net/20160103125455371)
找到我們編譯好的c08_mbr.bin文件
?
第4步:設置起始LBA扇區號,并寫入文件
[](http://img.blog.csdn.net/20160103125459515)
因為是啟動文件,所以我們選擇0,然后點擊【寫入文件】;之后可以看到:
?
[](http://img.blog.csdn.net/20160103125502524)
最后點擊【完成】;
通過上面4個步驟,我們就把一個.bin文件寫入VHD文件了。
用同樣的方法,我們可以把c0901.bin(用戶程序)寫入邏輯扇區100(起始邏輯扇區號一定要和代碼中的保持一致);
?
下面,我們啟動虛擬機,看看結果吧:
[](http://img.blog.csdn.net/20160103125507098)
啟動虛擬機,我們終于看到了屏幕中央閃爍的時間!
?
經過上面的折騰,我覺得不是VMware的問題,也不是VirtualBox的問題,很可能是Bochs的問題!
心血來潮,我想到了我安裝的Bochs不是最新版本,也許我可以弄個最新版本試一試。
于是我在VMware上安裝了Bochs-2.6.8,按照以前的方法,得出的結果又驚喜又困惑,請看圖:
[](http://img.blog.csdn.net/20160103125511840)
看到了嗎?屏幕中央有時間了!
遺憾的是,這個時間跳動得太快了,也就是說這個時鐘走得特別快,根本不是每秒一次的更新頻率。我想這還是Bochs的問題吧。
?
好了,今天就到這里,下次再見
!