VS2015配置並執行彙編(一步一步照圖做)【vs2017的連結在最後】
前言
我是上學期學的彙編,因為有vs又不想用課上教的麻煩的dosbox以及masm32,但是一直沒找到高亮外掛和能除錯的(難在執行不了而找不到答案上,出現的錯誤在最後放出,還請先達們不吝指點)彙編程式碼所以放棄了。
但是我又偶然想起來了,而且偶然找到了高亮外掛!
(那時查了很多帖子,甚至有人說在某度知道里說vs不能寫彙編,我真是對這種不負責任的回答嗤之以鼻,
有個貼吧的帖子說
彙編開發環境,個人建議,如果已經安裝了Visual Studio,推薦直接用vs作為開發除錯工具,原因很簡單,現在用的規則就是masm,微軟的規則,沒有人比微軟更瞭解微軟,而且可以很方便的為後續加入c/c++開發提供一站式的平臺,如果沒有安裝,可以考慮後者Radasm+ Masm32,
嗯,我很同意上面不是斜體的那段文字(尤其是win10後根本沒debug了,還得搞dosbox),所以我又來找vs執行彙編的方法了~
)
沒想到課本上那麼少的東西實際執行起來水那麼深,深的不是基本語法,而是各種庫什麼的照搬書上的程式碼都沒法執行,真是……根本不像之前的c語言直接一個f5就完事那麼簡單。(ps:參考的那幾個帖子的程式碼有的能執行,有的)
==============分割線============
~最簡單的(C中內嵌彙編程式碼):
~偷個懶寫彙編作業(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
==============分割線============
正片兒:
外掛
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 打包並呼叫dll(opencv,多函式複雜情況下)
首先,先推薦兩個具有高質量的部落格,先把這兩個案例做成功了,我這邊的案例也差不多了。 博主認為使用函式進行打包的方法更加簡單。為避免前兩個博主的文章消
spring cloud 入門(一)【Eureka註冊中心】
spring cloud 提供了微服務的全家桶, 效能低於 dubbo 程式碼結構 ServerApplication 程式碼如下: package com.study.server; import org.springframework.boot.SpringAp