Debug的使用
1、什么是Debug?
Debug是DOS、Windows都提供的实模式(8086方式)程序的调试工具。使用它,可以查看CPU各种寄存器的内容、内存的情况和在机器码级跟踪程序的运行。
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的使用的更多相关文章
- jmeter sampler maven项目排错记
eclipse 创建的maven项目,引入jar包之后出现红色叹号,一直找不到原因,连main方法都无法运行,提示找不到类: 错误: 找不到或无法加载主类 soapsampler.SoapSample ...
- 记一次debug记录:Uncaught SyntaxError: Unexpected token ILLEGAL
在使用FIS3搭建项目的时候,遇到了一些问题,这里记录下. 这里是发布搭建代码: // 代码发布时 fis.media('qa') .match('*.{js,css,png}', { useHash ...
- .NET Core的日志[3]:将日志写入Debug窗口
定义在NuGet包"Microsoft.Extensions.Logging.Debug"中的DebugLogger会直接调用Debug的WriteLine方法来写入分发给它的日志 ...
- 设置tomcat远程debug
查看端口占用情况命令: netstat -tunlp |grep 8000 tomcat 启动远程debug: startup.sh 中的最后一行 exec "$PRGDIR"/& ...
- Android NDK debug 方法
最近又频繁遇到 NDK 的错误,记录一下debug调试的一些经验,以备后续查看 一般来说,在Android Studio中的Monitor中将过滤器的 LOG TAG 设置为 "DEBUG& ...
- 玩转Windows服务系列——Debug、Release版本的注册和卸载,及其原理
Windows服务Debug版本 注册 Services.exe -regserver 卸载 Services.exe -unregserver Windows服务Release版本 注册 Servi ...
- struts debug 标签
< s:debug> 引起下面的错误 org.apache.jasper.JasperException: Caught an exception while getting the pr ...
- 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 ...
- Debug Databinding Issues in WPF
DataBinding is one of the most powerful features in WPF. But because it resolves the bindings at run ...
- Debug JDK变量显形
本文面向的朋友 本文主要说明在使用Eclipse Debug JDK时,看不到变量值的解决办法. 如果您看到上面绿色字体表示不敢兴趣,请一定果断back,如果您不爽,请在下面使劲的拍. Debug J ...
随机推荐
- Raft算法和Gossip协议
简单介绍下集群数据同步,集群监控用到的两种常见算法. Raft算法 raft 集群中的每个节点都可以根据集群运行的情况在三种状态间切换:follower, candidate 与 leader.lea ...
- Raft 为什么是更易理解的分布式一致性算法(转)
一致性问题可以算是分布式领域的一个圣殿级问题了,关于它的研究可以回溯到几十年前. 拜占庭将军问题 Leslie Lamport 在三十多年前发表的论文<拜占庭将军问题>(参考[1]). 拜 ...
- Mac下如何安装WebStorm + 破解
1.官网下载 下载地址 选择好系统版本以后,点击DOWNLOAD 2.安装 双击下载好的安装包.将WebStromt拖入application文件夹,然后在Launchp ...
- 关于三层(dao,serviece,servlet)
在登陆校验中, dao:返回的是resultset 对象,就是 ps.executeQuery(需要强化的是jdbc的具体的流程) 其中的数据库连接时可以自己写 可以通过工厂类 可以通过数据库的连接 ...
- winform中datagridview刷新后的排序记忆
datagridview先点标题排序,但是重新刷新之后,还是变成窗体加载后的样子 我这里用定时器刷新的. 1.先定义三个全局变量 /// <summary> /// 需要排序的列和方向 / ...
- 使用Python抓取猫眼近10万条评论并分析
<一出好戏>讲述人性,使用Python抓取猫眼近10万条评论并分析,一起揭秘“这出好戏”到底如何? 黄渤首次导演的电影<一出好戏>自8月10日在全国上映,至今已有10天,其主演 ...
- 使用tf.print()打印tensor内容
使用tf.Print()打印tensor内容,这是tensorflow中调试bug的一个手段,例子如下所示: import tensorflow as tf a = tf.Variable(tf.ra ...
- vue -- 九宫格抽奖
html: <div class="line_item" :class="index == 1 ? 'active' : 'white_item'"> ...
- grabcut 分割 Rect
#include "opencv2/opencv.hpp" using namespace cv; void main() { Mat src = imread("E:\ ...
- 魅族手机USB调试无法打开、log无法打印
MEIZU 在打开usb调试允许时,总提示:because an app is oobscuring a premision request, Setting can't verify your re ...