zoukankan      html  css  js  c++  java
  • debug的使用

    使用方法

    打开DOSBox,首先对工作目录做一个挂载

    mount c: d:asm

    然后进入虚拟目录c:

    最后直接输入debug

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

    R-查看寄存器的内容

    前面有个“-”,这是debug的提示符

    直接输入r,即可查看寄存器的值

     R 寄存器名-修改寄存器的值

    例如输入r ax,首先出现的是AX 0000,表名AX寄存器当前的值是0000,

    而下面那一行出现了一个:,在这个地方直接输入你想要更改的数值,例如FFFF

    再次使用r命令查看,可以看到AX寄存器的值已变为了FFFF

     

     PS:r ax和rax,中间有没有空格都是一样的

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

    D-列出预设地址内存处的128字节的内容

    接着输入d,还可以看到再往后面的128字节的内容,每一行是16个字节,总共是8行

    D 段地址:偏移地址-列出内存中指定地址处的内容

    以d 2000:0000为例

    D 段地址:偏移地址 结尾偏移地址-列出内存中指定地址范围内的内容

    以d 2000:0 4f和d 2000:0 f为例

    E命令改变内存中的内容

    e 段地址:偏移地址 数据1 数据2 数据3 ...

    以e 2000:0000 65 66 67 68 69 70为例

    可以看到右侧其实也就是左侧的十六进制对应的ASCII字符

     e 段地址:偏移地址-询问式修改

    ①首先e 段地址:偏移地址,回车

    ②然后自动弹出了给定地址后第一个字节的值,此时可以输入自己想要更改的值,

    ③如果要继续修改,就按空格,重复上一步的操作

    ④如果修改结束,可按回车

    例如,我们想把2000:0000后面的六个字节的内容变为abcdef

    U命令将内存中的机器指令翻译成汇编指令

    为了验证u命令,首先要使用e命令将机器指令写入内存

    e 2000:0 b8 23 01 b8 03 00 89 d8 01 d8

    然后使用d命令查看2000:0后16个字节的内容,确认输入无误,d 2000:0 f

    使用u 2000:0将内存中的机器指令翻译成汇编指令

    通过这个例子我们可以直观的看到,在内存中指令和数据没有什么区别,都只是数字而已

    A命令以汇编语言的格式在内存中写入机器指令

    首先用r命令查看寄存器中的内容

    然后用a命令,a 073f:100,回车

    回车后输入汇编指令,

    每输入一行指令就回车。输入完毕的那次回车两下。

    可以通过d命令查看内存中的机器指令

    可以使用u命令来查看代码

    T命令执行机器机器指令

    直接输入t,执行CS:IP处的指令

     Q命令退出debug

     

     

  • 相关阅读:
    fgets()函数读取键盘,去掉换行符或丢弃多余的字符
    c语言gets()函数与它的替代者fgets()函数
    基于京东手机销售数据用回归决策树预测价格
    「我去,这也能行!」令人惊叹的8个深度学习应用
    常见数据结构的 Python 实现(建议收藏)
    60 分钟极速入门 PyTorch
    大牛推荐的15本学习数据分析挖掘的好书
    排名前20的网页爬虫工具
    如何11 周打造全能Python工程师!
    初学者的编程自学指南
  • 原文地址:https://www.cnblogs.com/cyx-b/p/12730119.html
Copyright © 2011-2022 走看看