8086 DEBUG调试 学习笔记

在8086汇编中DEBUG是个非常实用的工具,并且可以非常明了的查看每一步指令每一个段的相对状态,有利于学习。下面列举一下DEBUG的一些使用方法:

1.-A

         使用了A选项就可以开始在相应位置写代码了,其中后面可以接一个地址,表示写的位置,从下图可以看到,A后加参数2000,即从段偏移2000的位置开始存放代码。


2.-C

    

-c [add1]L[length] [add2] 是将add1和add2开始的length个数据显示出来,进行比较,由上图可以看到,第二列显示的是0050-006F的数据内容,第三列显示的是0010-011F的数据内容,而长度为20。非常直观的显示了数据。

3.-D

         -d选项的作用是显示存储空间中的内容。

         如上所示,0200中本来是空的,通过a命令写进代码后再次查看可以发现里面存放了新的操作码。

         另外还可以通过指示明确段和偏移直接查询特定位置的内容。(如cs:200)

4.-E

         通过-E修改特定存储空间中的内容:

        

         也可以通过连续输入的方式更改连续的一片内容:

        

5.-F

         指令用于填充一段存储单元,但是要注意他的格式把段地址和段偏移要写清楚如下图所示,L10表示填充的长度是10 后面加填充的内容,通过两个命令可以发现,如果填充的内容我只写了n个而填充的长度我写了m个(n<m)则会顺序循环的自动填充。


6.-G

         这个命令使用不当会导致系统崩溃使用方法为:G[=address],代表从当前cs:ip所指的位置执行到address处.

如图所示,我执行cs:200-cs:210的程序,结果如上。

7.-H

 

         这个选项比较简单,即输入两个参数,对这两个参数进行加减运算,把想加的结果显示在第一列,相减的结果放在第二列,其中我们可以看到,当减为负数时候是以补码的形式表示的。

8.-I

         从某一端口输入并显示一个字节,后面的参数接端口号。

9.-L

         发现L命令并不能使用,查阅了资料,dos下运行debug时,涉及到直接写硬盘扇区的操作都是被禁止的,这是windows的保护功能。如果想要运行全部debug命令,必须在实模式dos下运行。

10.-M

         cs:200中的内容如上所示,使用-M命令是把cs中的一段内容移动到内存单元中,这里默认指的就是DS段。如图所示我将cs中200-210之间的内容移动到DS:500中

可以看到已经成功移动了。

11.-N

         用于对文件命名,-n[name]。

12.-O

         用于给端口发送数据, 如图,向2F8端口发送数据4F。

13.-Q

         使用Q命令来退出debug调试

14.-R

         R命令是个非常方便的命令,它可以查看和修改8086中寄存器的值。使用-R可以直接查看所有的寄存器,使用 -R+[指定寄存器] 可以实现对某个寄存器的修改,如上图所示,已经成功修改了AX中的值。其中使用-R F可以查看标志寄存器的状态如图所示,它不是单纯的0和1不太好记,可以查实验书来对照,可以看到当前寄存器属于:未溢出、方向正、允许中断、符号为正、不是0、没有辅助进位、奇、没有进位的状态。


15.-S

         用于搜索指定位置中的字符,如图所示我搜索CS:200到210中58和F7在哪里,返回的是精确的地址,特别我注意了这一段中有多个F7,我就进行了实验看看是返回第一个还是全能返回,结果如下,其中所有的F7的地址全部被返回。

16.-T

         cs:0200到0210是我事先写好的几个简单的指令,我使用R命令将ip修改到0200后,使用T进行单步调试,一步一步的执行,每个过程中寄存器的状态一目了然。

其中还可以使用-T 5来指明连续调试五次,它会将五次的结果全部显示在这里,如下图所示

17.-U

         u命令是反汇编指令,可以将存在内存中的机器码反编译成汇编语言,其中一个参数是起始地址,如上图所示,显示了从cs:200开始的反编译结果。

18.W命令

         一直没调试成功,原因应该和L命令相同,windows为了保护硬盘,并不允许在这种情况下使用此命令。

19.注

         通过学习可以发现立即数在使用时候默认为16进制,并且不需要加H,末尾加H反而会报错,并且debug中并不区分大小写。

        emu8086也是一个非常好的调试软件,操作简单方便网上就可以下载。。

        debug在CMD中打不开是因为windows版本过高,可以下载dosbox在其中运行调试

 

发布了9 篇原创文章 · 获赞 50 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/qq_35624030/article/details/80776963