zoukankan      html  css  js  c++  java
  • 汇编 | 8086 DEBUG调试学习笔记

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

    1. -A:可以开始在相应位置编写代码,其中后面可以接一个地址,表示写的位置;从下图可以看到,A后加参数2000,即从段偏移2000的位置开始存放代码。

    2. -C

      -c [add1]L[length] [add2] 是将add1和add2开始的length个数据显示出来,进行比较;

      下图键入:-C 50L20 100 第二列显示的是0050-006F的数据内容,第三列显示的是0010-011F的数据内容,而长度为20。非常直观的显示了数据。

    3. -D:显示存储空间中的内容。

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

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

    4. -E:修改特定存储空间中的内容

      -E 100
      073F:0100 B8.12
      

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

    5. -F:用于填充一段存储单元,但是要注意他的格式把段地址和段偏移要写清楚

      如下图所示,L10表示填充的长度是10 后面加填充的内容,通过两个命令可以发现,如果填充的内容我只写了 \(n\) 个而填充的长度我写了\(m\)个(\(n<m\) )则会顺序循环的自动填充。

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

      技巧:先用 -U 查看部分指令内容,然后用 -G 快速执行内容

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

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

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

    10. -M:把 \(cs\) 中的一段内容移动到内存单元中,这里默认指的就是 \(DS\) 段。

    11. -N:用于对文件命名,-n[name]。

    12. -O: 用于给端口发送数据,

      ; 向2F8端口发送数据4F
      -O 2F8 4F
      
    13. -Q :使用Q命令来退出debug调试

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

    15. -F:用于搜索指定位置中的字符,返回的是精确的地址

    16. -T:单步调试

    17. -U:反汇编指令,可以将存在内存中的机器码反编译成汇编语言,其中一个参数是起始地址

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

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

    emu8086也是一个非常好的调试软件,操作简单方便网上就可以下载。。
    debug在CMD中打不开是因为windows版本过高,可以下载 Dosbox 在其中运行调试


    Tips:时间会解决一切
  • 相关阅读:
    编译错误
    __attribute__
    strcmp-sse2-unaligned.S: No such file or directory.
    boost多线程编译出错
    QByteArray与QString的互相转换
    ffplay播放黑广播的声音
    ./configure详解
    linux发行版安装vmci.sys版本错误
    linux命令
    open函数的打开标志所在文件
  • 原文地址:https://www.cnblogs.com/RioTian/p/15549059.html
Copyright © 2011-2022 走看看