安装 Visual Studio 2019 配置 MASM环境
- 下载 Visual Studio Installer
- 安装 Visual Studio 2019
- 1. 双击运行
- 2. 自定义安装内容
- 3. 修改 MSVC 工具集版本
- 4. 设置主题(可选)
- 5. 安装代码高亮插件 AsmDude(可选)
- 6. 通义灵码(可选)
- MASM32
- 安装 masm32
- 创建项目
- 从启动窗口创建项目
- 从主菜单创建
- 配置项目
- 1. 项目设置:生成依赖项
- 2. 创建 HelloWorld.asm
- 弹窗 **HelloWorld.asm**
- 命令行 **HelloWorld.asm**
- 3. 项目设置:链接器 > 附加库目录
- 4. 项目设置:MS宏汇编 > 包含路径
- 4.1 项目设置:MS宏汇编 > 列表文件(可选)
- 5. 项目设置:MSVC 工具集版本
- 运行
- 设置启动项目
- 参考资料
下载 Visual Studio Installer
链接见本文底部
安装 Visual Studio 2019
1. 双击运行
2. 自定义安装内容
看的懂就按需设置,看不懂的不动就行了。一路确认下去。
注意:可根据自己需要,调整 安装位置
3. 修改 MSVC 工具集版本
我这里走了弯路。一开始默认装了最新版,编译时报错。
网上查了是版本不匹配造成的:MASM32 SDK Version 11
需要 MSVC v14.26.x
然后再次运行 Visual Studio Installer
修改:
如果想省空间,可以去掉其它版本的生成工具,只保留我们要的这个就行了。
4. 设置主题(可选)
- 首次启动可以选择
- 后续修改
5. 安装代码高亮插件 AsmDude(可选)
主菜单
> 扩展
> 管理扩展
下载完成后关闭 VS
才会开始安装插件。一路确认点下去即可。
完成后再次打开VS继续后续工作。
主菜单
> 工具
> 选项
(可根据需要自定义)
6. 通义灵码(可选)
搜 TONGYI Lingma
打开智能问答
我喜欢扡到右边。
MASM32
在创建和配置项目前,我们先安装 MASM32 SDK
安装 masm32
到这里下载安装即可 http://www.masm32.com/download.htm
也可以见本文底部
我安装在了 C:\masm32
创建项目
从启动窗口创建项目
从主菜单创建
也可以直接热键 Ctrl + Shift + N
- 解决方案、项目目录:
配置项目
1. 项目设置:生成依赖项
2. 创建 HelloWorld.asm
热键:Ctrl + Shift + A
注意:要创建 asm
文件后,项目配置中才会显示Microsoft Macro Assembler
弹窗 HelloWorld.asm
.386 ; 指定目标架构为 x86
.model flat, stdcall ; 使用平坦内存模型和平坦调用约定 (stdcall)option casemap: none ; 开启大小写敏感模式,标识符将区分大小写include windows.inc ; 包含 Windows API 头文件,定义了 API 函数原型和常量
include kernel32.inc ; 包含 Kernel32 API 的头文件
include user32.inc ; 包含 User32 API 的头文件includelib kernel32.lib ; 链接 Kernel32 库,提供 Kernel32 API 函数的实际代码
includelib user32.lib ; 链接 User32 库,提供 User32 API 函数的实际代码.data ; 数据段开始
szCaption db "Hello World", 0 ; 弹窗标题
szText db "大家好,我是笨笨,笨笨的笨,笨笨的笨,谢谢!", 0 ; 弹窗内容.code ; 代码段开始
main PROC ; 定义一个过程,名为 mainINVOKE MessageBox, NULL, addr szText, addr szCaption, MB_OK ; 调用 MessageBox 函数INVOKE ExitProcess, 0 ; 调用 ExitProcess 函数,结束进程,参数为进程的退出码,这里是0
main ENDP ; main 过程结束
END main ; 指定 main 为程序的入口点
MessageBox 函数
参数一:NULL,表示没有父窗口句柄
参数二:szText,指向显示文本的地址
参数三:szCaption,指向窗口标题的地址
参数四:MB_OK,表示这是一个只包含确定按钮的消息框
- 可直接用命令生成并运行
@echo off
set "MASM32_PATH=C:\masm32"
set "PATH=%MASM32_PATH%\bin;%PATH%"
set "LIB=%MASM32_PATH%\lib;%LIB%"
set "INCLUDE=%MASM32_PATH%\include"ml.exe /c /coff /I "%INCLUDE%" /Fo"HelloWorld.obj" /Fl"HelloWorld.lst" HelloWorld.asm
link.exe /SUBSYSTEM:WINDOWS /ENTRY:main HelloWorld.obj /OUT:"HelloWorld.exe" kernel32.lib user32.libHelloWorld.exe
命令行 HelloWorld.asm
.386 ; 指定目标架构为 x86
.model flat, stdcall ; 使用平坦内存模型和平坦调用约定 (stdcall)
option casemap: none ; 开启大小写敏感模式,标识符将区分大小写include kernel32.inc ; 包含 Windows API 头文件
includelib kernel32.lib ; 链接 Kernel32 库include masm32.inc ; 包含 MASM32 头文件,提供了 StdOut 和 ReadKey 宏
includelib masm32.lib ; 链接 MASM32 库,提供 StdOut 和 ReadKey 宏的实现.data
msg db "大家好,我是笨笨,笨笨的笨,笨笨的笨,谢谢!", 0 ; 终止符 '\0' 对字符串很重要.code
start:; 调用 StdOut 宏输出 msgpush offset msg ; 将 msg 压栈传参,StdOut 宏需要一个字符串指针call StdOut ; 调用 StdOut 宏输出字符串; 结束程序push 0 ; 将退出代码 0 压入栈call ExitProcess ; 调用 ExitProcess 函数结束进程
end start ; 结束程序入口点
- 用命令生成并运行
@echo off
set "MASM32_PATH=C:\masm32"
set "PATH=%MASM32_PATH%\bin;%PATH%"
set "LIB=%MASM32_PATH%\lib;%LIB%"
set "INCLUDE=%MASM32_PATH%\include"ml.exe /c /coff /I "%INCLUDE%" HelloWorld.asm
link.exe /SUBSYSTEM:CONSOLE HelloWorld.objHelloWorld.exe
pause
接下来配置IDE环境:
3. 项目设置:链接器 > 附加库目录
项目右键
> 属性 (Alt + F7)
> 链接器
> 常规
> 附加库目录
= C:\masm32\lib;%(AdditionalLibraryDirectories)
4. 项目设置:MS宏汇编 > 包含路径
项目属性 (Alt + F7)
> Microsoft Macro Assembler
> General
> Include Paths
= C:\masm32\include;%(IncludePaths)
注意:要创建了 HelloWorld.asm
后,项目属性中才会出现 Microsoft Macro Assembler
如果没显示Microsoft Macro Assembly
可以先移除
我们创建的 asm
文件,再重新添加
试试。
4.1 项目设置:MS宏汇编 > 列表文件(可选)
$(ProjectName).lst
输出了列表文件,调试分析时有用
5. 项目设置:MSVC 工具集版本
项目右键
> 属性
> 属性配置
> 高级
> MSVC 工具集版本
运行
主菜单
> 调试
>开始执行(不调试)(H)
热键:Ctrl+F5
设置启动项目
当创建多个项目时,每个都要进行上面的项目设置。
运行前,需要设置其中一个为启动项目
- 方式一(选哪个,启动哪个)
- 方式二(指定好一个启动项)
快速切换:
参考资料
笑虾:下载 Visual Studio 2019 Installer + MSAM32v11r
MS:下载 Visual Studio 2019
MS:安装 Visual Studio
MS:创建 Visual Studio 的脱机安装包以进行本地安装
MS:Visual Studio Professional 组件目录 用于查组件ID
MS:Windows C++ 项目属性页参考
Getting Started with MASM and Visual Studio 2019