日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

8086实时时钟实验(二)——《x86汇编语言:从实模式到保护模式》读书笔记06

發(fā)布時間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 8086实时时钟实验(二)——《x86汇编语言:从实模式到保护模式》读书笔记06 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

上次我們說了代碼,這次我們說說怎樣看到實驗結(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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。