x64: c++
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 EXTERN MessageBoxA:PROC INCLUDELIB kernel32.lib .data szCaption db '恭喜',0 szText db '當您看到這個信息的時候,您已經能夠編譯Win32彙編程序了!',0 .code main PROC mov eax,10000h ; EAX = 10000h add eax,40000h ; EAX = 50000h sub eax,20000h ; EAX = 30000h push rbp mov rbp,rsp sub rsp,30h ;mov rdx, offset szText ;mov [rbp-8],rdx ;mov r8, offset szCaption ;mov [rbp-16],r8 mov rcx, 0 mov rdx, offset szText;[rbp-8] mov r8, offset szCaption;[rbp-16] mov r9, 0 call MessageBoxA mov rcx, 0h call ExitProcess main ENDP END ;END main,donot use main
.MODEL flat,stdcall ;Visual Studio 2017 能夠自動連接到相應的 DLL,不須要導入庫,可是須要聲明要用的函數 ExitProcess PROTO STDCALL :DWORD ;聲明須要調用的 API MessageBoxA PROTO STDCALL :DWORD,:DWORD,:DWORD,:DWORD ;聲明須要調用的 API 冒號後面是參數 .data szCaption db '恭喜',0 szText db '當您看到這個信息的時候,您已經能夠編譯Win32彙編程序了!',0 .code main PROC ;傳入 MessageBoxA API 所須要的四個參數,經過 PUSH 方法,按照從右往左的順序壓入棧中 push 0h push offset szCaption push offset szText push 0 ;調用時,會自動從棧中取出四個參數,並執行相應的功能 call MessageBoxA push 0h call ExitProcess main ENDP END main
st123 struct a dword ? st123 ends NEW_WNDCLASS struct DwOption dword ? OldWndClass st123 <> NEW_WNDCLASS ends
我是上學期學的彙編,由於有vs又不想用課上教的麻煩的dosbox以及masm32,可是一直沒找到高亮插件和能調試的(難在運行不了而找不到答案上,出現的錯誤在最後放出,還請先達們不吝指點)彙編代碼因此放棄了。編程
可是我又偶然想起來了,並且偶然找到了高亮插件!windows
(那時查了不少帖子,甚至有人說在某度知道里說vs不能寫彙編,我真是對這種不負責任的回答嗤之以鼻,ide
有個貼吧的帖子說
彙編開發環境,我的建議,若是已經安裝了Visual Studio,推薦直接用vs做爲開發調試工具,緣由很簡單,如今用的規則就是masm,微軟的規則,沒有人比微軟更瞭解微軟,並且能夠很方便的爲後續加入c/c++開發提供一站式的平臺,若是沒有安裝,能夠考慮後者Radasm+ Masm32,不要用什麼cmd,而後debug。。。愚蠢至極,除了裝逼浪費時間,仍是裝逼浪費時間,並無半點實際價值。詳見http://tieba.baidu.com/p/4827889049函數
嗯,我很贊成上面不是斜體的那段文字(尤爲是win10後根本沒debug了,還得搞dosbox),因此我又來找vs運行彙編的方法了~工具
)visual-studio
沒想到課本上那麼少的東西實際運行起來水那麼深,深的不是基本語法,而是各類庫什麼的照搬書上的代碼都無法運行,真是……根本不像以前的c語言直接一個f5就完事那麼簡單。(ps:參考的那幾個帖子的代碼有的能運行,有的)測試
==============分割線============spa
~最簡單的(C中內嵌彙編代碼):在VS的C++文件裏直接使用__asm{} 直接寫彙編代碼..net
http://blog.csdn.net/sinat_27382047/article/details/53968622
~偷個懶寫彙編做業(C語言生成彙編代碼)或者研究一下生成的彙編代碼
http://blog.csdn.net/sinat_27382047/article/details/72810726
~反彙編介紹(直接查看c中某些代碼的彙編代碼):
http://blog.csdn.net/sinat_27382047/article/details/72810788
~彙編代碼在vs上的使用方法(配置完的VS並不能正常運行平時能在dosbox上運行的彙編語句):
http://blog.csdn.net/sinat_27382047/article/details/72830040
↑↑↑↑↑↑(大家想要的純彙編hello world)↑↑↑↑↑
==============分割線============
vs2015的彙編語法高亮插件(安裝就行)這玩意找了我好久= =
http://download.csdn.net/detail/fhw_bin_dl/9724391
**其實AsmHighlighter高亮插件很是好弄的,在VS2017 工具->擴展和更新->選擇聯機->搜索AsmHighlighter,而後安裝就好了【感謝下方評論中的OringeEd君】
此處後綴名是彙編的.asm
(能夠看到,若是安裝了高亮插件,不只註釋能夠用了,代碼也有高亮提示了)
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
關於代碼的討論:https://blog.csdn.net/Alisebeast/article/details/79861177
——來自貼吧的嘲諷~
http://tieba.baidu.com/p/4827889049
——高亮插件(asmhighlighter官網?)
http://asmhighlighter.codeplex.com/
——求高亮插件的帖子
http://bbs.csdn.net/topics/391043876
——[彙編]_[初級]_[VS2010搭建彙編開發環境win32和x64](過程部分基本如此帖所作)
http://blog.csdn.net/infoworld/article/details/45085415
——vs2010的插件英文教程
http://kipirvine.com/asm/gettingStartedVS2015/index.htm#tutorial32(貌似這就是全部參考的源頭,很全)
http://kipirvine.com/asm/gettingstartedvs2010/#syntax
http://www.deconflations.com/2011/masm-assembly-in-visual-studio-2010/
VS2017寫彙編教程(親測可用,很順暢,作到了上文中「直接一個f5就完事」,沒有ml.exe的錯誤):
http://blog.csdn.net/maguanzhan7939/article/details/78608345
【這樣 就不用masm for windows那樣的收費ide了~還比那個逼格高】
——一些源網:
http://www.masm32.com/download.htm (masm32)
https://archive.codeplex.com/?p=asmhighlighter (asmhighlighter)
===========如下爲廣告,想省事的能夠來我這裏2C幣下載~===================
不想裝masm32(上圖那貨)只想要庫的能夠下我放的連接(內含一套 高亮插件+要用到的masm庫):
http://download.csdn.net/download/sinat_27382047/10248253