当前位置:网站首页>【汇编语言03】第2章 寄存器——实验1:查看CPU和内存,用机器指令和汇编指令编程
【汇编语言03】第2章 寄存器——实验1:查看CPU和内存,用机器指令和汇编指令编程
2022-08-03 17:53:00 【Fighting_hawk】
目录
1 debug介绍及其安装
1.1 简介
- Debug 是DOS、Windows都体用的实模式(8086方式)程序的调试工具。
- 功能:使用它,可以查看CPU各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行。
- 现在好多人都用64位系统了,但是64位W7没有自带的DEBUG和MASM,需要安装。
1.2 安装过程
- 下载所需文件,此处提供的是免安装的DOSBox,其中masm文件夹内已配置好debug.exe、LINK.EXE、MASM.EXE、exe2bin.exe,无需另外下载。
链接:https://pan.baidu.com/s/1NIdB7rYGg-2Vzt2RdL3A9A?pwd=fycn - 将整个文件夹复制到D盘下,右键上图中的DOSBox.exe文件,以管理员方式运行,启动后界面如下。
- 输入命令
mount c d:\DOSBox\masm
挂载所需程序,其中d:\DOSBox\masm
是文件夹存放的路径,c
是挂载到虚拟盘符为c,如下图所示表示挂载成功。 - 输入命令
c:
切换至虚拟符c。 - 输入命令
dir
可以查看当前路径下有什么文件,使用,命令debug
测试是否安装成功,如下图出现一个横杆表示成功。 - 缺点:每次进入实验环境都需要重新挂载。
2 debug常用命令及实验
2.1 命令简介
- 需要格外注意的是,与汇编命令一样,debug命令对大小写不敏感。
- R命令:查看、改变CPU寄存器的内容;
- D命令:查看内存中的内容;
- E命令:改写内存中的内容;
- U命令:将内存中的机器指令翻译成汇编指令;
- T命令:执行一条机器指令;
- A命令:以汇编指令的格式在内存中写入一条机器指令。
- 实验过程可以参考书本,主要是熟悉以上命令的用法,实验过程中注意观察各寄存器内容的含义和变化,理解本章的理论知识。
2.2 R命令实验
- 用法一:单走一个
R
。可以查询各寄存器内容。 - 用法二:输入
R+寄存器
后回车,先返回对应寄存器当前的值,后弹出:输入要修改的值。
2.3 D命令实验
- D命令的使用方法较多,此处先学1个,本课程主要还是提供入门而不是总结归纳,后面该学的再学。
- 用法一:单走一个
D
。再原先查询的位置后继续查询。 - 用法二:
D 段地址:偏移地址
。查询指定的位置。
2.4 E命令实验
- 用法一:
E 起始地址 数据1 数据2 ……
,从起始地址开始,连续修改后续内存中的内容。 - 用法二:提问式修改法,并没有比方法一好。
(1)输入e 1000:0000,,按enter键。
(2)可以看到显示第一个要修改的值并且有一个点,可以有两种选择,一种是输入要修改的值并且按空格,另一种是直接输入空格表示不修改。
(3)当要处理的单元都处理完后,按回车介绍命令。 - 功能:往内存中写入字符,存储为字符对应的ASCII码。
2.5 E+U+R+T组合实验
- 使用E命令写入机器指令,已知汇编指令
mov ax,0001
对应的机器指令为b80100
。 - 使用U命令,将内存中的内容翻译为汇编指令。
- 使用R命令,修改寄存器CS和IP的值,使得代码在1000:0020处执行。
- 使用T命令执行指令。可以看到寄存器AX内容被指令修改,寄存器IP指向下一个指令位置。
2.6 A命令实验
- E命令的功能是改变内容的内容,虽然也可以将机器指令写入内存中,但是这样需要人工去找汇编指令对应的机器指令,很是麻烦。
- A命令的功能:以汇编指令的格式在内存中写入一条机器指令。很好弥补了E命令的不足。
3 小结
- 掌握debug常见命令的功能和使用方法。
- 加深对寄存器功能的理解。
参考文献
- 《win10(64位)安装汇编环境(masm)》
- 《汇编语言基础11》小甲鱼零基础视频课程
- 《汇编语言基础12》小甲鱼零基础视频课程
边栏推荐
- cdc抽取mysql整个实例的binlog,有没有方案通过配置的方式将这些库表拆开分发到kafka
- 三丁基-巯基膦烷「tBuBrettPhos Pd(allyl)」OTf),1798782-17-8
- LyScript 从文本中读写ShellCode
- Cool open technology x StarRocks: unified OLAP analysis engine, comprehensive building digital model of OTT
- 【JS】利用JS给删除按钮添加提示框
- ICDAR competition technology sharing
- 动态打印菱形
- 微信小程序分享功能
- 如何避免无效的沟通
- 云图说丨初识华为云微服务引擎CSE
猜你喜欢
新“妖股”13个交易日暴涨320倍,市值3100亿美元超阿里
CC2530_ZigBee+华为云IOT:设计一套属于自己的冷链采集系统
Web3 security risks daunting?How should we respond?
分享一个开源的USB-CAN工具!
003_Kubernetes核心技术
rhel8.3 系统下修改有线网卡配置信息实现联网
我们为何看好投资 DAO?
Is OnePlus Ace worth buying?Use strength to interpret the power of performance
使用.NET简单实现一个Redis的高性能克隆版(一)
宝塔搭建企业招聘网站源码实测
随机推荐
CC2530_ZigBee+HUAWEI CLOUD IOT: Design your own cold chain acquisition system
七夕
【刻意练习观后管】刻意练习
【机器学习】机器学习的基本概念/术语2
cell delay和net delay
@resource和@autowired的区别
一键进入华为云会议,长期免费值得所有开发团队有一套【华为云至简致远】
一些嵌入式软件设计经验
JSON.stringify()的深入学习和理解
Crack: WebKitX ActiveX and WebKitX VHX
完整的搭建内网穿透ngrok详细教程(有图有真相)
【mysql】SIGN(x)函数
ASP.NET Core依赖注入之旅:3.Service Locator和依赖注入
Digital IC Handwriting - MCMM, WNS and TNS
【保姆级示例向】观察者模式
Weekly recommended short video: In order to fill the gap of learning resources, the author specially wrote a book?
PMP考试通关宝典-敏捷专题
JVS低代码-多数据模型与数据联动配置举例
JVM参数设置
常见亲脂性细胞膜染料DiO, Dil, DiR, Did光谱图和实验操作流程