VS2017配置汇编语言开发环境

VS2017配置汇编语言开发环境

MASA简介

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,我要开发的是汇编语言,而不是其他的。
configuration
masm
接着点开我们创建的文件(不是项目)的属性页,在项类型中选择Microsoft Macro Assembler。
masm

第四步程序调试

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

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

	mov rcx,0
	call ExitProcess
main endp	
END

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


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



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

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

这一步不是必须的,但如果有语法高亮和提示的话,开发起来会很爽!
比如你输入个eax,它会自动提示你这是x86系列下的累加器。这种功能对新手可谓极其友好!eax
在菜单栏上选择工具->扩展和更新->联机,在右侧搜索栏中输入Asmdude,按照提示安装即可。
download

错误记录

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

一开始为了生成列表文件,以便查看相关的程序信息
lst
于是在顶部菜单中依次选择"项目"->“属性”,弹出项目属性窗口。
左侧展开"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可执行文件。
于是把生成列表选项取消勾选再运行,果然运行成功了。看来下次只能手动切换了😭

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值