vs2017下汇编环境配置

Posted dreamyt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vs2017下汇编环境配置相关的知识,希望对你有一定的参考价值。

VS配置汇编语言开发环境

MASM简介

Microsoft Macro Assembler(MASA)宏汇编程序是一种x86汇编程序,它使用Intel的语法在MS-DOS和Microsoft Windows系统上运行。MASM由Microsoft维护,但是自从6.12版本之后,它就不再作为单独的产品出售了。相反,它与各种Microsoft sdk和C编译器一起被提供。MASM的最新版本包含在Microsoft Visual Studio中。

因此,我们可以轻松地在VS中进行配置开发环境。当然,是对已经下载了VS的同学来说,毕竟下载VS本就不轻松了??

第一步打开VS新建一个空项目

技术图片

第二步在源文件出添加一个新建项

依然选择C++文件,但在下方把文件后缀名改成.asm
技术图片)

第三步进行项目配置

在资源管理器中右键项目名,选择生成依赖项,点击生成自定义后选择第四个MASM。这一步相当于告诉IDE,我要开发的是汇编语言,而不是其他的。

技术图片
技术图片
接着点开我们创建的文件(不是项目)的属性页,在项类型中选择Microsoft Macro Assembler。
技术图片

第四步程序调试

接下来输入一段简单的汇编代码来测试下我们是否配置成功。

;assm.asm
ExitProcess PROTO
.code
main PROC
    mov rax,5
    add rcx,6
    mov rax,rcx

    mov rcx,0
    call ExitProcess
main endp   
END

[注意:上面的都是x64语法,上方的调试器也要对应使用x64的,用x86啥的会报错。毕竟不同的CPU寄存器名字都不一样]
然后运行,结果报错了。
技术图片
这是程序不知道程序入口在哪,与C语言不同。我们的C语言有main函数作为入口,编译器能很轻松地找到程序入口。


而在汇编程序中我们要自己设置入口标签。点开项目属性页(链接器->高级),在第一个入口点输入入口标签名,你想叫main想叫start都行,一个标签罢了。我们的代码中是main PROC,所以在入口点输入main,确定后退出再运行。由于只是测试代码,为了便捷,没有啥输出,比较朴素。


技术图片
当然入口点叫start也是运行成功的,无非是把之前代码里的main全换成start。技术图片

安装汇编语言语法高亮插件。

这一步不是必须的,但如果有语法高亮和提示的话,开发起来会很爽!
比如你输入个eax,它会自动提示你这是x86系列下的累加器。这种功能对新手可谓极其友好!技术图片

在菜单栏上选择工具->扩展和更新->联机,在右侧搜索栏中输入Asmdude,按照提示安装即可。
技术图片

错误记录

列表文件生成和编译的冲突

一开始为了生成列表文件,以便查看相关的程序信息
技术图片
于是在顶部菜单中依次选择"项目"->"属性",弹出项目属性窗口。

左侧展开"Microsoft Macro Assembler"项,在展开项中选择"Listing File"。

右侧"Generate Preprocessed Source Listing"项,选择"是(/EP)"。

"List All Availabel Information"项,选择"是(/Sa)"。。

"Assembled Code Listing File"项,输入"$(ProjectName).lst"。

点击"应用"按钮,再点击"确定"按钮,关闭窗口。

结果程序就运行不了了。

技术图片
便开始疯狂地查VS文档,搞了快一天。最后在StackOverflow上看到了答案。

Check also that you don't have this turned on: Configuration Properties -> C/C++ -> Preprocessor -> Preprocess to a File. Because for outputing preprocessed code and compiling, essentially it's a compiler option so it will do either but not both.

就是生成预处理头代码和编译,编译器只能择一进行,除非你设置了custom build config。我就猜也许是因为编译器先生成了列表文件,然后就歇菜了,没有去生成.obj目标文件。所以在链接运行时提示在对应目录下找不到.obj可执行文件。

于是把生成列表选项取消勾选再运行,果然运行成功了。看来下次只能手动切换了??

以上是关于vs2017下汇编环境配置的主要内容,如果未能解决你的问题,请参考以下文章

x64汇编第一讲,Vs系列配置x64环境与x86环境

汇编学习笔记-NASM环境搭建(nasm with vs2017)

2019-04-22Windows10下配置VS2017环境变量

Win7 VS2015 NASM汇编语言环境配置

环境配置 | win10下配置cgal+vs2017

VS2017编写汇编函数并调用