8086实时时钟实验(二)——《x86汇编语言:从实模式到保护模式》读书笔记06
上次我們說了代碼,這次我們說說怎樣看到實驗結(jié)果。
首先編譯源文件(我的源文件就在當(dāng)前路徑下,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
注意:也許你需要根據(jù)自身的情況修改路徑
?
好了,運行Bochs
可是結(jié)果令人失望,不管我怎么嘗試,都看到了如下的圖
只能看到屏幕中間的“@”在閃爍,可是根本看不到時間。
我也試圖調(diào)試一下,在中斷處理程序里面打了斷點,可是中斷似乎進(jìn)不去。
無法運行出正確的結(jié)果,也許不是我們錯了,或許是工具的問題。畢竟我用的是win7+vmware+ubuntu+bochs,而不是一個真實的環(huán)境。
?
好吧,既然這條路走不通,那我就換一條路吧。是不是vmware的問題呢?那我們用virtualBox試一試。
于是,我打造了win7+virtualBox+ubuntu+bochs,可是和上面的結(jié)果完全一樣,還是失敗了。看來不是vmware的問題。
真的是山窮水盡了嗎?我又想了一個方法,就是作者在第四章推薦的方法,virtualBox+VHD文件;
說干就干,首先,我們需要在virtualBox上創(chuàng)建一臺虛擬機(jī)。
?
第1步:啟動VirtualBox,點擊【新建】
圖中的名稱是自己起的,我的叫“hello_asm”;
類型和版本也不重要,很多人都會誤解,以為VirtualBox會根據(jù)我們的選擇來安裝一個現(xiàn)成的操作系統(tǒng)。其實,并不是這樣,讓我們選擇操作系統(tǒng)的唯一目的,就是根據(jù)我們的選擇,在后面的步驟中為我們提供合理的硬件配置。實際上,我們不打算安裝任何操作系統(tǒng),所以,我選擇了Other。好的,我們點擊【下一步】;
?
第2步:分配內(nèi)存大小
內(nèi)存大小就根據(jù)自己主機(jī)的物理內(nèi)存來配置吧,這里我選了512M,然后點擊【下一步】;
?
第3步:創(chuàng)建虛擬硬盤(或者用作者提供的)
這里可以用作者提供的VHD文件,也可以自己創(chuàng)建。為了不失一般性,我們選擇‘現(xiàn)在創(chuàng)建虛擬硬盤’,點擊【創(chuàng)建】
?
第4步:選擇虛擬硬盤的文件類型
這里一定要選擇VHD,因為我們打算用作者提供的工具(fixvhdwr.exe),然后點擊【下一步】;
?
第5步:選擇虛擬硬盤的類型
一定要選擇“固定大小”,因為本書的配套工具只支持固定大小的。然后點擊【下一步】
?
第6步:選擇虛擬硬盤的位置和大小
VHD文件位置是自己設(shè)置的,一定要放在一個你可以找到的地方。其實,放在作者提供的配書工具所在的文件夾是最方便的。我這里放在D盤。
另外,還要選擇虛擬硬盤的大小,我選了2GB;作者的要求是,一定要大于50MB,然后點擊【創(chuàng)建】;
?
通過以上6步,我們的虛擬硬盤就創(chuàng)建好了。
?
下面的任務(wù)是把我們的bin文件寫入虛擬盤,最后看一下結(jié)果。
第1步:打開作者的配書工具——fixvhdwr.exe
第2步:選擇虛擬磁盤文件
找到我們剛才保存虛擬硬盤的目錄,選擇哪個VHD文件,然后【下一步】;
第3步:選擇數(shù)據(jù)文件
找到我們編譯好的c08_mbr.bin文件
?
第4步:設(shè)置起始LBA扇區(qū)號,并寫入文件
因為是啟動文件,所以我們選擇0,然后點擊【寫入文件】;之后可以看到:
?
最后點擊【完成】;
通過上面4個步驟,我們就把一個.bin文件寫入VHD文件了。
用同樣的方法,我們可以把c0901.bin(用戶程序)寫入邏輯扇區(qū)100(起始邏輯扇區(qū)號一定要和代碼中的保持一致);
?
下面,我們啟動虛擬機(jī),看看結(jié)果吧:
啟動虛擬機(jī),我們終于看到了屏幕中央閃爍的時間!
?
經(jīng)過上面的折騰,我覺得不是VMware的問題,也不是VirtualBox的問題,很可能是Bochs的問題!
心血來潮,我想到了我安裝的Bochs不是最新版本,也許我可以弄個最新版本試一試。
于是我在VMware上安裝了Bochs-2.6.8,按照以前的方法,得出的結(jié)果又驚喜又困惑,請看圖:
看到了嗎?屏幕中央有時間了!
遺憾的是,這個時間跳動得太快了,也就是說這個時鐘走得特別快,根本不是每秒一次的更新頻率。我想這還是Bochs的問題吧。
?
好了,今天就到這里,下次再見!
總結(jié)
以上是生活随笔為你收集整理的8086实时时钟实验(二)——《x86汇编语言:从实模式到保护模式》读书笔记06的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux每个版本发布时间,Ubuntu
- 下一篇: 《X86汇编语言:从实模式到保护模式》读