1.关于debug
debug是dos、windows提供的实模式程序调试工具;
作用:查看cpu各寄存器的内容、内存情况、在机器码级别追踪程序的运行;
命令:
debug
参数:
    r    ->查看、改变cpu寄存器的内容;
    d    ->查看内存中的内容;
    e    ->修改内存中的内容;
    u    ->将内存中的机器指令翻译成汇编指令;
    t    ->执行一条机器指令;
    a    ->以汇编的格式在内存中写入一条机器指令;
 
2.用r查看、改变cpu寄存器的内容
1)查看cpu寄存器内容
输入命令 debug 进入debug模式
debug
输入参数 r
r
结果:
如上图所示;
可以看到各寄存器对应的值,例如:ax的值为0000、bx的值也是0000;
0740:1000 0000 ;表示cs:ip当前所指向的内存单元地址为0740:1000,该内存单元存放的机器码为0000;对应的汇编指令是 ADD [BX+SI],AL;
 
2)修改寄存器内容
例如:想要将cs:ip指向1000:0;
需要将cs的值改为1000H,ip的值改为0H;
命令:r 待修改的寄存器,enter键确定
r cs
会显示该寄存器的当前值,在冒号“:”后面输入新值即可,然后enter键确定;
ip修改也一样;
如上图所示:修改完成后输入r查看,cs:ip被修改为1000:0;
 
3.用d查看内存信息
1)默认查看
命令:
debug
参数:
d
结果:
参数d后面不加 段地址:偏移地址 ,显示默认地址的内存信息;
每次显示128个内存单元的信息;
分为3部分;左边是内存单元的起始地址;中间是每个内存单元的值;右边是内存单元值对于的ASCII码信息,例如46表示F,74表示t;
 
2)查看特定地址的内存
命令:
debug
参数:d 段地址:偏移地址
d 1000:0
结果:
可以看到,查看的是指定地址的内存信息;
如果再接着输入d,显示后续地址的内存信息,如上图所示,直接输入d显示的是从1000:80开始的内存信息,紧接上一次查询的地址;
 
3)范围查询
参数:d 段地址:偏移地址 结束偏移地址
d 1000:0 8
结果:
 
4.用e改写内存中的内容
1)一起修改
参数:e 段地址:偏移地址 内容1 内容2 ...
例如:将1000:0处开始修改内存信息为 123iLoveC++
e 1000:0 1 2 3 'i' "Love" "C++"
 
2)逐一修改
参数:e 段地址:偏移地址
会从目标地址开始依次显示每一个内存单元的值;
如果需要修改则输入修改的值,空格键确认;不需修改直接按空格键;
修改完成后enter键;
例如:从1000:10处开始修改内存信息为 123i
 
5.用u翻译内存中的内容为汇编指令
参数:u 段地址:偏移地址
u 2000:0
结果:
可以看到,内存中的机器码被翻译成了汇编指令;
 
6.用t执行指令
参数:t
如果要执行目标指令,需要将cs:ip执行目标指令的起始地址;
一次只执行一条指令,如需执行下一条指令需再次输入t;
例如:执行2000:0处的指令;
    将cs设为2000;    ->r cs
    将ip设为0;    ->r ip
    执行第一条指令    ->t
    执行第二条指令    ->t
可以看到执行了两条指令;
分别是修改寄存器ax和bx的值;
 
7.用a以汇编指令的形式修改内存
参数:a 段地址:偏移地址
从目标地址开始将编辑的汇编指令写入内存;
输入汇编指令 enter键确认;
不输入直接按enter键结束编辑;
a 3000:0
结果:
 
8.用段寄存器作段地址
用debug的d命令查看内存信息时命令为:d 段地址:偏移地址;
例如:d 1000:0 用来查看从1000:0开始的内存信息;
如果想查看段寄存器ds所指向的地址:d ds:偏移地址;
具体操作如图:
段寄存器cs、ss也可以这样用;
    d cs:偏移地址    ->查看代码段的信息;
    d ss:偏移地址    ->查看栈段的信息;
其他命令:E、A、U中也可以使用段寄存器;
例如:编辑数据段命令 
e ds:0
 
 
 

debug的基本用法的更多相关文章

  1. Debug.print的用法

    使用Debug.print可以用来更好的调试VBA程序 通过ALT+F11代开VBA编程窗口) 插入模块,接着在窗口中输入以下代码,按F5执行 Sub Excute() Debug.Print * + ...

  2. 关于debug.keystore文件用法以及错误处理

    在开发过程中需要频繁的为测试的同事签名apk,非常很麻烦,把默认debug.keystore文件替换成发布用(生产环境)的签名文件,不用频繁地签名apk文件了.      如果直接使用生产keysto ...

  3. Debug过程中的mock (及display窗口的使用)

    转载:http://m.blog.csdn.net/blog/u012516903/18004965 在debug的时候,有3个地方可以进行mock测试 测试代码如下: 1.使用display窗口 W ...

  4. perl debug

    1. 进入debug模式 # perl -d ./perl_debugger.pl it prompts, DB<1>   2. 查看从第10行开始的代码. 查看函数get_pattern ...

  5. 手把手教你汇编 Debug

    关于汇编的第一篇文章: 爱了爱了,这篇寄存器讲的有点意思 Hello大家好,我是程序员cxuan!我们上篇文章了解了一下基本的寄存器,这篇文章我们来进行实际操作一下. 原文链接:手把手教你汇编 Deb ...

  6. Linux下Awk详解(转载)

    什么是Awk Awk是一种小巧的编程语言及命令行工具.(其名称得自于它的创始人Alfred Aho.Peter Weinberger 和 Brian Kernighan姓氏的首个字母).它非常适合服务 ...

  7. Force.com微信开发系列(二)用户消息处理

    Force.com是国际知名的云平台公司,成功配置好Force.com作为微信公开号的服务端后,接下来需要的任务是处理用户发送的消息.当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML ...

  8. Python 第五篇(下):系统标准模块(shutil、logging、shelve、configparser、subprocess、xml、yaml、自定义模块)

    目录: shutil logging模块 shelve configparser subprocess xml处理 yaml处理 自定义模块 一,系统标准模块: 1.shutil:是一种高层次的文件操 ...

  9. Perl的调试方法

    来源: http://my.oschina.net/alphajay/blog/52172 http://www.cnblogs.com/baiyanhuang/archive/2009/11/09/ ...

随机推荐

  1. POSTGRESQL日期函数大全

    一:各个数据中的连接符 SqlServer的连接符:+(加号) Sqlite的连接符:.(点) PostgreSQL的连接符:||(或) 二: 今天在PostgreSQL计算日期的时候,翻了一些资料, ...

  2. Win32汇编常用算数指令

    汇编语言(assembly language)是一种用于电子计算机.微处理器.微控制器或其他可编程器件的低级语言,亦称为符号语言.在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地 ...

  3. vue 换肤

    /* eslint-disable */ // 设置文件 import setting from "@/setting.js"; const themeList = setting ...

  4. [C#]使用BackgroudWorker刷新UI延迟的解决方法

    今天使用BackgroundWorker刷新UI发生延时现象,找了好久才发现AutoResetEvent可以解决,代码如下 private void BgWorker_ProgressChanged( ...

  5. C# 定义热键

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  6. Oracle学习笔记:一个简单的行转列例子

    一个简单的行列转换例子,原始数据. create table temp_cwh_student ( name ), subject ), score ) ) select * from temp_cw ...

  7. 这不是javascript:什么?

    javascript协议.<a href=“javascript:void(0):”>xxx</a>基于事件的事件,例如:<input onblur=“check():” ...

  8. httpclient 上传附件实例

    httpclient 单附件上传实例  (扩展多附件上传实例,点我) /** * 上传附件 * @param host * @param uri * @param filePath 文件路径 * @p ...

  9. 从无建立一个vue项目

    node.js安装 首先安装Node,官网地址 :https://nodejs.org/en/download/ ,进去下载关于符合自己电脑的下载. 具体的Node安装步骤参考地址: https:// ...

  10. & 位运算总结

    一.& 与  a & -a : 可以计算出 a 的二进制形式的第一个 1 出现的位置. eg: 6 & -6 = 0110 & 1010 = 0010