Visual Studio2017彙編環境教程
1. 創建ASM項目
打開Visual Studio 2017,選擇新建一個VC++項目。選擇「空項目」,輸入項目名稱,點確定。
在工程中的「源文件」文件夾新建「.asm」類型的源文件:
在這裡會發現不能新建「.asm」類型的文件,選擇「C++文件(.cpp)」,然後把文件更改擴展名為.asm。
說明:現在項目和源文件都有了,但是這畢竟是個VC++的空項目,VC++項目在默認情況下是不會編譯.asm類型的源文件的。
所以你點擊「生成解決方案」發現根本什麼都沒有生成,Debug文件夾是空的,就會出現這樣的現象。
2. 設置
第一步,右擊解決方案選擇「生成依賴項」→「生成自定義」:
把「MASM」那項勾上,確定。
第二步,右擊你創建的.asm源文件,選擇屬性,在配置屬性->常規->項類型下拉菜單中選擇「Microsoft Macro Assembler」。
這樣就指定了你源文件的類型是.asm格式的,如果不指定默認就是按照.cpp也就是c++語法去編譯自然是行不通的。
第三步,設置這些之後還要去修改項目配置,這樣程序才能得以運行。
這包括是否連接其他的庫文件(.lib)、是否調試、子系統的原型環境。
這些全部都在項目屬性中設置。打開項目屬性的方法:
1.你可以在剛才右鍵點 「生成自定義」那裡選擇最下面的屬性.
2.可以在項目選項卡里找到「屬性」一項然後選擇。
1) 配置屬性->連接器
把調試->生成調試信息改為「是(/Debug)」。在Visual Studio 2017中默認是 「true」;
把系統->子系統改為「控制台(/SUBSYSTEM:CONSOLE)」:
把高級->人口點改為「main」:
在配置管理器中選擇「x86」:
3. 測試代碼:
TITLE Add and Subtract (AddSub.asm) ; This program adds and subtracts 32-bit integers. ; Last update: 11/12/2017 INCLUDELIB kernel32.lib .MODEL flat,stdcall ;.code ExitProcess PROTO, ; exit program dwExitCode:DWORD ; return code .data .code main PROC mov eax,10100h ; EAX = 10100h add eax,40300h ; EAX = 50400h sub eax,200B0h ; EAX = 30350h push 0h call ExitProcess main ENDP END main
2.調試運行
寫好彙編代碼之後,「生成」→「生成解決方案」。生成的可執行文件名為「工程名.exe」,而不是以彙編源代碼文件的名字命名。這裡「64位MASM測試代碼.asm」為例。
設置斷點後,按F5調試。
調試開始後,點擊「調試」→「窗口」,可以打開「反彙編窗口」、「寄存器窗口」等。
其他:
如果還要連接其他的系統.lib庫文件,在配置屬性->連接器->輸入->附加依賴項選擇「編輯」,把要鏈接的庫文件名添加進去
如果需要系統以外的 .inc文件和.lib庫文件,則在配置屬性->VC++目錄中添加。
1 添加.inc文件:
2 添加.lib庫文件:
這裡以masm32的「include」、「lib」為例。在64位彙編環境下,masm32中的.inc文件和.lib庫文件不能使用。 也可以在配置屬性->鏈接器->常規->附加庫目錄中把你的系統以外的附加庫所在的目錄填上去,這樣鏈接器搜索的時候才能找到附加庫在哪。如果已經在配置屬性->VC++目錄中添加了系統以外的附加庫,則在這裡可以不必添加。
代碼高亮插件:AsmDude
推薦一下CodeMaid,很好用
推薦閱讀:
※64位Windows10系統彙編調試
※assembly notes
TAG:彙編語言 |