二、DEBUG模式及常用指令

news/2024/10/30 11:57:43/文章来源:https://www.cnblogs.com/liuhousheng/p/18515469

debug概述

debug是DOS、Windows都提供的实模式(8086方式)程序的调试工具。使用他可以查看CPU各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行

debug的功能

调试(Debug)的命令比较多,共有20多个,但这6个命令是和汇编学习密切相关的。
在以后的实验中,我们还会用到一个P命令。

  • R命令:查看、改变CPU寄存器的内容
  • D命令:查看内存中的内容
  • E命令:改写内存中的内容
  • U命令:将内存中的机器指令翻译成汇编指令
  • T命令:执行一条机器指令
  • A命令:以汇编指令的格式在内存中写入一条机器指令

进入debug模式

image

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

  • 查看CPU寄存器的内容

    输入一个r后回车

    image

  • 改变CPU寄存器的内容

    若要修改一个寄存器中的值,比如AX中的值,可用R命令后加寄存器名来进行,输入“r ax”后回车,将出现“:”作为输入提示,在后面输入要写入的数据后回车,即完成了对 AX中内容的修改。若想看一下修改的结果,可再用R命令查看,如图

    image

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

内存中数据的地址由段地址和偏移地址组成,其中段地址乘以16再加上偏移地址就是真实的物理地址

说白了,就是用两个16位数(一个是段地址,另一个是段内偏移),合成一个20位地址

以十进制举例:

假设一本书有99页,如果可以用“2位”十进制数表示,那么第0页就是:00,第14页就是:14.
用2个“1位”十进制数表示那么就只好分段了,由于“1位”十进制数可以表示10页,99页书就分成10段。
则第0页就是:第0段,第0页; 段寄存器为0,段内偏移为0.(即第0段的第0个位置)
第14页就是:第1段,第4页。 段寄存器为1,段内偏移为4.(即第1段的第4个位置)
然后用段寄存器地址和段内偏移地址组成一个“2位”地址。
则第14页物理地址为:段地址“1”左移一位,得到10,再加上段内偏移4,最终得到14.

当前编程环境的寄存器是16位的,所以如果不分段的话是无法存下大于16位的地址的。

段地址和偏移地址都是16进制数,所以段地址需要乘以16(与上面十进制书页的例子一样)再加上偏移地址就是物理地址了

  • 查看指定地址及该地址后的128个字节数据

    查看地址:e291:32f3及后128位字节的数据

    image

  • 查看指定范围的地址(不可跨段)

    查看地址:0000:0002到地址:0000:0004之间的数据

    image

  • 自动地址偏移

    • 只输入一个d命令时,不会查看之前的地址的数据,而是会再原有的基础上往后查看128个字节的数据

      image

    • 注意,如果要跨段的话会回到段首

      image

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

  • 第一种修改方式

    e+起始地址+要修改的值(可以连续写多个)

    image

  • 第二种

    e+起始地址

    如图所示,回车后显示的是地址[0000:0000]的值:00,直接输入要修改的值即可。如果还有修改下一个地址的值则按空格。如果要跳过某个字节不修改直接空格即可

    image

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

在地址:[073f:0100]写入汇编指令,连续按两下回车退出

image

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

输入一个t命令就回车时,默认执行[CS:IP]地址内的指令

t[起始地址]这种格式可以执行指定地址的指令

每执行一次T命令只会执行一条指令

image

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

将刚刚写入地址[073f:0100]的机器指令翻译成汇编

image

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

207-FMC207-基于FMC 两路QSFP+光纤收发子卡

FMC207-基于FMC 两路QSFP+光纤收发子卡 一、板卡概述本卡是一个FPGA夹层卡(FMC)模块,可提供高达2个QSFP / QSFP +模块接口,直接插入千兆位级收发器(MGT)的赛灵思FPGA。支持利用Spartan-6、Virtex-6、Kintex-7 、Virtex-7FPGA系列FPGA。兼容xilinx 开发板使用。 实现高…

数据采集与融合实践作业三

数据采集与融合技术实践作业三 scrapy项目gitee链接:https://gitee.com/jsjdjjdjajsd/getinformation/tree/master/作业三 作业①: 要求:指定一个网站,爬取这个网站中的所有的所有图片,例如:中国气象网(http://www.weather.com.cn)。使用scrapy框架分别实现单线程和多线…

《vue3第五章》新的组件,包含:Fragment、Teleport、Suspense

《vue3第五章》新的组件,包含:Fragment、Teleport、Suspense@目录五、新的组件1.Fragment2.Teleport案例完整代码3.Suspense案例完整代码本人其他相关文章链接 五、新的组件 1.Fragment在Vue2中: 组件必须有一个根标签 在Vue3中: 组件可以没有根标签, 内部会将多个标签包含在…

h3c交换机推送日志至syslog服务器

华三官网文档并不完全正确,并且很多系统已经用rsyslog而不是syslog。在这里记录下配置 1、交换机侧配置 [H3C]info-center enable # ip替换成日志服务器的ip 使用local5作为日志主机记录工具。 [H3C]info-center loghost 172.20.161.249 facility local5 [H3C]info-center so…

redisr的发布与订阅

redis发布订阅理解图发布者(Publisher)使用 PUBLISH 命令将消息发布到指定的频道。订阅者(Subscriber)使用 SUBSCRIBE 命令订阅一个或多个频道以接收消息。所有订阅同一频道的订阅者都会收到此消息。频道(Channel)频道是消息的通道,发布者通过指定频道来发布消息,订阅者…

【征程 6 工具链性能分析与优化-1】编译器预估 perf 解读与性能分析

01 引言 本篇文章中,我们将首先介绍 layerdetails 中的参数信息,然后将结合实例分析如何利用 layerdetails 来分析模型的性能瓶颈,进而对模型的性能进行优化。 02 layerdetails 中信息解读 征程 6 工具链目前提供了两种方式生成性能评估报告:使用hb_compile工具编译模型时会…

《vue3第六章》其他,包含:全局API的转移、其他改变

《vue3第六章》其他,包含:全局API的转移、其他改变@目录六、其他1.全局API的转移2.其他改变 六、其他 1.全局API的转移Vue 2.x 有许多全局 API 和配置。例如:注册全局组件、注册全局指令等。//注册全局组件 Vue.component(MyButton, {data: () => ({count: 0}),template:…

《vue3第四章》Composition API 的优势,包含Options API 存在的问题、Composition API 的优势

《vue3第四章》Composition API 的优势,包含Options API 存在的问题、Composition API 的优势@目录四、Composition API 的优势1.Options API 存在的问题2.Composition API 的优势 四、Composition API 的优势 1.Options API 存在的问题 使用传统OptionsAPI中,新增或者修改一…

USB协议详解第27讲(USB包-中断传输包详解)

1.中断传输包结构 中断传输和批量传输类似,中断传输只由一个中断事务组成,中断事务包含令牌包、数据包、握手包,如图下所示。中断事务类型的特点是能够通过错误检测和重试来保证主机和设备之间数据的无错误传递。 需要理解和注意以下点。(1)当主机准备接收数据时,它发出I…

.NET 实现的零部件离散型 MES+WMS 系统

前言 随着制造业的不断发展,企业对于生产效率和管理水平的要求越来越高。 EasyMES 是一款基于 .NET 6 开发的零部件离散型 MES(Manufacturing Execution System)+ WMS(Warehouse Management System)系统,可以帮助企业提升生产效率和管理水平。 本文将详细介绍 EasyMES 的…

Hugging Face 与 TruffleHog 合作,实现风险预警

我们非常高兴地宣布与 Truffle Security 建立合作伙伴关系并在我们的平台集成 TruffleHog 强大的风险信息扫描功能。这些特性是 我们持续致力于提升安全性 的重要举措之一。TruffleHog 是一款开源工具,用于检测和验证代码中的机密信息泄露。它拥有广泛的检测器,覆盖多种流行 …

vue3知识点:Teleport组件

vue3知识点:Teleport组件@目录五、新的组件2.Teleport案例完整代码本人其他相关文章链接 五、新的组件 2.Teleport问题:什么是Teleport?答案:Teleport 是一种能够将我们的组件html结构移动到指定位置的技术。 <teleport to="移动位置"><div v-if="…