Microsoft Visual Studio 配置匯編語言開發環境
Microsoft Visual Studio配置匯編語言開發環境
本篇轉自:https://blog.csdn.net/qq_28249373/article/details/83475107
一般情況下,大都數人都不會想用匯編這種古老的語言,但有時候想操控硬件或者想優化程序,又不得不用到匯編語言。匯編語言的編寫,調試是一件非常麻煩的事,要是有一個集成的開發環境,那寫匯編就可以說是得心應手。就目前來看,似乎沒有哪個好的、免費的匯編IDE可以用,如果有的話,那微軟的VS(daoban的也算免費)算是一個吧。下面就講一講如何在VS2015中配置匯編語言開發環境(純匯編語言開發環境配置,而不是C語言內嵌匯編語言)。
一、首先,安裝VS,這個不用說,2015,2017或者以后的版本,這里用作例子的就是2015版。
二、安裝匯編語言語法高亮插件。這一步不是必須的,但如果有語法高亮和提示的話,開發起來會很爽!下面用圖來說明。
打開VS2015,在菜單欄上選擇“工具》擴展和更新”
聯機搜索“asm”,可以看到兩個匯編高亮插件,這兩個插件都可以用,本人覺得第一個更好用一些。
選擇高亮插件,下載安裝,然后重新啟動VS方可使用。
三、項目配置匯編開發環境。這一步是能否編譯匯編語言的關鍵!
首先,創建項目,這個跟開發C語言是一樣的。任選一個項目都可以,這里選擇“空項目”。
創建好項目后,對項目屬性進行配置。右擊項目名稱,然后在彈出的菜單中選擇“生成依賴項》生成自定義”。這一步相當於告訴IDE,我要開發的是匯編語言,而不是其他的。
在“生成自定義”中勾選“masm”,完成開發環境的配置。
四、添加匯編語言源程序(.asm)文件
右鍵asm文件,選擇“屬性”,此步是為了設置asm文件的屬性,根據自己需要做相應的更改。也可以不做更改,使用默認設置。
一般情況下,把“Use Safe Exception Handelers”項設為“是”,否則在“Release”模式下,生成解決方案會報錯。這個后面會說到。
五、匯編程序編寫、編譯和調試
先寫一段小代碼測試一下是否配置正確。很短的代碼,就是兩個寄存器相加。start是標簽,用來定義代碼的位置,end表示程序結束,end后面的start表明了程序的入口點為start處,相當於C語言的main函數的入口點是main。一個工程中可以有一個或多個asm文件,要生成解決方案的話,就要指定一個入口點,讓系統知道,程序應該從哪里開始。
將鼠標放在關鍵字處,可以看到高亮插件給出的提示,比如指令的用法、指令的性能,這給匯編開發帶來的極大的方便。
生成解決方案可以對程序進行調試。“生成》生成解決方案”,“調試》逐語句”。在“逐語句”調試模式下,可以查看寄存器的值。選擇“調試》窗口》寄存器”
到此為止,VS純匯編語言開發環境配置完畢。其實配置不算很麻煩,微軟的VS還是挺好用的。
六、匯編開發可能會遇到的一些問題
本人剛開始用VS開發匯編語言時遇到不少問題。如果“編譯”報錯,很可能是語法不正確,檢查程序是否有寫錯的地方,或者有錯誤的指令用法。其他配置問題,主要有以下幾個:
1.生成解決方案時報錯:“無法導出子系統,必須定義它”。如果是選擇“編譯”的話,沒有語法錯誤,一般都能通過。如果是“生成解決方案”的話,設置不對,有可能報錯。
解決方法:指定一個子系統。因為創建工程的時候選擇的是“空項目”,沒有指定是控制台,還是win32。所以生成解決方案之前必須指明是那種類型的項目,也就是選擇“子系統”。如果一開始選擇“控制台”或者“win32”項目,就不會出現這種報錯。
2.生成解決方案時報錯:“模塊對於SAFESEH是不安全的”“無法生成SAFESEH映像”。這個問題是asm文件屬性設置的問題。一般情況下,默認的asm屬性設置在debug模式下是不會報錯的,但在release模式下就會。這時,在asm文件屬性中的“Use Safe Exception handlers”設為“是”,就可以解決這個問題。
3.生成解決方案時提示沒有入口點問題。如果是生成解決方案(生成exe文件),那是一定要指定入口點的,就像C語言一定要有main函數一樣。匯編程序也要設置入口點,見下圖:
start定義入口位置,end 后面跟着start,是指明start為入口點。在一個工程中必須要有入口點,但入口點只能有一個,也就說end xxx這種情況只能出現一次,不能在每個asm文件中都來一個end xxx。缺少入口點的報錯有多種,其中一種如下圖:
出錯總結:如果“編譯”報錯,很可能是語法有問題。如果“編譯”成功,而“生成解決方案”時報錯,那就看看asm屬性設置是否正確,是否指定了子系統,是否設置了入口點。


