VS2015配置並運行彙編(一步一步照圖作)【vs2017的連接在最後】

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

x86:

.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君】

 

過程【這是小事,vs這一系列均可以照葫蘆】

1、建項目

1.建一個空項目,必須先建空項目,改現成的C++項目爲assembler項目可能會形成編譯不過.

 

2.選中項目右鍵 「生成自定義」,選擇MASM生成規則.

 

2、添加及設定源文件

3.選中源文件右鍵-》添加-》新建項

此處後綴名是彙編的.asm

4.選中項目右鍵-》屬性-》連接器-》系統-》 子系統選 「控制檯(SUBSYSTEM:CONSOLE)」

5.選中項目右鍵-》屬性-》連接器-》高級-》 入口點 填 "main"

 

3、測試代碼編譯運行:

(能夠看到,若是安裝了高亮插件,不只註釋能夠用了,代碼也有高亮提示了

最後,輸出,調試時選擇菜單 調試-》窗口-》寄存器 就能看到寄存器值。(這樣,就不至於苦逼地用指令-ip一步步看了吧~)

 

 

代碼【這事兒可深了……】
先上那位大神能夠過的代碼

 

 
  1. TITLE Add and Subtract (AddSub.asm)

  2.  
  3. ; This program adds and subtracts 32-bit integers.

  4. ; Last update: 2/1/02

  5.  
  6.  
  7. INCLUDELIB kernel32.lib

  8.  
  9. .MODEL flat,stdcall

  10.  
  11. ;.code

  12. ExitProcess PROTO, ; exit program

  13. dwExitCode:DWORD ; return code

  14.  
  15.  
  16. .data

  17. .code

  18. main PROC

  19.  
  20. mov eax,10000h ; EAX = 10000h

  21. add eax,40000h ; EAX = 50000h

  22. sub eax,20000h ; EAX = 30000h

  23.  
  24. push 0h

  25. call ExitProcess

  26.  
  27. main ENDP

  28. 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/

 

 

=========分割線====2018.2.10============

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

相關文章
相關標籤/搜索