VS搭建32位和64位汇编开发环境
终极管理员 知识笔记 47阅读
VS搭建32位和64位汇编开发环境 1 VS2017软件安装2 创建汇编工程3 配置X86汇编环境32位4 配置X64汇编环境64位5 调试技巧
本文属于《 X86架构指令基础系列教程》之一欢迎查看其它文章。
1 VS2017软件安装

安装过程请参考《Visual Studio Community 2017安装步骤只装C》。
2 创建汇编工程点击“文件”->“新建”->“项目”弹出如下图
选择“Visual C”->“空项目”输入项目名称和路径确定项目就建立好了。
然后选中项目右键->“生成依赖项”->“生成自定义”如下图所示
弹出如下图所示
勾选“masm”确定。然后在项目的“源文件”文件夹下右键->“添加”->“新建项”如下图所示
弹出的“添加新项”窗口中选择“C文件”然后修改文件后缀名为“.asm”最后点击“添加”。
到此我们建立了工程并在工程中添加了一个汇编文件。
无论是编写32位还是64位汇编以上的步骤都是一样的。

创建工程后“解决方案平台”默认选项为“x86”如果不是需要手动修改。
我们在test.asm中输入两数求和的汇编例子代码如下
.486;CPU 型号.MODEL FLAT, STDCALLExitProcess PROTO,dwExitCode:DWORD.DATASUM DB ?.CODEMAIN PROC;开辟主线程MOV AL, 11H;立即数 11H 放入寄存器 ALADD AL, 22H;立即数 11H 与寄存器 AL 内的数据相加在 AL 中寄存MOV SUM, AL;把 AL 寄存器中的数据 给 SUMINVOKE ExitProcess,0;返回DOCMAIN ENDPEND MAIN
在MOV AL, 11H
位置按F9打下断点然后F5启动调试如下所示
表明32位程序已经运行成功。
将“解决方案平台”默认选项为“x64”此时如果我们直接运行上述的汇编例子编译会报错可能是X86和X64汇编语法支持上有区别因此我们换个例子。
在test.asm中输入代码如下
;64位汇编程序模板 (Template);声明一个ExitProcess函数ExitProcess PROTO.data;在这里声明变量.code main PROC;这里写自己的代码mov rcx,0call ExitProcessmain ENDPEND
选中项目右键->“属性”弹出如下所示
依次选择“配置属性”->“链接器”->“高级”->“入口点”修改为自己代码中的main过程最后“应用”->“确定”。
如果不修改入口点编译时会报错“无法解析的外部符号 mainCRTStartup”。
在mov rcx,0
位置按F9打下断点然后F5启动调试如下所示
表明64位程序已经运行成功。
在菜单中“调试”->“窗口”->“内存”/“反汇编”/“寄存器”菜单项可以在调试时打开对应的窗口。