当前位置: 首页 > news >正文

《汇编语言 基于x86处理器》- 读书笔记 - Visual Studio 2019 配置 MASM环境

安装 Visual Studio 2019 配置 MASM环境

  • 下载 Visual Studio Installer
  • 安装 Visual Studio 2019
    • 1. 双击运行
    • 2. 自定义安装内容
    • 3. 修改 MSVC 工具集版本
    • 4. 设置主题(可选)
  • MASM32
    • 安装 masm32
  • 创建项目
    • 从启动窗口创建项目
    • 从主菜单创建
  • 配置项目
    • 1. 项目设置:生成依赖项
    • 2. 创建 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. 设置主题(可选)

在这里插入图片描述
在这里插入图片描述

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,表示这是一个只包含确定按钮的消息框

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
Getting Started with MASM and Visual Studio 2019

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 产品经理-一份标准需求文档的8个模块(14)
  • 亚信安全发布2024年第24期《勒索家族和勒索事件监控报告》
  • LabVIEW比例压力控制阀自动测试系统
  • 前端学习常用技术栈
  • 物流EDI:马士基IFTMBF 订舱请求
  • js实现一键任意html元素生成截图功能
  • 洛阳建筑设计资质市场未来趋势
  • Web 中POST为什么会发送两次请求
  • Java反射和动态代理用法(附10道练习题)
  • C++ 入门基础:开启编程之旅
  • C语言------指针讲解(2)
  • Facebook未来展望:数字社交平台的进化之路
  • 类与对象-继承-继承语法
  • idea中使用maven
  • react基础样式控制
  • php的引用
  • css系列之关于字体的事
  • JAVA SE 6 GC调优笔记
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • JAVA之继承和多态
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • Python_OOP
  • Python打包系统简单入门
  • React组件设计模式(一)
  • select2 取值 遍历 设置默认值
  • Spring-boot 启动时碰到的错误
  • Spring框架之我见(三)——IOC、AOP
  • vue总结
  • XForms - 更强大的Form
  • 从tcpdump抓包看TCP/IP协议
  • 读懂package.json -- 依赖管理
  • 对超线程几个不同角度的解释
  • 今年的LC3大会没了?
  • 近期前端发展计划
  • 力扣(LeetCode)21
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 网页视频流m3u8/ts视频下载
  • 一个项目push到多个远程Git仓库
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • elasticsearch-head插件安装
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • #pragma once与条件编译
  • #传输# #传输数据判断#
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (2)STL算法之元素计数
  • (JS基础)String 类型
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (南京观海微电子)——I3C协议介绍
  • (七)glDrawArry绘制