VS搭建32位和64位汇编开发环境

VS搭建32位和64位汇编开发环境

  • 1 VS2017软件安装
  • 2 创建汇编工程
  • 3 配置X86汇编环境(32位)
  • 4 配置X64汇编环境(64位)
  • 5 调试技巧

本文属于《 X86架构指令基础系列教程》之一,欢迎查看其它文章。

1 VS2017软件安装

安装过程,请参考《Visual Studio Community 2017安装步骤(只装C++)》。

2 创建汇编工程

点击“文件”->“新建”->“项目”,弹出如下图:
VS搭建32位和64位汇编开发环境_第1张图片
选择“Visual C++”->“空项目”,输入项目名称和路径,确定,项目就建立好了。
然后选中项目,右键->“生成依赖项”->“生成自定义”,如下图所示:
VS搭建32位和64位汇编开发环境_第2张图片
弹出如下图所示:
VS搭建32位和64位汇编开发环境_第3张图片
勾选“masm”,确定。然后,在项目的“源文件”文件夹下,右键->“添加”->“新建项”,如下图所示:
VS搭建32位和64位汇编开发环境_第4张图片
弹出的“添加新项”窗口中,选择“C++文件”,然后修改文件后缀名为“.asm”,最后点击“添加”。
VS搭建32位和64位汇编开发环境_第5张图片
到此,我们建立了工程,并在工程中添加了一个汇编文件。
无论是编写32位还是64位汇编,以上的步骤都是一样的。

3 配置X86汇编环境(32位)

创建工程后,“解决方案平台”默认选项为“x86”,如果不是,需要手动修改。
我们在test.asm中,输入两数求和的汇编例子,代码如下:

.486							;CPU 型号
.MODEL FLAT, STDCALL
ExitProcess PROTO,dwExitCode:DWORD

.DATA
	SUM DB ?				
	.CODE

	MAIN PROC					;开辟主线程
		MOV AL, 11H				;立即数 11H 放入寄存器 AL			
		ADD AL, 22H				;立即数 11H 与寄存器 AL 内的数据相加,在 AL 中寄存						
		MOV SUM, AL				;把 AL 寄存器中的数据 给 SUM
		INVOKE ExitProcess,0	;返回DOC
	MAIN ENDP

END MAIN

MOV AL, 11H位置,按F9,打下断点,然后F5启动调试,如下所示:
VS搭建32位和64位汇编开发环境_第6张图片
表明32位程序已经运行成功。

4 配置X64汇编环境(64位)

将“解决方案平台”默认选项为“x64”,此时如果我们直接运行上述的汇编例子,编译会报错,可能是X86和X64汇编语法支持上有区别,因此我们换个例子。
在test.asm中,输入代码如下:

;64位汇编程序模板 (Template)
;声明一个ExitProcess函数
ExitProcess PROTO

.data
	;在这里声明变量

.code 
main PROC
	;这里写自己的代码
	
	mov rcx,0
	call ExitProcess
main ENDP
END

选中项目,右键->“属性”,弹出如下所示:
VS搭建32位和64位汇编开发环境_第7张图片
依次选择“配置属性”->“链接器”->“高级”->“入口点”,修改为自己代码中的main过程,最后“应用”->“确定”。
如果不修改入口点,编译时会报错“无法解析的外部符号 mainCRTStartup”。

mov rcx,0位置,按F9,打下断点,然后F5启动调试,如下所示:
VS搭建32位和64位汇编开发环境_第8张图片
表明64位程序已经运行成功。

5 调试技巧

VS搭建32位和64位汇编开发环境_第9张图片
在菜单中,“调试”->“窗口”->“内存”/“反汇编”/“寄存器”菜单项,可以在调试时,打开对应的窗口。
VS搭建32位和64位汇编开发环境_第10张图片

你可能感兴趣的:(X86指令集,汇编,开发语言,CPU指令集)