安装过程,请参考《Visual Studio Community 2017安装步骤(只装C++)》。
点击“文件”->“新建”->“项目”,弹出如下图:
选择“Visual C++”->“空项目”,输入项目名称和路径,确定,项目就建立好了。
然后选中项目,右键->“生成依赖项”->“生成自定义”,如下图所示:
弹出如下图所示:
勾选“masm”,确定。然后,在项目的“源文件”文件夹下,右键->“添加”->“新建项”,如下图所示:
弹出的“添加新项”窗口中,选择“C++文件”,然后修改文件后缀名为“.asm”,最后点击“添加”。
到此,我们建立了工程,并在工程中添加了一个汇编文件。
无论是编写32位还是64位汇编,以上的步骤都是一样的。
创建工程后,“解决方案平台”默认选项为“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启动调试,如下所示:
表明32位程序已经运行成功。
将“解决方案平台”默认选项为“x64”,此时如果我们直接运行上述的汇编例子,编译会报错,可能是X86和X64汇编语法支持上有区别,因此我们换个例子。
在test.asm中,输入代码如下:
;64位汇编程序模板 (Template)
;声明一个ExitProcess函数
ExitProcess PROTO
.data
;在这里声明变量
.code
main PROC
;这里写自己的代码
mov rcx,0
call ExitProcess
main ENDP
END
选中项目,右键->“属性”,弹出如下所示:
依次选择“配置属性”->“链接器”->“高级”->“入口点”,修改为自己代码中的main过程,最后“应用”->“确定”。
如果不修改入口点,编译时会报错“无法解析的外部符号 mainCRTStartup”。
在mov rcx,0
位置,按F9,打下断点,然后F5启动调试,如下所示:
表明64位程序已经运行成功。
在菜单中,“调试”->“窗口”->“内存”/“反汇编”/“寄存器”菜单项,可以在调试时,打开对应的窗口。