場景:
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
7.輸出,調試時選擇菜單 調試-》窗口-》寄存器 就能看到寄存器值。

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
