实验目的:学习DEBUG工具
实验内容:
为汇编语言设计的一种调试工具,通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。
在DOS的提示符下,可键入命令:
C>DEBUG[d:][path][filename][.exe][parm1][parm2]
d: 是DEBUG将要调试的文件所在的磁盘驱动器。
path: 是查找DEBUG将要调试的文件所需的子目录路径,若未指定,DOS使用当前目录。
filename[.exe]:是DEBUG将要调试的文件名。如果用户键入文件名,则DEBUG将指定的文件装入存储器中,用户可对其进行调试,如果未键入文件名,则用户可用当前存储器的内容工作,或者用DEBUG命令N和L将需要的文件装入存储器后再进行调试。
parm1和parm2 :是为运行被调试的程序(或文件)时所需的命令参数。
在DEBUG程序调入后,将出现提示符_,此时就可用DEGUG命令来调试程序。
显示存储单元的命令 D _D[address] 或 _D[range]
例如,按指定范围显示存储单元内容的方法为:
-D100 120
067C:0100 C7 D7 0D 0A 32 33 33 34 - D5 C5 B4 C6 30 10 42 0C ....2334....0.B.
067C:0110 03 41 42 43 44 45 46 47 - 48 49 4A 4B 4C 4D 4E 4F .ABCDEFGHIJKLMNO
067C:0120 8B
其中0100至0120是DEBUG显示的单元内容。
左边用十六进制表示每个字节,右边用ASCII字符表示每个字节。
“.”表示不可显示的字符。
这里没有指定段地址, D命令自动显示DS段的内容。
如果只指定首地址,则显示从首地址开始的80个字节的内容。
如果完全没有指定地址,则显示上一个D命令显示的最后一个单元后的内容。
修改存储单元内容的命令有两种
输入命令E(Enter),有两种格式如下:
第一种格式可以用给定的内容表来替代指定范围的存储单元内容。命令格式为:
-E address [list]
例如,-E DS(具体值):100 F3'XYZ'8D
其中F3,‘X’,‘Y’,‘Z’和8D各占一个字节
该命令可以用这五个字节来替代存储单元DS:0100到0104的原先的内容。
第二种格式则是采用逐个单元相继修改的方法
命令格式为: -E address
例如,-E DS(具体值):100
则可能显示为:
18E4:0100 89. –
如果需要把该单元的内容修改为78,则可以直接键入78,再按空格键可接着显示下一个单元的内容,如下:
18E4:0100 89._78 1B._
这样可以不断修改相继单元的内容,直到Enter键结束该命令为止。
填写命令F(Fill)
其格式为: -F range list
例如,-F 4BA:0100 0105 F3'XYZ'8D
使04BA:0100-0104单元包含指定的五个字节的内容
如果list中的字节数超过指定的范围,则忽略超过的项
如果list的字节数小于指定范围,则重复使用list填入,直到填满指定的所有单元为止。
检查和修改寄存器内容的命令R(Register)
它有三种格式如下:
显示CPU内所有寄存器内容和标志位状态,其格式为: -R
例如, -r
AX=0000 BX=0000 CX=010A DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=18E4 ES=18E4 SS=18E4 CS=18E4 IP=0100 NV UP DI PL NZ NA PO NC
18E4:0100 C70604023801 MOV WORD PTR[0204],0138 DS:0204=0000
标志位状态的含义
标志名 |
标志为1 |
标志为0 |
溢出(是/否) |
OV |
NV |
方向(减量/增量) |
DN |
UP |
中断(允许/关闭) |
ET |
DT |
符号(负/正) |
NG |
PL |
零(是/否) |
ZR |
NZ |
辅助进位(是/否) |
AC |
NC |
奇偶(偶/奇) |
PE |
PO |
进位(是/否) |
CV |
NC |