【新书推荐】5.1.3 debug.exe调试器

启动DEBUG

debug [文件标识符[参数表]]

C>debug

C>debug HELLO.EXE

退出DEBUG

DEBUG提示符:Q

常用命令:

● r命令:查看或者改变CPU寄存器的内容。

    查看寄存器:r 如图5-9所示。

    改变某个寄存器内容:r 寄存器(如:ax),之后按下Enter出现“:”,再输入值。

【新书推荐】5.1.3 debug.exe调试器_第1张图片

图5-9 debug调试r命令

  • d命令:查看某段内存内容,如图5-10所示。

    查看内存内容:d 段地址:偏移地址 (结束的偏移地址,可忽略)。

注意:直接使用d命令,显示的是debug预设地址处的内容。

【新书推荐】5.1.3 debug.exe调试器_第2张图片

图5-10 debug调试d命令

  • e命令:改变内存内容,如图5-11所示。

    改变内存内容:e 段地址:偏移地址 写入的数据(按空格键输入下一个字节)。

也可以通过e 段地址:偏移地址 "字符串"    这种方式向内存中写入字符串的16进制值。

【新书推荐】5.1.3 debug.exe调试器_第3张图片

图5-11 debug调试e命令

  • u命令:将机器指令翻译成汇编指令,如图5-12所示。

    机器指令翻译成汇编指令:u 段地址:偏移地址。

注意:如果直接使用命令u,debug将会把CPU中CS:IP指向的内存内容翻译成汇编指令。

【新书推荐】5.1.3 debug.exe调试器_第4张图片

图5-12 debug调试u命令

  • t命令:cpu执行一条机器指令(CS:IP指向的指令),如图5-13所示。

【新书推荐】5.1.3 debug.exe调试器_第5张图片

图5-13 debug调试t命令

  • a命令:以汇编指令的格式在内存中写入机器指令,如图5-14所示。

    写入汇编指令:a 段地址:偏移地址,按下enter键后,输入汇编指令,当不想输入时直接按enter退出输入。

图5-14 debug调试a命令

提示

1.DEBUG接受和显示的数都是16进制数。

2.命令都是一个字母,命令参数随命令而异。

3.命令和参数可以用大写或小写字母或混合大写方式输入。

4.命令和参数间,可以用定界符(空格、制表符,逗号等)。但是定界符只是两个相邻的16进制数之间是必需的。如下面的命令是等效的:

DCS:100   110

D   CS:100,   110

D,  CS:100,  110

5.在提示符出现时,可键入DEBUG命令,只有在回车键后,命令才开始执行。

6.若DEBUG检查出一个命令错误,提示符为“^ Error”。

7.在输入DEBUG命令时,可以用常用的编辑键。

8.可以用Ctrl+Break键或Ctrl+C键来打断一个命令的执行,返回DEBUG提示符。

9.若一个命令产生相当多的输出行时,为了能看清屏幕上的显示内容,可按Ctrl+S键,暂停显示。

参数说明

1.地址:地址参数有段值和偏移两部分组成。段值可以用一个段寄存器表示,也可以用4位16进制数表示,偏移用4位16进制数表示。

2.端口地址:使用于输入输出命令,端口地址是一个两位16进制数。

3.范围:用于指定内存区域(缓冲区),两种方式表示:一起始地址和结束地址。二起始地址和长度表示。长度必须L字母引导。范围最大为64K,即0~0FFFFH。

4.数值:数值参数一般表示命令重复的次数,最多可以是4位16进制数。

5.字节值:字节值参数表示输出到端口的值,最多可以是2位16进制数。

6.字节值表参数:表示要替换或查找的若干个以字节为单位的值。各值间由空格等间隔符分隔。字节值表可以含字符串,字符串必须用引号括起来。

7.驱动器号参数:表示要读写扇区所在的驱动器。0代表A驱动器,1代表B驱动器,2代表C驱动器,3代表D驱动器。

8.扇区号:表示DOS逻辑扇区号,最多可以是3位16进制数。

表5-1 标志状态的符号表示

              表5-1 8086CPU中FLAG寄存器中的8个标志位在DEBUG调试器中显示的值。我们将在第六章 8086CPU寄存器“6.4节标志寄存器”中详细讲解FLAG标志寄存器。

注意

         DEBUG调试器中缺失了TF单步追踪标志位。此标志位为控制标志位,默认TF位为0。当TF位置1时,指令改为单步执行。DEBUG调试器的t命令就是使用这个方法实现的。

         FLAG标志寄存器为16位,其中有6个状态标志位CF、PF、AF、ZF、SF、OF,3个控制标志位DF、IF、TF,缺省7个标志位(留作将来某个时刻启用)。如表5-2所示:

       表5-2 FLAG寄存器标志位

         这些标志位不需要可以记忆,随着练习量的增加,见的多了,自然就记住了。忘了的时候也可以随时可以查到。只有查不到的东西,才是真正需要刻记在脑海中的内容。

命令格式

功能说明

A [地址]

汇编

C [范围] 地址

内存区域比较

D [范围]

显示内存单元内容

E地址 [字节值表]

修改内存单元内容

F范围 字节值表

填充内存区域

G [=起始地址]  [断点地址表]

断点执行

H 数值 数值

十六进制加减

I 端口地址

从端口输入

L [地址[驱动器号 扇区号 扇区数]]

从磁盘读

M 范围 地址

内存区域传送

N 文件标识符 [文件标识符…]

指定文件

O 端口 字节值

向端口输出

P [=地址]  [数值]

执行过程

Q

退出DEBUG

R [寄存器名]

显示和修改寄存器内容

S 范围 字节值表

在内存区域搜索

T [=地址]  [数值]

跟踪执行

U [范围]

反汇编

W [地址[驱动器号 扇区号 扇区数]]

向磁盘写

表5-3 DEBUG命令一览表

提示

         Debug调试器常用命令为:r命令,d命令,a命令,e命令,u命令,p命令和q命令。

其中p命令为执行过程。当我们单步跟踪一个循环结构时,可以使用p命令,一次执行完整个循环,方便调试。

练习

网上查阅16位汇编学习环境工具软件的使用教程,编程达人官网“资料下载”版块下载安装环境,自己动手,熟练安装、使用,掌握其用法。

本文摘自编程达人系列教材《X86汇编语言基础教程》。资料下载:www.bcdaren.com

你可能感兴趣的:(《X86汇编语言程序设计》,汇编)