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,我要开发的是汇编语言,而不是其他的。


接着点开我们创建的文件(不是项目)的属性页,在项类型中选择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上看到了答案。

就是生成预处理头代码和编译,编译器只能择一进行,除非你设置了custom build config。我就猜也许是因为编译器先生成了列表文件,然后就歇菜了,没有去生成.obj目标文件。所以在链接运行时提示在对应目录下找不到.obj可执行文件。
于是把生成列表选项取消勾选再运行,果然运行成功了。看来下次只能手动切换了😭

03-05 20:20