1、什么是Debug?

Debug是DOS、Windows都提供的实模式(8086方式)程序的调试工具。使用它,可以查看CPU各种寄存器的内容、内存的情况和在机器码级跟踪程序的运行。

我用的是Mac机器,先下载DOS-BOXmasm5

1)将masm5文件夹放到某个目录下,例如用户目录~下面

2)双击打来DOSBox

3)挂载,输入mount c:  ~/masm5命令,其中~/masm5是第一步中masm5文件夹的实际位置。

4)输入c:

5)输入Debug就可以使用了。

2、Debug的功能

1)用Debug的R命令查看、改变CPU寄存器的内容;

输入r,Enter后能看到寄存器中的值

输入r+空格+寄存器名,Enter后,出现":"作为输入提示,在后面输入要写入的数据,Enter后完成修改

2)用Debug的D命令查看内存中的内容;

输入d+空格+段地址值+":"+偏移地址,Enter后查看内存数据,Debug会列出128个内存单元的内容,如d 1000:9

输入d+空格+段地址值+":"+起始偏移地址+空格+结尾偏移地址,Enter后查看内存数据,Debug会列出对应区域的内存单元的内容,如d 1000:0 9

d+空格+ds+":"+偏移地址

3)用Debug的E命令改写内存中的内容;

"e+空格+起始地址+空格+数据+空格+数据+空格 ..."改写对应内存中的内容

可以用E命令向内存中写入字符,例如用E命令从内存1000:0开始写入数值1、字符a、数值2、字符b、数值3、字符c

-e 1000:0 1 'a' 2 'b' 3 'c'  ,其中-表示光标

"e+空格+ds+":"+偏移地址+空格+数据+空格+数据+空格 ..."  (内存单元地址前可以直接使用ds段寄存器名字,而不再是常数值)

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

U+空格+段地址值+":"+偏移地址, 将对应内存中的机器指令翻译成汇编指令

U+空格+ds+":"+偏移地址

5)用Debug的T命令执行一条机器指令;

注意:int 21指令需要使用P命令执行。

6)用Debug的A命令以汇编指令的格式在内存中写入一条机器指令;

a+空格+段地址值+偏移地址,然后可以在对应的内存中写入汇编指令

a+空格+ds+偏移地址

7)使用Q命令退出Debug

8)g命令用来调试循环里面的代码

g+空格+偏移地址: 使Debug从当前的CS:IP指向的指令执行,一直到(IP)=偏移地址位置。

9)p命令用来将所有的循环一次走完

Debug的使用的更多相关文章

  1. jmeter sampler maven项目排错记

    eclipse 创建的maven项目,引入jar包之后出现红色叹号,一直找不到原因,连main方法都无法运行,提示找不到类: 错误: 找不到或无法加载主类 soapsampler.SoapSample ...

  2. 记一次debug记录:Uncaught SyntaxError: Unexpected token ILLEGAL

    在使用FIS3搭建项目的时候,遇到了一些问题,这里记录下. 这里是发布搭建代码: // 代码发布时 fis.media('qa') .match('*.{js,css,png}', { useHash ...

  3. .NET Core的日志[3]:将日志写入Debug窗口

    定义在NuGet包"Microsoft.Extensions.Logging.Debug"中的DebugLogger会直接调用Debug的WriteLine方法来写入分发给它的日志 ...

  4. 设置tomcat远程debug

    查看端口占用情况命令: netstat -tunlp |grep 8000 tomcat 启动远程debug: startup.sh 中的最后一行 exec "$PRGDIR"/& ...

  5. Android NDK debug 方法

    最近又频繁遇到 NDK 的错误,记录一下debug调试的一些经验,以备后续查看 一般来说,在Android Studio中的Monitor中将过滤器的 LOG TAG 设置为 "DEBUG& ...

  6. 玩转Windows服务系列——Debug、Release版本的注册和卸载,及其原理

    Windows服务Debug版本 注册 Services.exe -regserver 卸载 Services.exe -unregserver Windows服务Release版本 注册 Servi ...

  7. struts debug 标签

    < s:debug> 引起下面的错误 org.apache.jasper.JasperException: Caught an exception while getting the pr ...

  8. How to debug .NET Core RC2 app with Visual Studio Code on Windows?

    Simone Chiaretta (http://codeclimber.net.nz/archive/2016/05/20/How-to-debug-NET-Core-RC2-app-with-Vi ...

  9. Debug Databinding Issues in WPF

    DataBinding is one of the most powerful features in WPF. But because it resolves the bindings at run ...

  10. Debug JDK变量显形

    本文面向的朋友 本文主要说明在使用Eclipse Debug JDK时,看不到变量值的解决办法. 如果您看到上面绿色字体表示不敢兴趣,请一定果断back,如果您不爽,请在下面使劲的拍. Debug J ...

随机推荐

  1. Raft算法和Gossip协议

    简单介绍下集群数据同步,集群监控用到的两种常见算法. Raft算法 raft 集群中的每个节点都可以根据集群运行的情况在三种状态间切换:follower, candidate 与 leader.lea ...

  2. Raft 为什么是更易理解的分布式一致性算法(转)

    一致性问题可以算是分布式领域的一个圣殿级问题了,关于它的研究可以回溯到几十年前. 拜占庭将军问题 Leslie Lamport 在三十多年前发表的论文<拜占庭将军问题>(参考[1]). 拜 ...

  3. Mac下如何安装WebStorm + 破解

    1.官网下载       下载地址   选择好系统版本以后,点击DOWNLOAD        2.安装 双击下载好的安装包.将WebStromt拖入application文件夹,然后在Launchp ...

  4. 关于三层(dao,serviece,servlet)

    在登陆校验中, dao:返回的是resultset 对象,就是  ps.executeQuery(需要强化的是jdbc的具体的流程) 其中的数据库连接时可以自己写 可以通过工厂类 可以通过数据库的连接 ...

  5. winform中datagridview刷新后的排序记忆

    datagridview先点标题排序,但是重新刷新之后,还是变成窗体加载后的样子 我这里用定时器刷新的. 1.先定义三个全局变量 /// <summary> /// 需要排序的列和方向 / ...

  6. 使用Python抓取猫眼近10万条评论并分析

    <一出好戏>讲述人性,使用Python抓取猫眼近10万条评论并分析,一起揭秘“这出好戏”到底如何? 黄渤首次导演的电影<一出好戏>自8月10日在全国上映,至今已有10天,其主演 ...

  7. 使用tf.print()打印tensor内容

    使用tf.Print()打印tensor内容,这是tensorflow中调试bug的一个手段,例子如下所示: import tensorflow as tf a = tf.Variable(tf.ra ...

  8. vue -- 九宫格抽奖

    html: <div class="line_item" :class="index == 1 ? 'active' : 'white_item'"> ...

  9. grabcut 分割 Rect

    #include "opencv2/opencv.hpp" using namespace cv; void main() { Mat src = imread("E:\ ...

  10. 魅族手机USB调试无法打开、log无法打印

    MEIZU 在打开usb调试允许时,总提示:because an app is oobscuring a premision request, Setting can't verify your re ...