5-安裝虛擬機器和NASM彙編器
1. 安裝虛擬機器Bochs
從上一篇中,我們知道計算機的啟動過程是從主引導扇區才真正開始的,而作業系統就是從這開始一步一步把自己執行起來的。其實換個角度想一下,如果我們把編譯好的程式放在主引導扇區,不也能夠讓處理器執行嗎?
正常來說是可以的,而且還是在不依賴作業系統的情況下,讓編譯好的程式可以執行的唯一方法;但是,如果改寫了硬碟的主引導扇區,那麼windows和linux作業系統就會癱瘓,無法啟動,顯然這並不是我們所期望的。
解決辦法就是在現有的計算機基礎上,再虛擬出一臺計算機,為此我們需要安裝以下幾個軟體:Bochs,Editplus,NASM彙編器。
Bochs我們可以把它理解為是一個虛擬機器,可以模擬64位處理器,併兼容32位和16位,bochs有各種作業系統版本的,這裡我們下載Windows作業系統64位的2.6.8bochs。讓bochs虛擬機器來模擬一臺沒有“作業系統”的計算機,我們通過真實物理機可以控制這臺“沒有作業系統”的計算機,去觀察這臺計算機的暫存器和記憶體變化。
Editplus是一個功能強大的文字編輯器,我們在寫彙編程式碼時需要用到的。
對於Bochs和Editplus兩個軟體的安裝過程,很簡單,這裡就不再演示了,大家可以自行百度安裝教程。這裡我把虛擬機器Bochs安裝在D:\Bochs-2.6.8目錄下,點選bochsdbg.exe程式啟動虛擬機器
點選start,如果看到下面這個視窗,說明虛擬機器啟動成功。
2. NASM彙編器
每種處理器都可能會有自己的組合語言編譯器,同一款處理器針對不同平臺(linux或windows)也會有不同版本的組合語言編譯器。現存的組合語言彙編器有很多種,用的比較多的有MASM,FASM,TASM,AS86等… 我們使用的是《x86組合語言:真實模式到保護模式》一書中提供的NASM組合語言編譯器,當然你也可以使用其他的組合語言編譯器。
關於NASM彙編器的下載安裝,這裡不做過多介紹。
安裝完畢後點擊執行,NASM彙編器執行之後並不會顯示一個圖形的使用者介面,它只能使用命令的方式進行操作。比如我們用notepad編寫了一個組合語言源程式,並把它儲存到NASM的工作目錄下,檔名為001.asm ,組合語言源程式的檔名字尾格式就是“.asm”。
然後在001.asm裡寫了2條彙編指令,指令後面跟的是註釋,在組合語言中註釋的格式統一以“;”符號開始的,該符號後面的內容會被認為是註釋,這樣在編譯過程中認為“;”符號後面開始的都是註釋,就會忽略。
下一步就是編譯組合語言源程式了,我們開啟CMD視窗,輸入以下命令,然後回車,編譯就完成了。
其中-f是指定輸出檔案的格式,而bin就是二進位制的意思,-f bin合起來就是輸出以二進位制形式的檔案,-o是指令輸出的檔名,這裡我們要求輸出的檔名為以.bin為檔案字尾。
再開啟D:\asm\code檔案目錄,我們可以看到以.bin結尾的檔案就是編譯好的機器指令程式,開啟001.bin檔案,以十六進位制顯示,這些十六進位制的內容就是處理器可執行的機器指令。
3. 配置NASM彙編器快速編譯
有同學可能會覺得每次寫完一個彙編程式都要這樣輸入命令進行編譯實在是太麻煩了,為了方便我們可以使用配置快捷EditPlus快速啟動編譯器。
開啟EditPlus軟體,選擇工具——首選項:
選單文字:編譯
把NASM彙編器的安裝路徑輸入到命令視窗中,命令:“D:\asm\NASM\nasm.exe”
引數:"-f" “bin” “
(FileDir)/$(FileNameNoExt).bin”
動作:捕獲控制檯輸出
之後每次,我們寫完一個彙編程式就可以通過editplus編輯器進行編譯了,也可以直接按Ctrl + 1快捷鍵進行編譯。