VS2022汇编环境搭建

news2024/11/27 16:35:49

VS2022汇编环境搭建

  • 使用VS2022搭建汇编语言运行环境
    • Step 1 安装VS2022
    • Step 2 创建项目

使用VS2022搭建汇编语言运行环境

使用Visual Studio 2022 搭建汇编语言项目,运行汇编语言代码。

Step 1 安装VS2022

自行到官网下载安装,选择C++编程环境。
在这里插入图片描述

Step 2 创建项目

  1. 点击初始框右下方的 Create a new project
    在这里插入图片描述
  2. 点击Empty Project 项目,设置项目名和项目位置
    在这里插入图片描述
  3. 右键 Source File ,点击 add ,再点击New Item,创建资源文件
    在这里插入图片描述
  4. 点击 C++ File(.cpp) 创建文件,这里将文件后缀名改成 asm,作为汇编语言源文件,汇编代码写在这里。
    在这里插入图片描述
  5. 右键左边项目名的小三角,点击 Build Dependencies,再点击 Build Customizations… ,设置依赖
    在这里插入图片描述
  6. 点击 masm 中的那一项,然后点击OK
    在这里插入图片描述
  7. 如图,点击 Local Windows Debugger 的小三角,再点击最后一项 XXX Debug Properties
    在这里插入图片描述
  8. 点击 linker 项,再找到 Advenced 项,设置 Entry Pointmain ,点击 确认
    在这里插入图片描述
  9. 在创建的.asm文件中输入以下代码:
EXTERN GetStdHandle : PROC
EXTERN WriteFile : PROC
EXTERN ExitProcess : PROC
 
.DATA?
hFile QWORD ?
BytesWritten DWORD ?
 
.DATA
hello BYTE 'Hello world!', 13, 10
 
.CODE
main PROC
; https://blogs.msdn.microsoft.com/oldnewthing/20160623-00/?p=93735
sub rsp, 40 ; Shadow space (4 * 8) & 1 parameter (8 bytes)
; https://docs.microsoft.com/en-us/cpp/build/stack-allocation
and spl, -16 ; Align to 16
 
; https://msdn.microsoft.com/library/windows/desktop/ms683231.aspx
mov ecx, -11 ; DWORD nStdHandle = STD_OUTPUT_HANDLE
call GetStdHandle ; Call WinApi
mov hFile, rax ; Save returned handle
 
; https://msdn.microsoft.com/library/windows/desktop/aa365747.aspx
mov rcx, hFile ; HANDLE hFile (here: Stdout)
lea rdx, hello ; LPCVOID lpBuffer
lea r9, BytesWritten ; LPDWORD lpNumberOfBytesWritten
mov r8d, LENGTHOF hello ; DWORD nNumberOfBytesToWrite
mov qword ptr [rsp+32], 0 ; LPOVERLAPPED lpOverlapped = NULL
call WriteFile ; Call WinAPI
 
exit:
; https://msdn.microsoft.com/library/windows/desktop/ms682658.aspx
xor ecx, ecx ; Set RCX to null for return value
call ExitProcess ; Call WinAPI to exit
main ENDP
 
END
  1. 点击 Local Windows Debugger,运行
    在这里插入图片描述
    接下来开始汇编之旅吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/471155.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【RabbitMQ】| Lion带你 (超详细) 从0到1使用SpringBoot操作RabbitMQ

目录 一. 🦁 前言二. 🦁 SpringBoot操作RabbitMQⅠ. 前期准备工作1. 创建项目(不细说)2. 添加依赖3. 编写配置文件 Ⅱ. 创建队列和交换机Ⅲ. 创建生产者Ⅳ. 创建消费者 三. 🦁 总结 一. 🦁 前言 Spring Bo…

Spring MVC开发及使用(8000字详解)

如何学习 Spring MVC? 学习 SPring MVC 只需要掌握以下三个功能: 连接的功能:将用户(浏览器)和 Java 程序连接起来,也就是访问一个地址能够调用到我们 Spring程序;获取参数的功能:用…

颜色空间转换RGB-YCbCr

颜色空间 RGB、YUV和YCbCr都是人为规定的彩色模型或颜色空间(有时也叫彩色系统或彩色空间)。它的用途是在某些标准下用通常可接受的方式对彩色加以说明。本质上,彩色模型是坐标系统和子空间的阐述。 YCbCr与RGB的相互转换 RGB->YCbCr Y …

2023五一杯数学建模竞赛ABC题思路解析+代码+论文

AB题见文末,下面是C C题:“双碳”目标下低碳建筑研究 “双碳”即碳达峰与碳中和的简称,我国力争2030年前实现碳达峰,2060年前实现碳中和。“双碳”战略倡导绿色、环保、低碳的生活方式。我国加快降低碳排放步伐,大力推…

金陵科技学院五年一贯制专转本电路分析考试大纲

金陵科技学院五年一贯制专转本电路分析考试大纲 专业名称:自动化 考试科目:专业基础课 一、考试要求 掌握电路分析的基本概念、基本原理和基本方法,提高分析电路的思维能力与计算能力,以便为学习后继课程奠定必要的基础。 二…

R 安装函数包及绘制图形

R语言绘制简单条形图 一、载入数据1.安装函数包2.导入文件3.读取数据(.csv文件) 二、绘制图形绘制简单条形图 一、载入数据 1.安装函数包 在控制台console输入命令: install.packages("bruceR")查看是否安装成功 library(bruce…

【二】MATLAB矩阵处理

【二】MATLAB矩阵处理 1 常用的特殊矩阵函数 zeros函数: zeros(m):产生mm零矩阵 zeros(m,n):产生mn零矩阵 zeros(size(A)):产生与矩阵A相同大小的零矩阵 ones函数: 产生4阶全1矩阵 ones(4) eye函数: 产生对角线为1的矩阵&#xff0c…

分享随机数和唯一ID的工具类

随机数一般也是会被常使用到的,比如在造一些模拟测试数据的场景,或者说是非高端应用的场景会被使用。而全局唯一ID的使用则相反,应用场景更广,更专业,更科学,比如在批量保存数据时,需要提前生成…

CVE漏洞复现-CVE-2016-10033-远程命令执行

CVE-2016-10033-远程命令执行 PHPMailer是一个基于PHP语言的邮件发送组件,被广泛运用于诸如WordPress、Drupal、1CRM、SugarCRM、Yii、Joomla等用户量巨大的应用与框架中。 CVE-2016-10033是PHPMailer中存在的高危漏洞,这个高危漏洞是由 class.phpmail…

Java 17 新特性尝鲜

JDK 17更新了包括14个特性,具体如下表所示: Restore Always-StrictFloating-Point Semantics 恢复始终严格模式(Always-Strict)的浮点语义EnhancedPseudo-Random Number Generators 增强型伪随机数生成器New macOS RenderingPipe…

Spring boot结合SkyWalking-Trace工具类实现日志打印请求链路traceid

背景: 随着业务的复杂化、解耦化,运维人员和开发人员需要对请求链路跟踪来快速发现和定位问题,基于应用已经集成了SkyWalking的前提下,如何通过获取SkyWalking生成的统一traceId并加入打印日志中,方便开发人员能够根据…

露营好物推荐:极米轻薄投影仪Z6X Pro

温度回升,春意萌动,很多人开始计划春游、露营,打算和家人、朋友一起享受大自然的春日场景。漫天星光下,吃着美食、喝着小酒,再加上一场露天电影,逃离了城市的喧嚣,在大自然中尽情撒野,又有谁会不喜欢呢?如今众多露营爱…

matlab 实现常用的混沌映射(Tent, Sine, Sinusoidal, Piecewise, Logistic, Cubic, Chebyshev)

大部分混沌映射的系数是有限制的, 针对每个模型最优的混沌系数是不一样的, 因此混沌系数要根据自己的模型来定. 下面的系数都是根据我自己的模型而设定的. 混沌映射 1 Tent 映射2 Sine 映射3 Sinusoidal 映射4 Piecewise 映射5 Logistic 映射6 Cubic 映射7 Chebyshev 映射 1 Te…

松下机器人进行数据备份与恢复的具体方法

松下机器人进行数据备份与恢复的具体方法 数据备份 如下图所示,找到备份选项,按确认, 如下图所示,选择保存,按确认键, 如下图所示,选择USB存储设备,选择存储路径,按确认键, 选择需要备份的数据,如下图所示,默认情况下是勾选“全部数据”, 如下图所示,显…

马云的创业故事及他人生中的摆渡人-卖掉中国黄页去北漂(五)

马云北上是在外经贸部一位名叫王建国的朋友牵线之下,受邀担任外经贸部下属的中国国际电子商务中心(下面简称EDI)总经理,负责搭建外经贸部官网和网上中国商品交易市场。 马云团队在潘家园租了房子,白天上班&#xff0c…

C++ + QT (不使用QT插件模式)的heic图片显示。

1.首先确定的是,要想C读取或者显示heic图片。光用ffmpeg没有heic的解码器。所以此时就要用上libheif了。通过查资料发现,一个比较常见的 C 解析解码 heic 格式图片的开源库是 libheif,而这个库对 h265 的解码过程又依赖于另一个开源 C 库 lib…

木牛科技发布高性价比的5R方案 助力智能驾驶的科技平权

从3月开始升温的车市价格战,蔓延到了4月上海车展,多款新车再次刷新了价格“下限”。随着价格战的白热化,车企们也开始反思,需要给消费者输出稳定的价值,价格需要回归到价值本身,而市场真正应该打响的是倡导…

【超全】在OAK深度AI相机上部署用户神经网络模型的三种方法

编辑:OAK中国 首发:oakchina.cn 喜欢的话,请多多👍⭐️✍ 内容可能会不定期更新,官网内容都是最新的,请查看首发地址链接。 ▌前言 Hello,大家好,这里是OAK中国,我是助手…

CDH Hive Metastore canary

现象:CDH平台突然报错,报错信息为:The Hive Metastore canary failed to create a database 排查一下两点都未发现问题: 检查hiveServer2日志(hadoop-cmf-hive-HIVEMETASTORE.log.out)无异常检查元数据依赖的数据库(我安装是mysql),无异常发现 于是在网上搜索,发现很有可能是…

【CMake】2. 使用CMake添加一个库

2. 使用CMake添加一个库 1. 什么是 library(库)? 库 函数库,所谓库,就是将函数封装成库来供我们使用,包含静态库和动态库。 对于代码到可执行程序的过程,这里简单复习一下: 源文…