实验1:查看CPU和内存,用机器指令和汇编指令编程

news2024/11/17 1:28:25

预备知识:Debug的使用

1.Debug:

  Debug时DOS、Windows都提供的实模式(8086 方式)程序的调试工具。

debug是Windows 16位或者32位机器上的一款调试工具。

也就是说,在WindowsXP及以前的机器上都有debug,直接Win+X debug就可以调出;

在之后的32位机也有;但是在之后的64位机器上不存在,即使有,也无法运行。
相似的,微软的masm也无法在64位版本的系统上运行。
可以通过安装dosbox来虚拟一个DOS环境或者使用WindowsXP(虚拟机即可)的方式来使用debug和masm。                    
原文链接:https://blog.csdn.net/Apheal/article/details/80617302

使用它,可以查看CPU各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行。

R命令:查看、改变CPU寄存器的内容

D命令:查看内存中的内容

E命令:改写内存中的内容

U命令:将内存中的机器指令翻译成汇编指令

T命令:执行一条机器指令

A命令:以汇编指令的格式在内存中写入一条机器指令


 2.进入Debug

Debug是在DOS方式下使用的程序

步骤:win+R——cmd——debug

由于64位的 Windows 11 系统无法直接使用 16 位的 Debug 工具

因为它只支持 32 位和 64 位程序,这里选择开个虚拟机进行实验。(win2003_server) 

 注意CS和IP的值,CS=0AF0,IP=0100

也就是说,内存0AF0:0100处的指令为CPU当前要读取、执行的指令。

Debug还列出了CS:IP所指向的内存单元处存放的机器码,并将它翻译为汇编指令。

可以看到,CS:IP 所指向的内存单元为0AF0:0100,

此处存放的机器码为74E4

对应的汇编指令为JZ 00E6

3.r命令 

 还可以用Debug修改寄存器中的值:

如AX中的值,输入“r ax”将出现“:”作为输入提示。

此时寄存器AX中的值被改成了:1111

4.d命令

使用Debug的D命令,可以查看内存中的内容,D命令的格式较多。这里只用一部分。

eg:想知道内存10000H处的内容:"d 段地址:偏移地址“ 

使用D命令,Debug将输出3部分的内容:

1.中间是从指定地址开始128个内存单元的内容,用十六进制的格式输出,每行的输出从16的整数倍的地址开始,最多输出16个单元的内容。

2.左边是每行的起始地址

3.右边是每个内存单元的数据中对应的可显示的ASCII码字符,如果没有,就用”.“代替。

 其他:

接着使用d命令——列出后续内容

也可以指定D命令查看范围——d 段地址:起始偏移地址 结尾偏移地址

eg:要查看1000:0~1000:9中内容——d 1000:0 9

5.E命令

 可以使用E命令来改写内存中的内容,

格式:”e 起始地址 数据 数据 ……“的格式来进行。

6.U命令

  查看写入的或内存中原有的机器码所对应的汇编指令。

比如U命令将从1000:0开始的内存单元中的内容翻译为汇编指令,并显示。

 

 由此,我们再一次看到内存中的数据和代码没有任何区别,关键在于如何解释。

7.T命令

 执行一条或多条指令,简单地使用T命令,可以执行CS:IP指向的指令。

 8.A命令

  前面曾使用E命令写入机器指令,这样做很不方便。

A命令可以直接以汇编指令的形式写入指令。

如图以汇编语言向从1000:0开始的内存单元中写入了几条指令,然后用D命令查看A命令执行的结果。可以看到,Debug已经将这些汇编指令翻译为对应的机器指令你个,将它们的机器码写入内存。

 小结:本次实验中用到的命令

查看、修改CPU中寄存器的内容:R命令

查看内存中的内容:D命令

修改内存中的那日容:E命令

将内存中的内容解释为机器指令和对应的汇编命令:U命令

执行CS:IP指向的内存单元处的指令:T命令

以汇编指令的形式向内存中写入指令:A命令

 实验任务:

1.使用Debug,将一段程序写入内存

2.利用指令计算2的八次方

3.查看内存中的内容,尝试修改主板ROM中的生产日期

4.

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

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

相关文章

【C++从0到王者】第五十二站:跳表

文章目录 一、什么是跳表二、skiplist的效率三、skiplist的实现 一、什么是跳表 skiplist本质上也是一种查找结构,用于解决算法中的查找问题,跟平衡搜索树和哈希表的价值是一样的,可以作为key或者key/value的查找模型。 skiplist,…

【PCIe】 PCIe 拓扑结构与分层结构

🔥博客主页:PannLZ 文章目录 PCIe拓扑结构PCIe分层结构 PCIe拓扑结构 计算机网络中的拓扑结构源于拓扑学(研究与大小、形状无关的点、线关系的方法)。 把网络中的计算机和通信设备抽象为一个点,把传输介质抽象为一条线,由点和线组…

HTTP请求响应详解 (HTTP请求数据格式,常见请求方式,后端响应参数)及Apifox(postman)使用方式

目录 一.HTTP协议 二.HTTP请求数据格式 请求方式 三.后端响应请求 基于SpringBoot响应数据 请求响应的参数类型 同一响应格式 四.Apifox(postman)使用方法 一.HTTP协议 HTTP(Hypertext Transfer Protocol,超文本传输协议)是一种用…

maven项目引入私有jar,并打包到java.jar中

私有jar存放位置 maven依赖 <dependency><groupId>com.hikvision.ga</groupId><artifactId>artemis-http-client</artifactId><version>1.1.10</version><scope>system</scope><systemPath>${project.basedir}/s…

JS实现chatgpt数据流式回复效果

最近高了一个简单chatgpt对话功功能&#xff0c;回复时希望流式回复&#xff0c;而不是直接显示结果&#xff0c;其实很简单&#xff0c;前端流式读取即可&#xff0c;后端SSE实现流式传输 前端用到fetch获取数据&#xff0c;然后利用reader读取 let requestId parseInt(Ma…

笛量智能加入飞桨技术伙伴计划,共同打造“AI+私域智慧运营”新模式

近日&#xff0c;上海笛量智能科技有限公司正式加入飞桨技术伙伴计划&#xff0c;双方将共同努力在私域运营机器人技术及生态建设做出贡献&#xff0c;致力打造“AI私域运营”智能化新模式&#xff0c;助力产业降本增效。 上海笛量智能科技有限公司 上海笛量智能科技有限公司&a…

6款ai写作一键生成,让你的文字脱颖而出

如今AI写作工具正逐渐走入我们的生活&#xff0c;成为我们写作的得力助手&#xff0c;它们通过分析大量的文本数据和机器学习算法&#xff0c;能够快速生成文章的大纲、段落结构等&#xff0c;从而帮助我们节省写作时间&#xff0c;提高写作效率。今天&#xff0c;我将为大家介…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《考虑净负荷均衡的分布式光伏集群电压调控策略研究》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

Vue时间轴

之前有这样子的需求没有用第三方插件于是自己写一个简单的时间轴 时间轴滚动条并左右切换滚动条位置相对应移动 <div class"time-scrollbar"><div v-if"timeLineData.length>0" class"scrollbar-content"><div class"ar…

NextJs教程系列(四):路由loading

loading加载 loading.js 可以帮助你使用React Suspense创建一个组件, 当你在加载路由内容时&#xff0c;它会显示该加载状态组件&#xff0c;渲染完成后&#xff0c;新的内容将会自动替换。 传统ssr渲染流程 传统的ssr渲染流程&#xff0c;当用户请求一个页面时&#xff0c;服…

入门学习Python推荐书籍

. Python作为一门易学易用的编程语言&#xff0c;在近些年得到了越来越多的关注和应用。Python的开发效率极高&#xff0c;语言特性丰富&#xff0c;拓展性强。因此&#xff0c;Python成为了众多IT工程师、科研人员、数据分析师以及爱好者的首选。 那么&#xff0c;对于初学者…

led护眼灯真的能护眼吗?五大热门护眼台灯测评,不容错过!

如今&#xff0c;儿童近视率不断攀升&#xff0c;其中用眼过度疲劳已成为近视的主要诱因。学习环境中光线的适宜与否&#xff0c;直接关乎孩子眼睛的疲劳程度。因此&#xff0c;为孩子营造一个舒适、健康的学习环境显得尤为关键。而一款优质的护眼台灯&#xff0c;正是预防近视…

Hive-源码带你看hive命令背后都做了什么

一、源码下载 下面是hive官方源码下载地址&#xff0c;我下载的是hive-3.1.3&#xff0c;那就一起来看下吧 https://dlcdn.apache.org/hive/hive-3.1.3/apache-hive-3.1.3-src.tar.gz 二、总结 由于篇幅太长担心占用你的时间&#xff0c;先把总结写到前面。 1、命令行输入 …

【Linux】软件管理器yum和编辑器vim

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 文章目录 一、Linux下安装软件的方案1.1 源代码安装1.2 rpm安装1.3 yum安装 二、Linux软件…

备战2024年汉字小达人活动:历年区级样题练习和解析

今天我们来看一下汉字小达人活动的第一轮选拔的区级样题。区级样题是中文自修杂志社&#xff08;主办方&#xff09;发布的试题&#xff0c;主要是给学校老师选拔参考使用的&#xff0c;据了解&#xff0c;很多学校老师是直接用这个样卷在学校组织选拔&#xff0c;选拔成绩突出…

虚拟主播视频制作,低成本的数字人播报方案

传统的视频制作方式往往面临着成本高、周期长、人力投入大等挑战。为了满足企业对于高效、低成本视频制作的需求&#xff0c;美摄科技凭借其强大的技术研发实力&#xff0c;推出了面向企业的虚拟主播视频解决方案&#xff0c;为企业带来了全新的数字人播报视频制作体验。 美摄…

SVG 渐变边框在 CSS 中的应用

SVG 渐变边框在 CSS 中的应用 <template><div class"home"><div class"one"><svg width"100%" height"100%"><rect x"2" y"2" width"100%" height"100%" fill&q…

『 Linux 』Process Control进程控制(万字)

文章目录 &#x1f996; 前言&#x1f996; fork()函数调用失败原因&#x1f996; 进程终止&#x1f4a5; 进程退出码&#x1f4a5; 进程正常退出 &#x1f996; 进程等待&#x1f4a5; 僵尸进程&#x1f4a5; 如何解决僵尸进程的内存泄漏问题&#x1f4a5; wait( )/waitpid( )…

单链表的实现(数据结构)

本篇博客主要是单链表&#xff08;无头单项不循环&#xff09;的实现的代码分享 说明&#xff1a;因为此单链表无头&#xff08;哨兵位&#xff09;&#xff0c;可以说成没有初始化也可以说初始化时没有一个有效地址作为单链表的起始地址 例如下面代码中的plist NULL。 所以在…

MS5188N——16bit、8 通道、500kSPS、 SAR 型 ADC

产品简述 MS5188N 是 8 通道、 16bit 、电荷再分配逐次逼近型模数 转换器&#xff0c;采用单电源供电。 MS5188N 拥有多通道、低功耗数据采集系统所需的所有 组成部分&#xff0c;包括&#xff1a;无失码的真 16 位 SAR ADC &#xff1b;用于将输入配 置为单端输入…