[彙編]_[初級]_[VS2010搭建彙編開發環境win32和x64]
場景:
1. 雖然使用MASM32也可以編譯執行彙編程式,但是既然裝了VS2010,它也能支援編譯執行彙編吧.不然微軟的開發人員難道還不用vs寫彙編程式了?
2. x64程式是大勢所趨,win32(只能支援4G記憶體)逐漸退出舞臺了,所以x64編譯彙編也是必然要知道的.
win32專案步驟:
1.建一個空專案,必須先建空專案,改現成的C++專案為assembler專案可能會造成編譯不過.
2.選中專案右鍵 “生成自定義”,選擇MASM生成規則.
3.選中原始檔右鍵-》新增-》新建項
4.選中專案右鍵-》屬性-》連結器-》系統-》 子系統選 “控制檯(SUBSYSTEM:CONSOLE)”
5.選中專案右鍵-》屬性-》連結器-》高階-》 入口點 填 "main"
6.測試程式碼編譯執行:
TITLE Add and Subtract (AddSub.asm) ; This program adds and subtracts 32-bit integers. ; Last update: 2/1/02 INCLUDELIB kernel32.lib .MODEL flat,stdcall ;.code ExitProcess PROTO, ; exit program dwExitCode:DWORD ; return code .data .code main PROC mov eax,10000h ; EAX = 10000h add eax,40000h ; EAX = 50000h sub eax,20000h ; EAX = 30000h push 0h call ExitProcess main ENDP END main
x64彙編例子:
1. 建立過程和win32一樣,之後轉換為x64配置. 在活動解決方案平臺新建 選擇x64.
2. 測試程式碼,x64和win32的一些Directive不一樣了,使用的64位暫存器名也不一樣,RAX?,詳細不同請參考微軟說明文件
TITLE Add and Subtract (AddSub.asm) ; This program adds and subtracts 32-bit integers. ; Last update: 2/1/02 ;.MODEL flat,stdcall x64 not support .code EXTERN ExitProcess:PROC INCLUDELIB kernel32.lib .data .code main PROC mov eax,10000h ; EAX = 10000h add eax,40000h ; EAX = 50000h sub eax,20000h ; EAX = 30000h push 0h call ExitProcess main ENDP END ;END main,donot use main
3.除錯
參考:
http://stackoverflow.com/questions/9319055/visual-c-2010-express-x64-assembly
https://msdn.microsoft.com/en-us/vstudio/gg697159
https://msdn.microsoft.com/en-us/library/hb5z4sxd.aspx
http://www.masmforum.com/board/index.php?topic=14691.15;wap2
http://blog.csdn.net/natepan/article/details/6781439