汇编语言学习笔记05——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

  • 4
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值