为什么80%的码农都做不了架构师?>>>   

x64:

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,rspsub rsp,30h;mov rdx, offset szText;mov [rbp-8],rdx;mov r8, offset szCaption;mov [rbp-16],r8mov rcx, 0mov rdx, offset szText;[rbp-8]mov r8, offset szCaption;[rbp-16]mov r9, 0call 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 structa dword ?st123 endsNEW_WNDCLASS     structDwOption         dword     ?
OldWndClass      st123 <>NEW_WNDCLASS     ends

前言

我是上学期学的汇编,因为有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一步步看了吧~)

代码【这事儿可深了……】
先上那位大神可以过的代码

 
  1. TITLE Add and Subtract (AddSub.asm)

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

  3. ; Last update: 2/1/02

  4. INCLUDELIB kernel32.lib

  5. .MODEL flat,stdcall

  6. ;.code

  7. ExitProcess PROTO, ; exit program

  8. dwExitCode:DWORD ; return code

  9. .data

  10. .code

  11. main PROC

  12. mov eax,10000h ; EAX = 10000h

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

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

  15. push 0h

  16. call ExitProcess

  17. main ENDP

  18. 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

转载于:https://my.oschina.net/u/1777508/blog/1834624

VS2015配置并运行汇编(一步一步照图做)【vs2017的链接在最后】相关推荐

  1. 在VS2015中编写x86汇编

     参考教程: 作者:上下求索 VS2015,C嵌套汇编 & C,汇编相互调用 http://ylqhust.github.io/blog/2016/04/17/vs-clanguage-asm ...

  2. windows下VS2015配置caffe

    Windows下VS2015配置caffe,是一件其实挺简单但是坑特别多的事情,稍有不慎就爬不出来,写博客来记录最后在老师帮助下才配置成功的经验(严格按照老师的教程一步也不能错才行),当然我写得也详细 ...

  3. win7 vs2015配置qt5.11

    1.下载vs,和qt. qt百度网盘下载链接:https://pan.baidu.com/s/12bUt31_mXGvgc3tdJRkkkw 提取码:2swk 下载完成之后,直接进行安装,下一步. 安 ...

  4. 一步一步手绘Spring IOC运行时序图三(基于Annotation的IOC容器初始化)

    相关内容: 架构师系列内容:架构师学习笔记(持续更新) 一步一步手绘Spring IOC运行时序图一(Spring 核心容器 IOC初始化过程) 一步一步手绘Spring IOC运行时序图二(基于XM ...

  5. VS2015 配置 Qt 开发编译环境

    1.操作环境 1.1电脑环境:win7 X64 1.2 需要准备的工具 vs2015编译软件:cn_visual_studio_community_2015_with_update_3_x86_x64 ...

  6. Sublime Text3配置Lua运行环境

    Sublime Text3配置Lua运行环境 前言 要问现在哪个编译器最能扛得住潮流,要数Sublime Text3了,由于它的轻量,插件丰富,美观,造就了一大批粉丝(本菜鸡也是哦) 在以前的工作中使 ...

  7. mac上php环境_在Mac系统下配置PHP运行环境

    PHP.png 概述 Mac系统对于PHP运行非常友好,我们只需要进行简单的配置便可以开始进行使用,本篇文章将一步一步地介绍Apache.PHP和MySQL的安装与配置,为开始进行开发铺好路 Apac ...

  8. SpringBoot 配置Tomcat运行

    SpringBoot 本身支持有两类的 WEB 容器:默认的 Tomcat.Jetty,那么现在如果从实际的角度来看, 在 SpringBoot 运行的时候 即使没有 WEB 容器,那么也可以采用自定 ...

  9. 教你使用 IDEA 配置和运行vue项目

    点击关注公众号,实用技术文章及时了解 来源:cnblogs.com/ya-qiang/p/9639187.html 刚来公司实习发现公司的前端使用的是vue,之前根本就没有听说过.然后一上来就需要看代 ...

最新文章

  1. C++Builder Berlin 编译
  2. linux lddbus设备,Linux那些事儿之我是Sysfs(4)举例一lddbus | 技术部落
  3. linux shell的输出效果修改方法(界面颜色)
  4. 随机JCache内容:多个提供程序和JMX Bean
  5. linux下成功安装ffmpeg( 亲测有效 )
  6. 第五届大数据科学与工程国际会议(BDSE2021)如约而至!大咖云集,欢迎参加~
  7. 视频编解码器,bbv 缓冲区溢出和下溢
  8. 【POJ2259】Team Queue(队列,模拟)
  9. 卧槽!真可恶,竟然有人贩卖儿童软色情表情包,网友:...
  10. 再学点分治——动态点分治
  11. 20191119每日一句
  12. 八皇后问题遗传算法c语言,用 遗传算法 解决八皇后问题
  13. 实现 8086 汇编编译器(一)——基本框架
  14. 2013年2月 VB100 测试成绩公布
  15. 如何运用js制作简单的登录界面(html)
  16. 【渝粤题库】陕西师范大学202013 民法专论 作业
  17. linux内核态访问串口,linux内核中串口驱动注册过程(tty驱动)[转]
  18. 公司法定代表人通常由谁担任?
  19. 浏览器主页被hao123等篡改解决方法
  20. POI-获取Excel中合并单元格问题

热门文章

  1. 文化部随机抽查50家网络表演平台 看看有没有那种内容
  2. 【微信公众号开发】获取并保存access_token、jsapi_ticket票据(可用于微信分享、语音识别等等)...
  3. 常见apk安装失败的错误及原因
  4. Android Cordova 对于软键盘弹出后覆盖输入域的解决
  5. python解压zip文件_Python中最快解压zip文件的方法
  6. oracle00214,oracle添加控制文件,ORA-00214: 错误
  7. 一些重要的 XML DOM 方法概述
  8. mysql链事务_MYSQL 之事务篇
  9. poj3352(强连通分量)
  10. 关于学习Python的一点学习总结(52->模块就是程序)