debug命令参考

debug命令用于调试汇编语言程序,能使用户接触到计算机内部,允许用户直接观察和修改CPU的寄存器;能观察、修改内存单元;允许直接输入机器指令并单步执行;能反汇编程序。概述讲,debug是观察和了解计算机内部运行情况的有利助手。

1 输入debug命令
在win7的命令行中输入debug,就进入到虚拟8086的执行环境了。也可以输入debug + 程序名字,这就是对某个程序进行调试。

2 r(register)命令
从名字可以看出是对寄存器操作的命令,此指令有两个功能:一是显示所以寄存器和标记的内容,二是修改寄存器的内容。只输入r来显示寄存器的内容:


debug总共显示3行,最底下一行是debug正要执行的命令,即cs:ip指向的命令。第一行和第二行显示了各个寄存器的值,其中第二行的最后表示的是标志寄存器中的值,从左到右分别为:溢出标志:ov(溢出),nv(未溢出);方向标志:dn(减),up(曾);中断标志:ei(启用),di(禁用);正负标志:ng(负),pl(正);零标志:zr(为零),nz(不为0);辅助进位标志:ac(进位),na(未进位);奇偶校验标志:pe(偶校验),po(奇校验);进位标志:cy(进位),nc(未进位)。
如果想修改某个寄存器的值,直接在r后面加上要修改寄存器的名字,如:r ax ,然后回车并输入修改的值再回车就可以了。


从上图可以看出ax的值确实改变了,不但可以改变ax的值,其它寄存器的值都可以改变,包括cs,ip的值,这是在汇编程序中所做不到的。
3 d(dump)命令查看内存中的信息
如果想知道10000h内存中的信息,可以用”d 段地址:段偏移地址“来查看:


使用”d 段地址:段偏移地址“的格式,debug会列出从指定内存单元开始的128个内存单元的内容。如上图所示,在使用d 1000:0 后,debug列出了1000:0-1000:7f中的内容。
在使用”d 段地址:段偏移地址“之后,接着使用d命令,可列出后续的内容,如下图所示:


也可以用指定d命令的查看范围,此时采用”d 段起始地址:起始偏移地址 结尾偏移地址“的格式。比如要查看1000:0-1000:9中的内容,可以用“d 1000:0 9”实现,如下图所示:


4 e(edit)命令改写内存中的内容
可以用“e 起始地址 数据 数据 数据...”的格式来修改从起始地址开始的内存中的内容。比如修改10000h开始的10个单元的内容,如下图:


也可以用e命令以提问的方式来逐个地修改从某一地址开始的内存单元中的内容,以从1000:10单元开始为例,步骤如下:
输入e 1000:10,按enter键
debug显示起始地址1000:0010,和第一个单元的原始内容:00,然后光标停在“.”后面提示输入想要写入的数据,此时有两种选择:一是输入数据,然后按空格键,即输入数据修改当前的内存单元;二位不输入数据,直接按空格键,则不对当前内存单元进行改写。
当前单元处理完后(不论改写或者没有改写,只要按了空格键,就表示处理完成),debug将显示下一个内存单元的原始内容,并提示修改。
所以希望改写的内存单元改写完成后,按enter键,e命令操作结束。
如下图所示:


也可以用e命令向内存单元写入字符串,比如用e命令从内存1000:0开始写入:1、“a+b”、2、“c++”、‘3’、“IBM”,如下图所示:


5 用u(un-assembly)来反汇编机器码
我们首先用e命令从内存1000:0单元开始写入这样一段机器码:
机器码 对应汇编指令
b80100 mov ax, 0001
b90200 mov cs, 0002
01c8   add ax, cx
然后用u命令反汇编出这段内存中的汇编命令,如下图所示:


6 t(trace)单步调试命令
每输入一个t,debug就执行一条指令,然后停下了显示所有寄存器的内容。如下图所示:


7 a(assembly)命令以汇编指令形式写指令到内存中
前面说过可以用e命令写入机器码,但这样很不方便,必须记住机器码才行,而a命令以汇编形式写入就方便多了,“a 起始地址“表示将汇编指令写入某个地址中,如下图:


  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值