20121118

MASM - 如何使用Visual Studio 2012開發組合語言

說明

最近因為想寫一套自己的作業系統,所以又開始使用組合語言(Assembly Language)。

 

小時候爸爸媽媽有買一套MASM 6.0給我,不過那已經是十幾年前的事了,想當然耳目前的作業系統應該是不能用了。

 

上網研究一下才發現,原來,Visual Studio中還是有內建MASM,而且新版還可以組譯x64的程式碼。下面介紹一下我Google到的結果。

 

 

解決方法

1. 開啟VS2012,並建立空白的VC++專案。

201201117-1-MASM-如何使用Visual Studio 2012開發組合語言-W

 

2. 右點專案,並選擇「Build Customizations」。

201201117-2-MASM-如何使用Visual Studio 2012開發組合語言-W

 

3. 勾選「masm」。

201201117-3-MASM-如何使用Visual Studio 2012開發組合語言-W

 

4. 加入一個新的文字檔案,取名為「test.asm」 (或其他您想要的名稱)。

201201117-4-MASM-如何使用Visual Studio 2012開發組合語言-W

 

5. 右點專案,選「Property」,如果您都成功按照之前的步驟的話,這邊會出現「Microsoft Macro Assembler」的標籤頁 。

201201117-5-MASM-如何使用Visual Studio 2012開發組合語言-W

 

6. 接下來須設定Linker,以便正確進行連結。在前一個畫面中選取「Linker / System / SubSystem」,並設定「Windows」之設定值 (直接下拉選單選取即可)。

201201117-6-MASM-如何使用Visual Studio 2012開發組合語言-W

 

7. 同一個畫面,選取「Linker / Advanced / EntryPoint」以設定程式進入點。

201201117-7-MASM-如何使用Visual Studio 2012開發組合語言-W

 

8. 同一個畫面,選取「Linker / Advanced / Image Has Safe Exception Handlers」,設定為「No」。

201201117-8-MASM-如何使用Visual Studio 2012開發組合語言-W

 

9. 安裝asmHighlighter,請點選連結進入網站下載並安裝,這樣.asm的檔案,才會根據語法顯示不同顏色。

 

(安裝後,在編輯畫面中,若是你的程式碼後面有註解之時,按下「[Ctrl + K] + [Ctrl + D]」,則asmHighlighter會幫你計算程式碼指令大小,非常有用)。

 

10. 在VS2012(或VS2010)中,若asmHighlighter沒作用時,請刪除以下機碼:

「HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0\FontAndColors\Cache」 (清除字型及顏色快取)。

 

參考

MASM-Wikipedia

MASM Assembly in Visual Studio 2010

Assembly Programming with Visual Studio 2010/2012

asmHighlighter

The MASM32 SDK Version 11

开始进行 64 位 Windows 系统编程之前需要了解的所有信息

Introduction to 64-bit programming