組合語言簡介處理器BIOS啟動程式微軟組譯器組合語言DOSWindowsVisualStudioGNUGNU 組譯器C 轉組語連結 C 語言嵌入 C 語言訊息相關網站參考文獻最新修改簡體版English |
在微軟的Visual Studio 中,目前所使用的組譯工具是 ML.exe,ML.exe 除了進行組譯之外,還可以用來進行連結動作。但是,在 Visual Studio 整合環境中,我們並不需要使用指令的方式執行 ML.exe,因為我們可以利用功能表的方式,編譯組合語言程式,然後直接在 Visual Studio 中執行,甚至除錯。 要學習如何在 Visual Studio 環境中撰寫組合語言,則可以參考 Kip Irvine 的『Assembly Language for Intel-Based Computers, 5th Edition』一書,以及該書的網站 。在使用 Visual Studio 學習組合語言的開發之前,必須先學習如何設定其開發環境,Kip Irvine在網頁『Getting Started with MASM』 中詳細說明了這些設定方式,請有興趣的初學者仔細研讀。 範例一是 Kip Irvine 書籍中的一個範例,該範例會計算eax=0x10000+ 0x40000- 0x20000的結果,然後利用 DumpRegs 印出所有暫存器。該書的範例幾乎都會先以INCLUDE Irvine32.inc指令引用標頭檔,該指令會正確的引用像 DumpRegs 等函數,這讓讀者可以不需要一開始就學習輸出入的方式,降低了組合語言的學習難度。 範例一、以 Visual Studio 撰寫MASM組合語言的範例
執行結果:
讀者可以看到執行後,EAX 的內容為 0x30000,因此,該組合語言正確的執行了 eax=0x10000+ 0x40000- 0x20000的動作。現在,讀者可以在網路上下載該書的範例並執行看看,若您執行 AddSum.asm 這個程式,應可看到如圖一所顯示的執行畫面。 圖一、在Visual Studio 中執行組合語言 圖二、在Visual Studio 中執行 MASM 組合語言的結果 另外,在 Irvine.inc 檔案中,也引用了基本的字串函式庫,因此,您可以利用 call WriteString 這個指令,呼叫字串顯示函數,以便將字串輸出到螢幕上。圖三顯示了 main.asm 這個範例於 Visual Studio 中的情況,該程式會將字串 “MASM program example” 字串輸出到螢幕上。在 Irvine 的書籍中,還有許多進階的範例,您可以直接從網路上下載,然後利用 Visual Studio 執行看看,以便觀察組合語言的執行過程,並進一步理解每個指令的意義。 圖三、用組合語言輸出字串到螢幕上 參考文獻
|
在 Visual Studio 中撰寫組合語言
page revision: 8, last edited: 11 Oct 2010 07:06
Post preview:
Close preview