組合語言簡介處理器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