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

【汇编】_Visual Studio2019写32位汇编

目录

第一步:创建新项目

1. 空项目—下一步

2. 选择位置—填写项目名—创建

第二步:项目生成依赖项

1. 右击项目名—生成依赖项—生成自定义

2. 选中masm—确定

第三步:创建源文件

1. 源文件—添加—新建项

2. 选择C++文件—创建新文件令其后缀为.asm

第四步:编写源文件

第五步:配置解决方案平台

1. 右击解决方案—属性

2. 配置属性—属性

第六步:查看.asm文件属性

1. 右击.asm文件—属性

2. Command Line—检验是否为ml.exe

第七步:断点调试查看内存与寄存器

1. 打断点—调试—开始调试

2. 调试—窗口—内存(寄存器)

3. 手动增加待查看寄存器

4. 查看程序中变量的地址


第一步:创建新项目

1. 空项目—下一步

选择创建空项目,选择完毕后点击下一步:

2. 选择位置—填写项目名—创建

第二步:项目生成依赖项

1. 右击项目名—生成依赖项—生成自定义

2. 选中masm—确定

第三步:创建源文件

1. 源文件—添加—新建项

2. 选择C++文件—创建新文件令其后缀为.asm

第四步:编写源文件

此处以hello world 程序为例:

源码如下:

.586
.MODEL flat,stdcallincludelib	msvcrt.libINCLUDELIB kernel32.lib
INCLUDELIB ucrt.lib
INCLUDELIB legacy_stdio_definitions.libExitProcess PROTO, dwExitCode:DWORD		; return code
printf proto C: vararg.datamsg db 'Hello World!',13,10,0
.code
main PROC
;main:mov eax,10000h		; EAX = 10000hadd eax,40000h		; EAX = 50000hsub eax,20000h		; EAX = 30000hinvoke printf, offset msgpushadpush offset msgcall printfpopadpushad;push 0h;call ExitProcessinvoke ExitProcess,0popadmain ENDP
end main

粘贴至刚创建的源文件中即可;

第五步:配置解决方案平台

1. 右击解决方案—属性

2. 配置属性—属性

第六步:查看.asm文件属性

1. 右击.asm文件—属性

2. Command Line—检验是否为ml.exe

此处若为ml64.exe,采用的就是64位汇编,后续运行就会报错。

第七步:断点调试查看内存与寄存器

1. 打断点—调试—开始调试

2. 调试—窗口—内存(寄存器)

3. 手动增加待查看寄存器

4. 查看程序中变量的地址

在本程序中定义了字节型变量msg,此处输入&msg并回车查看其地址:

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 解码AAC裸流为PCM写入文件
  • [数据结构]双向带头循环链表制作
  • rust-tokio发布考古
  • 少儿编程 2024年3月电子学会图形化编程等级考试Scratch二级真题解析(判断题)
  • 函数重载和引用【C++】
  • Unity类银河恶魔城学习记录12-7-2 p129 Craft UI - part 2源代码
  • git lfs如何使用
  • AI-漫画推文
  • 二维数组及其内存图解
  • 云手机提供私域流量变现方案
  • 如何在Java中创建对象输入流
  • WPF Pack
  • C# 字符串和枚举类型互相转换
  • 007 spring aop(通知)(xml)
  • fastlio2 保存每帧的点云和每帧的里程计为单独的文件做后端回环优化和手动回环优化
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • Angular2开发踩坑系列-生产环境编译
  • CSS 三角实现
  • EventListener原理
  • HTTP那些事
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • javascript 总结(常用工具类的封装)
  • mysql中InnoDB引擎中页的概念
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • Spring Cloud Feign的两种使用姿势
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • TypeScript实现数据结构(一)栈,队列,链表
  • 代理模式
  • 目录与文件属性:编写ls
  • 如何实现 font-size 的响应式
  • 无服务器化是企业 IT 架构的未来吗?
  • ​520就是要宠粉,你的心头书我买单
  • ‌U盘闪一下就没了?‌如何有效恢复数据
  • #13 yum、编译安装与sed命令的使用
  • (1)(1.13) SiK无线电高级配置(六)
  • (3)医疗图像处理:MRI磁共振成像-快速采集--(杨正汉)
  • (Java)【深基9.例1】选举学生会
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (pycharm)安装python库函数Matplotlib步骤
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (回溯) LeetCode 77. 组合
  • (九)One-Wire总线-DS18B20
  • (十)T检验-第一部分
  • (十五)使用Nexus创建Maven私服
  • (一) 初入MySQL 【认识和部署】
  • .Net7 环境安装配置
  • :如何用SQL脚本保存存储过程返回的结果集
  • @LoadBalanced 和 @RefreshScope 同时使用,负载均衡失效分析
  • @PostConstruct 注解的方法用于资源的初始化
  • [ Linux ] Linux信号概述 信号的产生
  • [145] 二叉树的后序遍历 js