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. C语言复习: 二级指针和多级指针

    二级指针内存模型建立 void main2() {     int i = 0;       //指针数组     char * p1[] = { "123", "456 ...

  2. 跨域(二)——WebSocket

    严格地说,WebSocket技术不属于HTML5,这个技术是对HTTP无状态连接的一种革新,本质就是一种持久性socket连接,在浏览器客户端通过javascript进行初始化连接后,就可以监听相关的 ...

  3. 测试Array对象的sort方法的作用。将1985,1970,1999,1998,2000,1963这些年份按升序输出。

    <script type="text/javascript">var years = new Array(1985,1970,1999,1998,2000,1963); ...

  4. 关于jsp基本语法:第一章节

    今天我学习了关于JSP基本语法的一些知识点. JSP全名是 Java server pages,其根本是一个简化的Servlet设计,实现了在java当中使用HTML标签.JSP是一种动态网页技术,标 ...

  5. js高级-作用域链

    作用域链存放的就是 VO  AO 参数 变量 等

  6. ASP.NET 散碎知识

    1.按钮点击打开一个新的Web窗体,可在按钮点击事件里面写:Response.Redirect("窗体的名字.aspx"); 2.复合控件: CheckBoxList - 复选框组 ...

  7. Recycleview 横竖屏

    看到了一篇贴子:https://blog.csdn.net/yaosongqwe/article/details/48710375 //竖屏线性展示 mLlayoutmanager = new Lin ...

  8. js 事件event

    var EventUtil = { addHandler: function(element,type,handler){ if(element.addEventListener){ element. ...

  9. MVC004之页面引用命名空间

    描述:在控制器中返回了一个ViewData["currUser"] 给view,ViewData["currUser"]为 Greatwall.Hr.Bll.H ...

  10. weechat 常用指令

    添加服务器: /server add freenode irc.freenode.org 设置nick: /set irc.server.freenode.nicks "mynick,myn ...