专栏首页乱码三千8086汇编语言之debug模式常用指令介绍

8086汇编语言之debug模式常用指令介绍

在搭建好了8086汇编的开发环境后,接下来介绍8086的debug模式。执行debug.exe以进入debug调试模式,在dos中通过输入命令的方式进行交互

-R命令

R命令的作用是查看和修改debug模式下CPU中寄存器的值

-D命令

D命令的作用是查看内存中的内容

上面为 (段地址:偏移地址) 查看方式。D命令默认会显示寻址地址开始的后128个内存单元的内容,以16进制的方式显示(每个内存单元8位,一行最多16个内存单元),而最右边会将内存单元中的二进制数据以ascll码的形式翻译展示

但有时,我们只想聚焦于某一部分内存地址的内容,而默认展示的内存视图不是很方便。

  D命令提供了另外一种访问内存的方式(段地址:偏移起始地址 偏移终止地址),其能够展示(段地址:偏移起始地址 至 段地址:偏移终止地址)的内存信息,范围两端均为闭区间

-E命令

E命令的作用是改变内存中的内容。

 和对CPU中寄存器的查看,修改不同,对内存进行查看和修改较为复杂,为此debug设计了两个不同的命令分别进行控制(E命令修改内存、D命令查看内存)。

  通过(E 起始地址 数据1 数据2 数据3... )命令可以修改内存中以起始地址开始,顺序的N个内存单元的值(N为实际参数传递的数量)

也可以和R命令修改CPU中寄存器值类似的,通过提示来修改特定内存单元的值。00.12 00代表内存单元在修改前的值,12是我们手动输入的、需要修改的新值

-U命令

U命令的作用是将内存中的二进制数据转换为汇编指令展示(反汇编)

D命令能够将内存中的数据以16进制或ascll码的形式展现出来,但有时我们需要观察的是内存中的机器指令时,D命令的视图过于抽象,不利于理解。debug提供了U命令来解决这个问题。

  对于前面我们在1000:0处输入的机器指令,使用 U 1000:0 命令(u 内存地址)可以将内存中的数据以汇编语言指令的方式进行展示

-A命令

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

对于内存操作,D命令可以查看内存中的内容,但如果想查看的是程序指令,显然U命令更加方便;E命令可以向内存中写入数据,但对于程序指令的写入,直接操作二进制机器码的方式过于硬核。为此,debug提供了A命令,我们可以通过A命令以汇编指令的形式向内存中写入内容。

  通过A命令将(mov ax,0001,mov bx,0002,add ax,bx)三条指令写入内存1000:0处:

通过A命令进行指令的写入,和E命令达到的效果一样,但使用起来却更加便捷。A命令能够自动识别所输入汇编指令的长度,正确的在内存中写入程序指令。

debug提供了D、E两种命令用于对内存进行通用的操作(纯二进制、十六进制数据的读、写)。

对于程序指令,debug提供了U、A两种命令以更人性化的方式来读写内存中的指令内容

-T命令

T命令的作用是进行单步机器指令的调试

-G命令

G命令的作用是进行Debug程序断点调试

-g 代码地址(cs+ip)地址

本文分享自微信公众号 - 乱码三千(infree6),作者:有瓣知识

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-08-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Debug究竟是什么意思?

    各位,相信你们都听过Debug这个词,那这个词在我们计算机领域究竟是什么意思呢?今天就在这和大伙简单说道说道,讲的不好不对的地方还请大家批评指正。

    7089bAt@PowerLi
  • 16位汇编第一讲简介

                     汇编第一讲 汇编简介 一.什么是汇编   汇编语言他是计算机语言,计算机语言通俗点说就是人类和计算机(也就是CPU)沟通的...

    IBinary
  • JITWatch查看字节码被JIT编译后的汇编代码

    最近看书看到关于volitale关键字与jmm内存模型的介绍,这个知识点似乎看了好多次,背都能背下来了。但理论性的东西真的很容易忘记,看不到摸不着。于是乎,我上...

    Java艺术
  • 《汇编语言》——笔记(一)

    在讲汇编语言之前,先介绍下机器语言。机器语言是机器指令的集合。电子计算机的机器指令是一列二进制数字,计算机将转变高低电平,来驱动电子器件。

    天钧
  • 爱了爱了,这篇寄存器讲的有点意思

    下面我们就来介绍一下关于寄存器的相关内容。我们知道,寄存器是 CPU 内部的构造,它主要用于信息的存储。除此之外,CPU 内部还有运算器,负责处理数据;控制器控...

    C语言与CPP编程
  • X86保护模式入门简介

    以上概念简单了解. 我们要学的是保护模式 而之前 的16位汇编 王爽著作 都是讲的实模式.

    IBinary
  • 汇编语言之GNU ARM

    GNU最开始其实是一个操作系统,旨为打造一个开源免费自由的操作系统,目前操作系统还在完善中

    乱码三千
  • Linux 从头学 01:CPU 是如何执行一条指令的?

    这两年多以来,我的本职工作重心一直是在 x86 Linux 系统这一块,从驱动到中间层,再到应用层的开发。

    IOT物联网小镇
  • 未整理的计组复习笔记?

    计组是我听过的最脑阔疼的课。不过已经考过了orz以及,大家学的计组内容可能不一样,这篇复习包括的内容应该是比较简略的。

    gojam
  • 16位汇编语言第二讲系统调用原理,以及各个寄存器详解

       16位汇编语言第二讲系统调用原理,以及各个寄存器详解 昨天已将简单的写了一下汇编代码,并且执行了第一个显示到屏幕的helloworld 问题?   hel...

    IBinary
  • 软件逆向基础

    动态分析技术:指的是使用调试工具加载程序并运行。 随着程序运行,调试者可以随时中断目标的指令流程,以便观察相关计算的结果和当前的设备情况。 静态分析技术:是相对...

    HACK学习
  • 汇编基础

    ​ cup与所有内存之间:地址总线,数据总线,控制总线,每条线对应不同信息,指令与数据分开

    Dean0731
  • 深入iOS系统底层之XCODE对汇编的支持介绍

    一个好的IDE不仅要提供舒适简洁和方便的源代码编辑环境,还要提供功能强大的调试环境。XCODE是目前来说对iOS应用开发支持的最好的IDE(虽然Visual S...

    欧阳大哥2013
  • Linux从头学02:x86中内存【段寻址】方式的来龙去脉

    饭是一口一口的吃,计算机也是一步一步的发展,例如下面这张英特尔公司的 CPU 型号历史:

    IOT物联网小镇
  • 16位汇编第第四讲常用的7种寻址方式

    常用的7中寻址方式 昨天稍微讲了一下,立即数寻址,今天继续讲解寻址方式. (注意,这个属于简陋版的,写了4个小时的博客,也就是第一版,保存了一下,但是博客出问题...

    IBinary
  • Linux从头学03:如何告诉 CPU,代码段、数据段、栈段在内存中什么位置?

    前两篇文章,我们一起学习了 8086 处理器中关于 CPU、内存的基本使用方式,重点对段寄存器和内存的寻址方式进行了介绍。

    IOT物联网小镇
  • 《一个操作系统的实现》笔记(1)--NASM汇编语法和环境搭建

    felix
  • 深入iOS系统底层之程序中的汇编代码

    合抱之木,生于毫末;九层之台,起于垒土;千里之行,始于足下。--(老子·道德经 )

    欧阳大哥2013
  • 吹弹牛皮之C++ 汇编指令

    本节及接下来的研究内容,着重的是x64的汇编。x64汇编根据编译器的不同,又有两种书写格式。

    用户7698595

扫码关注云+社区

领取腾讯云代金券