1. 程式人生 > >VS2015配置並執行彙編(一步一步照圖做)【vs2017的連結在最後】

VS2015配置並執行彙編(一步一步照圖做)【vs2017的連結在最後】

前言

我是上學期學的彙編,因為有vs又不想用課上教的麻煩的dosbox以及masm32,抓狂但是一直沒找到高亮外掛和能除錯的(難在執行不了而找不到答案上,出現的錯誤在最後放出,還請先達們不吝指點)彙編程式碼所以放棄了。

微笑但是我又偶然想起來了,而且偶然找到了高亮外掛!

(那時查了很多帖子,甚至有人說在某度知道里說vs不能寫彙編,發火我真是對這種不負責任的回答嗤之以鼻,

有個貼吧的帖子說
彙編開發環境,個人建議,如果已經安裝了Visual Studio,推薦直接用vs作為開發除錯工具,原因很簡單,現在用的規則就是masm,微軟的規則,沒有人比微軟更瞭解微軟,而且可以很方便的為後續加入c/c++開發提供一站式的平臺,如果沒有安裝,可以考慮後者Radasm+ Masm32,

不要用什麼cmd,然後debug。。。愚蠢至極,除了裝逼浪費時間,還是裝逼浪費時間,並沒有半點實際價值。詳見http://tieba.baidu.com/p/4827889049

嗯,我很同意上面不是斜體的那段文字(尤其是win10後根本沒debug了,還得搞dosbox),所以我又來找vs執行彙編的方法了~

沒想到課本上那麼少的東西實際執行起來水那麼深,深的不是基本語法,而是各種庫什麼的照搬書上的程式碼都沒法執行,真是……大哭根本不像之前的c語言直接一個f5就完事那麼簡單。(ps:參考的那幾個帖子的程式碼有的能執行,有的)

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

~最簡單的(C中內嵌彙編程式碼):

在VS的C++檔案裡直接使用__asm{} 直接寫彙編程式碼.

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.建一個空專案,必須先建空專案,改現成的C++專案為assembler專案可能會造成編譯不過.



2.選中專案右鍵 “生成自定義”,選擇MASM生成規則.


二、新增及設定原始檔

3.選中原始檔右鍵-》新增-》新建項


此處字尾名是彙編的.asm

4.選中專案右鍵-》屬性-》連結器-》系統-》 子系統選 “控制檯(SUBSYSTEM:CONSOLE)”


5.選中專案右鍵-》屬性-》連結器-》高階-》 入口點 填 "main"


三、測試程式碼編譯執行:

(可以看到,如果安裝了高亮外掛,不僅註釋可以用了,程式碼也有高亮提示了

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


程式碼【這事兒可深了……】
先上那位大神可以過的程式碼

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/

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

VS2017寫彙編教程(親測可用,很順暢,做到了上文中“直接一個f5就完事”,沒有ml.exe的錯誤):

http://blog.csdn.net/maguanzhan7939/article/details/78608345

【這樣 就不用masm for windows那樣的收費ide了~還比那個逼格高】

——一些源網:

===========以下為廣告,想省事的可以來我這裡2C幣下載~===================


不想裝masm32(上圖那貨)只想要庫的可以下我放的連結(內含一套 高亮外掛+要用到的masm庫):

http://download.csdn.net/download/sinat_27382047/10248253

相關推薦

VS2015配置執行彙編vs2017連結最後

前言我是上學期學的彙編,因為有vs又不想用課上教的麻煩的dosbox以及masm32,但是一直沒找到高亮外掛和能除錯的(難在執行不了而找不到答案上,出現的錯誤在最後放出,還請先達們不吝指點)彙編程式碼所以放棄了。但是我又偶然想起來了,而且偶然找到了高亮外掛!(那時查了很多帖子

leetcode:Remove Duplicates from Sorted Array II 允許重複次,去掉陣列多餘數字面試演算法題

題目: Follow up for "Remove Duplicates": What if duplicates are allowed at most twice? For example, Given sorted array A = [1,1,1,2,2,3]

Spring Boot 框架學習 ()配置執行Spring Boot 框架

下載開發工具: 下載完成開啟以後,第一步檢查環境 檢視jdk是否配置: 接著一定要注意,maven通常情況下它是沒有給你配置的,要自行配置:  右鍵新建:   然後依賴選擇web、跟Mybatis就行了。 建立好專案後,會發現自帶了這個Applicatio

Sublime Text3配置Python執行環境實用

1.     Sublime安裝PackageControl Sublime安裝各種外掛都是通過Package Control工具,需要先安裝Package Control包,按下快捷鍵Ctrl+`調出命令列,輸入以下程式碼即可 importurllib.request,

Scala+Spark+Hadoop+IDEA實現WordCount單詞計數,上傳執行任務簡單例項-下

                 Scala+Spark+Hadoop+IDEA上傳並執行任務 本文接續上一篇文章,已經在IDEA中執行Spark任務執行完畢,測試成功。 一、打包 1.1  將setMaster註釋掉 package day05 import

騰訊雲 Centos7.0 配置JAVA執行環境 jdk8+tomcat7+mysql)

(一)配置JAVA環境 1.檢視是否聯網 2. 檢視yum庫中的Java安裝包 yum -y list java* 輸入之後回車,會看到各種不同版本的jdk包 3. 使用yum安

Linux(ubuntu)下Pycharm配置python執行環境編譯器中匯入虛擬環境

Pycharm配置python的執行環境(Linux(ubuntu)、Windows) 前言 前段時間跑python程式碼,一直在編輯器中寫,命令列中呼叫執行。如果寫一些小程式還可以,但如果要搭建神經網路,用到tensorflow或theano這些深度框

11.python發入門part3 多線程與互斥鎖

python 線程 lock 互斥鎖 一、鎖的概念。鎖,通常被用來實現共享數據的訪問,為每一個共享的數據,創建一個Lock對象(一把鎖),當需要訪問這個共享的資源時,可以調用acquire方法來獲取一個鎖的對象,當共享資源訪問結束後,在調用release方法去解鎖。二、python中的互斥鎖。

11.python發入門part4 死鎖與遞歸鎖

python lock 線程 互斥鎖 rlock 一、關於死鎖。死鎖,就是當多個進程或者線程在執行的過程中,因爭奪共享資源而造成的一種互相等待的現象,一旦產生了死鎖,不加人工處理,程序會一直等待下去,這也被稱為死鎖進程。下面是一個產生“死鎖”現象的例子:import threadingim

用curl訪問HTTPS站點登錄對HTTP返回的結果特別清楚

type .com nss int lai on() tftp cap 參數 開發網站,少不了測試。現在的網站為了加強安全性,都啟用了HTTPS協議。所謂HTTPS,也就是HTTP文本在SSL協議中傳輸。用curl命令行來測試HTTPS站點是個很有用的功能,寫點腳本,就可以

Python自動化開發未完待續

urn sts dha sel def open entos div 初始 1、創建項目    2、創建models from django.db import models # Create your models here. # 主機表 class Host(m

洛谷P3402 模板可持久化查集可持久化線段樹,線段樹

std 樹節點 https case 深度 build eof spa 復雜度 orz TPLY 巨佬,題解講的挺好的。 這裏重點梳理一下思路,做一個小小的補充吧。 寫可持久化線段樹,葉子節點維護每個位置的fa,利用每次只更新一個節點的特性,每次插入\(logN\)個節點,

docker常用腳本執行命令批量刪除所有鏡像容器,

docker shell批量刪除所有鏡像(none表示鏡像的關鍵字) docker rmi $(docker images | grep "none" | awk ‘{print $3}‘) docker 批量刪除所有容器 docker ps //查看所有正在運行容器 docker stop contai

分布式系統之緩存的微觀應用經驗談 基礎細節篇

聯網 需要 最新 響應時間 正文 劃分 發的 討論 server 分布式系統之緩存的微觀應用經驗談(一) 【基礎細節篇】 前言   近幾個月一直在忙些瑣事,幾乎年後都沒怎麽閑過。忙忙碌碌中就進入了2018年的秋天了,不得不感嘆時間總是如白駒過隙,也不知道收獲了什麽

交換機CPU負載高達90%以上新任幫主

交換機流量 很多 案例分享 自己 交換機 堆疊 技術分享 示意圖 mark 交換機CPU負載高達90%以上(一)一.前言自從工作以來 ,接觸了很多的項目,也遇到了無數多的問題,有些問題看似很奇葩,其實從理論上來解釋都是行的通的,當然我們排除是設備或是軟件自身的bug問題,因

python視覺化演算法執行進度含輸出格式控制函式format用法

使用PyPrind包實現演算法的進度條功能 在演算法執行過程中,使用PyPrind建立一個進度條物件,視覺化演算法的執行進度 官方地址:https://github.com/rasbt/pyprind 可以支援多種不同樣式的進度條顯示。 import pyprind import

[PYTHON]_ELVE_Python原始碼檔案編譯成可執行檔案支援macOS High Sierra和window 10

#0x01 背景 這兩天寫了一個抽獎的Python指令碼,要生成可執行檔案,總不能一直在sublime上執行吧,或者執行前先安裝Python,所以就查了一下怎麼生成可執行檔案,本篇包括mac下和win下,經本人測試,mac下生成.app(mac下的可執行檔案為.app字尾)較win下容易一些。 我用的Py

Python小白學習之路二十迭代器

迭代器 1.迭代器協議 物件必須提供一個 next 方法,執行該方法要麼返回迭代中的下一項,要麼就引起一個Stoplteration異常,以終止迭代(只能往後走不能往前退) 2.可迭代物件 實現了迭代器協議的物件(如何實現:物件內部定義一個_iter_()方法) 協議是一種約定,可迭代物件實現了

vs2013 打包呼叫dllopencv,多函式複雜情況下

首先,先推薦兩個具有高質量的部落格,先把這兩個案例做成功了,我這邊的案例也差不多了。 博主認為使用函式進行打包的方法更加簡單。為避免前兩個博主的文章消

spring cloud 入門Eureka註冊中心

spring cloud 提供了微服務的全家桶, 效能低於 dubbo 程式碼結構 ServerApplication  程式碼如下: package com.study.server; import org.springframework.boot.SpringAp