精华内容
下载资源
问答
  • 汇编语言debug指令
    万次阅读 多人点赞
    2016-12-24 20:08:42

    DEBUG下最常用的调试指令为六个

    一、常用DEBUG命令

    (1)R :查看更改cpu寄存器内容

    (2)D:查看内存中内容

    (3)E:改写内存中内容

    (4)U:将内存中机器指令翻译成汇编指令

    (5)T:执行一条机器指令

    (6)A:以汇编格式在内存中写入一条指令

    二、常用命令的使用

    1.R命令:查看 更改CPU寄存器内容

    输入r后回车,会显示所有寄存器的数值

    如果修改寄存器数据 如ax寄存器数值 则输入“r ax”后回车,在“:”后输入新数据,回车则修改完成,如下图


    2.命令d: 查看内存数据

    D命令显示数据个数如下所示,内存地址格式为【段地址:偏移地址】,段地址和偏移地址共同组成内存地址,实际内存地址=段地址+偏移地址

    直接输入d 显示的内存区域地址为上次查看位置后内存数据

    输入命令时,可以直接输入内存地址,查看制定地址的内存数据。如D【1000:0000】 直接显示命令 段地址为1000,偏移地址为0 的内存数据。

    采用“d 段地址:起始偏移地址 结尾偏移地址 ”可以查看起始地址到结尾地址范围内的数据 。如“d 1000:0000  9” 查看数据范围为“1000:0000 ~ 1000:0009”

    .

    3.E命令改写内存中的数据

    (1)“e 段地址:偏移地址 数据1 数据2 ... 数据n”方式,一次性修改指定地址的n个数据

     

    (2)."e 段地址:偏移地址" 按照提示 单个输入

    输入命令后,光标停在“.”后,“.”前为改地址原始数据,在“.”后输入新数据 ,按空格 修改下一个地址数据。输入完成,直接按回车



    (3)“e 段地址:偏移地址  '字符1' ‘字符2’ ...‘字符n’ ”在指定地址输入n个字符


    4. 命令 U 将指定地址的机器码翻译为汇编指令,并显示出来

    格式:“U 段地址:偏移地址”


    5.T指令 执行一条或者多条指令

    使用T 指令 执行内存地址为【CS寄存器数值:IP寄存器数据】位置的指令


    (1)ax寄存器原始数据为0000,修改cs:ip = 1000:100后,在cs:ip 写入 “MOV AX , 1”的机器码,使用t命令执行后,ax寄存器数据被修改为0001

    继续输入t ,则继续执行命令

    6.A命令,以汇编形式在内存中输入机器指令


    更多相关内容
  • 汇编语言debug的使用

    2022-05-29 15:32:54
    汇编语言debug的使用。

    如何使用debug

    首先我们需要打开dosbox。

    打开之后我们执行debug.exe。

    我们输入“r”查看寄存器的内容。

     

    现在我们来修改ax的值。

    我们输入:

    r ax

    1234

    确认后按r回车可以看到。

    现在我们可以看到,ax已经被修改成:1234h。

    我们输入“d”命令就可以查看内存情况。

    当然,我们可以查看我们想要查看的内存位置。

    输入:

    d 0000:0000

    可以查看0000:0000处的值。

     

    上面的例子就是查看 0000:0000 位置的内存情况。

    “d”命令的使用格式是:d cs:ip。

    除了查看内存的情况之外,我们还可以修改指定地址的值。

    这时我们需要使用命令 “e”来进行指定内存的修改。

    比如这里修改0000:0000的地址位置的值为12

    e 0000:0000 12。

    可以看到,0000:0000的地址已经被修改了。

    还有一个是,我们可以修改这一片的地址的值。

    e 0000:0000 12 34 12 03 03 04 34 ab dd da ff cd ae cc 

    使用“u”我们反汇编内存中的机器码。

    比如反汇编1000:0000开始反汇编,我们输入

    u 1000:0000

    可以看到,我们已经成功的反汇编这块区域的二进制。继续输入我们可以继续反汇编。

    使用“t”命令一条一条的执行指令如

    t

    回车后可看到

    我们正在一条一条的执行汇编指令。

    我们如果想要执行我们自己写的汇编代码,我们可以使用——a命令。

    输入

    a

    然后写入汇编代码~,连续两个回车结束输入。

     

    然后我们就可以输入——t执行我们写的汇编代码了。

     

    如果以上内容还不错,点赞支持一下,如果以上内容有误,欢迎大家在评论区批评指正,O(∩_∩)O谢谢。 

     

     

     

     

     

     

    展开全文
  • 常用的DEBUG命令1.1 用R命令查看、改变CPU寄存器的内容1.2 用D命令查看内存中的内容1.3 用E指令修改内存中的内容1.4 用U命令查看内存中机器码的含义1.5 用T命令执行指令1.6 使用A命令以汇编指令的形式再内存写入...

    前言

    首先开始今天的学习前,小伙伴们还是要检查下必要的汇编工具是否已经下载了。

    这里推荐一个学习汇编必须的工具DOSBOX
    链接:https://pan.baidu.com/s/1hQr9fYXffE6cVLwh26HFUA
    提取码:xlzb

    该系列博文是基于王爽老师著的汇编语言第三版,电子书获取地址如下:

    链接:https://pan.baidu.com/s/1kB9-tRtywNWagf5av4N7zQ
    提取码:xlzb

    写今天这篇博客的目的就是让大家在学了一些理论概念后,先通过DOSBOX输入Debug来了解一些简单指令的运行现象以方便后续的理论知识学习。

    一、Debug与常用功能

    1. DOSBOX的安装

    建议参考以下视频一步一步下载安装,这里就不再赘述了。

    DOSBOX的下载安装与使用

    2. 常用的DEBUG命令

    Debug的命令大概有20多个,这里我整理了6个在第一阶段学习会使用到的功能:
    在这里插入图片描述
    我们来简单的演示下这六个功能:

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

    我们打开DOXBOX,输入R
    在这里插入图片描述
    在我们之前的学习中我们已经学习过了AX,BX,CX,DX,CS,IP这六个寄存器,这里如果还不清楚的小伙伴可以参考下面的这篇文章:

    [汇编语言] - 常见寄存器详解

    这里我们需要注意CS和IP寄存器的值,在上一篇我曾讲过CS和IP这两个寄存器主要是负责存储将要执行的指令信息,此时CS = 073F ,IP = 0100 ,这代表着内存073F:0100处的数据就是CPU当前需要读取,执行的指令。我们还可以在输出页面的最下方看到这一行信息:
    在这里插入图片描述
    这里就是展示了CS:IP此时所指向的内存单元的机器码为 0000,对应的汇编指令就是 ADD [BX+SI],AL (这里我们暂时还不了解指令含义,无需深究)。当然我们还可以用R指令来改变寄存器的内容,我们需要输入R指令加寄存器名来进行指定寄存器的操作,然后再输入想要的数据即可,这里需要注意的是每次指令输入后记得按一下Enter键。
    在这里插入图片描述

    1.2 用D命令查看内存中的内容

    如果我们想要查看此时此刻内存中的内容,D命令就派上用场了,由于D命令的格式众多,这里就只简单介绍本次实验能够用得上的格式。
    在这里插入图片描述
    如果我们想要知道指定物理地址的内存信息,可以通过d 段地址信息:偏移地址的方式来查看,比如:
    在这里插入图片描述
    使用这种格式查看,Debug将会列出从指定内存单元开始的128个内存单元的内容,使用D指令后,Debug会输出三部分内容:

    1. 最左边是每行的起始地址
    2. 中间是从指定地址开始的128个内存单元的内容,用16进制的方式输出。
    3. 右边是每个内存单元中的数据对应的可现实的ASCII码,如果没有的话就用.代替

    1.3 用E指令修改内存中的内容

    E指令常被我们用来修改内存中的内容,比如我们可以将内存1000:0 到1000:9 单元中的内容分别写成0,1,2,3,4,5,6,7,8,9 我们可以采用 e 起始地址 数据 … 的格式来进行修改,比如:

    在这里插入图片描述
    图中我们用D命令查看了1000:0 到1000:f单元的内容,再用E命令修改了从1000:0 开始的10个单元的地址,最后再用D命令查看修改效果,发现已经修改成功。

    1.4 用U命令查看内存中机器码的含义

    我们需要先用E命令修改一下内存中的数据,然后通过D命令查看下效果:
    在这里插入图片描述
    当然我们也可以将一些有含义的机器码输入到内存中,这里我简单的提供一些有含义的机器码及其对应的汇编指令。

    百度百科:
    机器码一般指机器指令码。 计算机直接使用的程序语言,其语句就是机器指令码,机器指令码是用于指挥计算机应做的操作和操作数地址的一组二进制数。
    我的理解:
    其实所谓的机器码在我看来就是CPU对应的本能,某些机器码再CPU出厂的时候就被写入到ROM中,当CPU遇到这些机器码就可以进行对应的业务操作。

    在这里插入图片描述
    接下来我们用e命令将机器码写入内存:
    在这里插入图片描述
    那么我们如何知道这些机器码对应的汇编指令呢?此时就可以通过U命令来完成。接下来我们输入U命令:
    在这里插入图片描述
    我们可以观察到U命令的展示页面分为三部分:

    1. 最左侧是内存地址
    2. 紧跟其后的是内存中数据内容
    3. 最后的是数据内容对应的机器指令

    1.5 用T命令执行指令

    在我们完成指令的写入后,如何执行这些指令呢?T指令就派上了用场,我们可以使用T命令来执行CS:IP指向的指令内容,先简单的举个例子:
    在这里插入图片描述
    第一步我们使用E指令为连续的八个内存单元写入机器码。
    第二步我们使用R指令修改寄存器保存的地址信息。
    第三步我们使用t指令执行寄存器指向的指令信息。

    1.6 用A命令以汇编指令的形式再内存写入机器命令

    前面我们使用E命令写入机器指令这样很不方便,因为数字明显不符合我们日常的语言习惯。这个时候A命令就派上了用场,A命令允许我们直接以会变得形式写入指令,比如:
    在这里插入图片描述
    如图我们使用A指令为指定的内存区域写入汇编指令后,使用U命令查看,这个时候已经写入成功了,简单总结A指令就是从一个预设的地址开始输入指令。

    二、实验

    1. 通过输入汇编指令观察内存变化

    在我们明白Debug中六个基础命令的作用后就可以开始今天的第一堂汇编实验课了,今天的课题内容很简单,就是输入几组简单的汇编指令,然后通过观察内存的变化感受汇编指令的作用。
    注:表中汇编指令有的结尾部分为H,其代表的是该数据为16进制,输入DoxBox时请忽略不用输入!否则会报错!
    在这里插入图片描述
    我们先输入A+回车,然后依次输入指令,最后通过D命令观察内存现象:
    在这里插入图片描述
    我们再通过R命令查看下现在的指令指向:
    在这里插入图片描述
    接下来输入T命令执行汇编指令,观察现象:
    在这里插入图片描述

    这里我们运行了三条指令,第一条MOV AX,4E20 运行后我们可以观察到图中标记的第一个AX寄存器的值变为了4E20,接下来的MOV AX,1416 同样的将AX寄存器的值更改为了1416,最后的MOV BX,2000 则是将BX寄存器的值变更为了2000。剩下的指令读者老爷们可以依次通过T命令执行后并观察现象,这里博主就不再赘述了。

    2. 通过指令求2的八次方

    这里就不给各位看官老爷们自由发挥的机会了哈,各位小可爱按照我的指令依次敲入Debug即可:
    第一步: 输入基础指令:
    在这里插入图片描述
    这里我们翻译下我们输入的指令:

    1. DEBUG启动程序
    2. A 2000:0 从物理地址为2000:0的存储单元开始修改数据内容
    3. mov ax,1 将AX寄存器的值修改为1
    4. add ax,ax 等同于ax+ax(ax × 2)
    5. jmp 2000:3 将CS:IP的值修改回2000:3
    6. **RCS ** 修改CS寄存器的值为2000
    7. RIP 修改ip寄存器的值为3
    8. R 查看当前寄存器和指令状态

    接下来我们只需要输入T指令观察AX寄存器的变化即可:
    在这里插入图片描述
    这里我们发现每次指令为ADD AX,AX的时候,AX寄存器中的值就会完成AX × 2的操作,重复八次就可以求得2的八次幂的结果。

    结语

    书中的实验任务其实还有两个,试验任务三查看ROM中P地址FFF00 - FFFFF中存储的PC机生产日期由于我们使用的时DosBox的虚拟软件,并不能支持显示ROM中存储的PC机的生产日期。试验任务四从内存B8100开始修改数据是个简单的通过E命令 修改内容,这个就留给小伙伴们自己独立完成了。
    好了,今天的内容就到此结束了,有疑问的小伙伴欢迎评论区留言或者私信博主,博主会在第一时间为你解答。
    码字不易,感到有收获的小伙伴记得要关注博主一键三连,不要当白嫖怪哦~
    博主在这里祝大家可以在新的一年升职加薪,走上人生巅峰!

    展开全文
  • 我们在学习汇编语言的时候需要进入dos系统,最方便的就是下载一个dosbox模拟器。 在这样的系统环境下,debug程序可以查看CPU的各种寄存器的内容,内存的情况,还可以用机器指令去跟踪程序的运行等等。 debug有很多...

    一、什么是debug

    debug是dos系统中的一个调试程序。

    我们在学习汇编语言的时候需要进入dos系统,最方便的就是下载一个dosbox模拟器。
    在这里插入图片描述
    在这样的系统环境下,debug程序可以查看CPU的各种寄存器的内容,内存的情况,还可以用机器指令去跟踪程序的运行等等。

    debug有很多很多命令,本节就介绍一些常用命令,供课堂和考试用。

    二、debug常用命令

    1、r 命令

    r 命令有两个功能,一个是查看寄存器的内容,一个是改变指定寄存器的内容。

    在这里插入图片描述
    我们可以看到很多寄存器的内容,还有代码段cs地址为073F,还有指令寄存器IP里面的0100。
    最后一行还有当前位置073F:0100上的数据0000,如果把它看成指令的话,这个指令是后面的add [bx+si],al。

    而改变寄存器内容的指令则是在r 的后面加上寄存器的名字即可
    在这里插入图片描述
    注:上图有一个比较特殊的地方,如果现在看不懂也没关系,我先解释一下,等以后能理解的再看也可以。
    就是你会发现,AL是不带方括号的,而前面这个BX+SI是加了方括号的,这是为什么呢?
    原因是加了方括号,就类似与c语言的指针一般,代表的不是数值而是地址。意思是以BX+SI的数值作为偏移地址,段地址为DS,从而寻找到该地址下的数值,再和AL相加。而后面这个DS:0000=CD是什么意思呢?
    你看前面的寄存器的内容,BX+SI是不是就是0000,而DS又是数据段的意思,是不是就很容易看出来是显示了一下0000这个地址下的数据是什么,以便于操作者知道是什么和AL相加。
    方括号这种写法意味着一种其他的寻址方式,我后续会再写一篇关于寻址方式的博客,详细讲述一下各种寻址方式的不同,现在只要知道不是所有的寄存器都能加方括号即可。

    r命令修改寄存器内容在很多地方都可以用到,比如我们现在要访问读取或者修改一个地址中的内容,但是IP寄存器(存储偏移地址)不是我们想要的地址,所以我们就要用rip去修改为我们需要的地址。

    2、d命令

    d命令的意思是查看内存中的内容,默认列出预设地址内存处的128个字节的内容,一行16个字节,总共8行

    在这里插入图片描述
    然后接着再用一次d命令的话,就会接着上次的地址去显示:
    在这里插入图片描述

    直接使用d命令,会显示预设值的地方的内存内容,那我们能不能显示想要看的地址呢?

    当然是可以的。

    用法是:
    d 段地址:偏移地址

    在这里插入图片描述
    还有一种用法是:
    d 段地址:偏移地址 结尾偏移地址
    在这里插入图片描述
    比如这个就是显示2000:0000到000a的内容

    3、e命令

    e命令的作用是用来改变内存中的内容。
    用法是:
    e 段地址:偏移地址 数据1 数据2 数据3…
    在这里插入图片描述
    可以看出已经修改成功了。

    那么右边那些小点点又是什么呢?

    它是左边内容对应的ASCII码转换后的东西,比如34对应的就是4,3f对应的就是?

    e命令还有一种用法是:
    e 段地址:偏移地址
    然后会以一种询问的方式一个一个修改
    在这里插入图片描述
    它会依次显示出来原内容是什么,然后输入修改后的数。用空格继续修改,用回车结束修改。

    4、u命令

    u命令可以将内存中的机器指令翻译成汇编指令

    比如说这个例子:
    汇编指令:
    mov ax,0123H
    mov bx,0003H
    mov ax,bx
    add ax,bx
    对应的机器代码为:
    B8 23 01
    BB 03 00
    89 D8
    01 D8

    这时候我们通过三个步骤:
    e 地址 数据 - 写入机器码
    d 地址 - 查看数据
    u 地址 - 查看代码

    在这里插入图片描述
    这里我还是用的2000:0000这个地址。
    可以看到,我先用e命令,把机器码输入到了这个地址中,但通过d命令可以看出来,存储的不知道是数据还是指令,这时候可以用u命令来将其翻译成汇编指令。

    那么这时候可能有人要问了,我们这样写,不还是写的机器代码吗?能不能写汇编代码,pc自己翻译成机器码呢?当然是可以的啦

    5、a命令

    a命令的作用就是以汇编命令的格式在内存中写入机器指令

    这里我们还是用上面那个例子,还是分成三个步骤:
    a 地址 - 写入汇编指令
    d 地址 - 查看数据
    u 地址 - 查看代码

    我们可以先用r命令看一下地址
    在这里插入图片描述
    因为以后写程序的时候,一般也都是存到cs:ip这个地址中去,所以我们这次也存到这里

    在这里插入图片描述
    然后我们用d命令来看一下存入的命令在内存中是怎么样的
    在这里插入图片描述
    可以看到跟对应的机器代码是一样的,意思就是说,机器码到底是指令代码还是普通数据,完全由人类来决定。
    在这里插入图片描述
    那么我们已经学会了如何输入汇编指令,接下来就该研究怎么让输入的汇编指令执行。

    6、t 命令

    t命令的作用就是执行机器指令

    比如我们上面在cs:ip的地方存了很多指令,我们现在要执行他们。

    t默认是单步执行(即每次执行一条指令)
    在这里插入图片描述
    7、q 命令

    q命令就是退出debug

    展开全文
  • 1.什么是Debug? ...4)U命令用来将内存中的机器指令翻译成汇编指令。 5)T命令用来执行一条机器指令。 6)A命令以汇编指令的格式在内存中写入一条机器指令。 等等,Debug的命令比较多,共有20多个
  • 汇编Debug的常用命令

    千次阅读 2022-06-07 15:19:40
    U命令:将内存中的机器指令翻译成汇编指令: T命令:执行一条机器指令; A命令:以汇编指令的格式在内存中写入一条机器指令。 Q命令:退出debug P命令:类似于step over(“t”命令类似于step into),可用于跳...
  • # Debug命令详细总结 链接: [link]...
  • 汇编语言_debug中R/D/E/U/T/A指令的使用

    千次阅读 2021-09-14 21:57:55
    学习汇编语言,用debug编程是必不可少的;这篇文章记录,R命令、D命令、E命令、U命令、T命令和A命令的使用。 安装完DosBox后,debug命令,开始使用。 R命令:查看、改变寄存器d的内容 查看寄存器的内容 目前学习了AX...
  • 汇编语言debug中执行多步指令

    千次阅读 2020-10-31 17:06:37
    在学习汇编语言时,debug的-t指令可以帮我们一条条地执行指令 但是如果要在loop中重复执行或者有很多像跳过的指令部分用-t一条条执行就很费劲了 其实还有另外的指令可以帮我们多步执行 -g 目标偏移地址 可以立即...
  • 汇编语言由三种指令组成: (1)汇编指令:机器码的助记符,有对应的机器码。(核心) (2)伪指令:没有对应的机器码,由编译器执行,没有对应的机器码。 (3)其他符号:如+、-、*、/等,由编译器识别,没有对应的...
  • 汇编语言Debug命令详解 DEBUG的常用命令:A,U,R,T,D,E,Q 等等 汇编语言DEBUG命令详解 R命令的使用 作用:观看和修改寄存器的值。 在提示符“-”下输入以下命令:R。DEBUG将会显示出当前所有寄存器和标志位的...
  • 汇编debug命令以及使用一、debug是什么?二、命令总结 一、debug是什么? 这里的debug是用在调试汇编时使用的。 二、命令 -e 修改指定地址的值 -e 段地址:偏移地址 写入的数据 2000:1000为地址 be为修改的值 ...
  • 在使用这些指令前,需要先输入debug进入调试模式。 1.查看寄存器的值 -r 测试结果: 2.修改寄存器的值 -r targetRegister 测试结果: 3.查看内存内容 -d 默认查看CS:IP地址的内容 查看目的地址的内容 -e ...
  • 汇编语言Debug命令详解 DEBUG的常用命令:A,U,R,T,D,E,Q 等等 汇编语言DEBUG命令详解 文章目录 汇编语言DEBUG命令详解 R命令的使用 H命令的使用 D命令的使用 E命令的使用 F命令的使用 M命令的使用...
  • Dosbox - debug常用指令 1. r指令 【r指令】用于查看和修改寄存器中的值。 1.1 查看寄存器 1.2 修改寄存器中的内容 2. d指令 d 指令用于查看内存中的内容,有三种使用方式 2.1 直接查看 连续输入d,查看的内存范围...
  • 汇编语言跳转指令

    千次阅读 2019-04-07 13:52:22
    跳转指令分三类: 一、无条件跳转: JMP; 二、根据 CX、ECX 寄存器的值跳转: JCXZ(CX 为 0 则跳转)、JECXZ(ECX 为 0 则跳转); 三、根据 EFLAGS 寄存器的标志位跳转, 这个太多了. 根据标志位跳转的指令: JE ;等于则...
  • 手把手教你汇编 Debug

    千次阅读 多人点赞 2021-11-22 10:45:54
    关于汇编的第一篇文章: 爱了爱了,这篇寄存器讲的有点意思 ...使用 Debug 能让我们方便查看 CPU 各种寄存器的值、内存情况,方便我们调试指令、跟踪程序的运行过程。 接下来我们会用到很多 debug 命令,
  • 汇编语言指令金手指,支持查询多种指令。支持搜索指令、伪操作、dos中断、bios中断、高级汇编指令、ascii码表、错误信息、debug信息。
  • 本文主要包含王爽老师汇编语言第一章中Debug的总结与实验一的解释
  • 汇编语言 debug

    2021-02-09 11:11:19
    windows 64位debug执行具体步骤 r命令的使用 e 输入数据(只需要输入首地址) d 段地址:偏移地址 查看内存内容 a输入汇编指令 t单步调试
  • 汇编语言实验 常用的命令
  • 汇编语言Debug的使用

    千次阅读 多人点赞 2019-05-02 16:27:04
    目录 实验1 1.用Debug的R命令查看、改变CPU寄存器的内容 2.用Debug的D命令查看内存中的内容 3.用Debug的E命令改写内存中...用Debug的A命令以汇编指令的形式在内存中写入机器指令 实验2 ...
  • 汇编debug调试指令与解析

    千次阅读 多人点赞 2019-09-04 22:32:24
    二、汇编debug常用指令 指令使用示例(不区分大小写): (1)r指令 比如r 查看cpu寄存器的内容 r ax 修改ax寄存器内容,其他寄存器修改类似。 (2)d指令,查看内存内容 (3)u指令,内存的机器...
  • 汇编语言程序设计课程设计 第一次实验 DEBUG基本命令与数据传输指令;本次实验目的;实验报告的主要内容;本次实验指定的源代码;DEBUG调试工具;DEBUG中数据表示形式与源程序的区别;DEBUG的运行与退出;使用r命令查看...
  • 汇编语言程序设计初步——debug编写调试指令序列,主要对汇编语言指令的需要掌握的基本知识概念进行了总结,同时对指令在存储器内的组织存放结构(存储器分段结构、段寄存器、指令寄存器、通用寄存器、16位地址向20...
  • 汇编程序debug的使用完整使用

    千次阅读 2019-09-09 10:41:42
    关于汇编程序debug的使用完整使用教程-干货满满debug的命令符具体使用流程 ###前言 在网上搜索了10min,大多数关于汇编程序debug功能的使用的文章,发现大多数都是一样的,只是简单的介绍了debug的一些命令符之类的...
  • 汇编语言指令的用法和含义,有debug调试下个个命令的作用,由此东西,遇到汇编语言就不用愁了

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 22,033
精华内容 8,813
关键字:

汇编语言debug指令

友情链接: ZigBeeHONGWAI.rar