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. Sonya and Exhibition 1004B

    B. Sonya and Exhibition time limit per test 1 second memory limit per test 256 megabytes input stand ...

  2. 转: jquery.qrcode.js生成二维码插件&转成图片格式

    原文地址: https://blog.csdn.net/u011127019/article/details/51226104 1.qrcode其实是通过使用jQuery实现图形渲染,画图,支持can ...

  3. 使用karma做多浏览器的UI测试

    avalon1.6开发得差不多,这次使用先进的开发理念进行开发,比如模块化,单元测试什么... ui测试是重要的一环,之前用阿里的totoro,但打开浏览器不方便.于是从webdrieverio, n ...

  4. LeetCode OJ 56. Merge Intervals

    题目 Given a collection of intervals, merge all overlapping intervals. For example, Given [1,3],[2,6], ...

  5. eclipse 关于*.properties 文件 中文显示为Unicode,无法显示中文的问题(Properties Editor)

    一.以下为在线安装Properties Editor的过程1.在eclipse下 "帮助"(help)--- 2.Install New Software3.Add4.Name:P ...

  6. servlet(1)request常用方法

    HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,开发人员通过这个对象的方法,可以获得客户这些信息. req ...

  7. PowerDesigner 修改table背景色

    Tools->Display Preferences(显示参数选择)->Format->Table->Modify->Fill->Fill color 出处:htt ...

  8. redis滴

    Redis 可用于内存存储,也可以基于持久化存储 Key-Value的形式存储. Redis的数据结构 1.字符串(string) 2.字符串列表(lists) 3.字符串集合(sets) 4.有序字 ...

  9. sse实例

    一.前台 <script>//D:\wamp\www\node\xiangmuer\views\main // var source = new EventSource('http://1 ...

  10. maven打包报错:Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.5:test

    mvn package的时候报如下错误: Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.5:test ...