DOS下DEBUG教程.doc_第1页
DOS下DEBUG教程.doc_第2页
DOS下DEBUG教程.doc_第3页
DOS下DEBUG教程.doc_第4页
DOS下DEBUG教程.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

DOS下DEBUG教程DEBUG 教程(主要命令)显示存储单元内容修改存储单元内容检查和修改寄存器的内容运行命令跟踪命令汇编命令反汇编命令命名命令装入命令写命令退出 DEBUGDEBUG命令格式 DEBUG命令集 调试程序DEBUG的特点: 1. 在受控环境中测试程序; 2. 装入,显示或修改任何文件; 3. 执行DOS程序; 4. 完成磁盘实际读/写操作; 5. 建立或汇编汇编语言程序。 DEBUG的命令格式: drive:path DEBUG d:pfilename.extparam.其中: drive: 是指定DEBUG文件的磁盘驱动器标识符,DEBUG是外部DOS命令,所以必须把它从磁盘读入内存。若未指定,DOS将使用当前默认磁盘驱动器。 path: 是DOS查找DEBUG文件的一个子目录串表示的路径。若未指定,DOS将使用当前工作目录。d: 是DEBUG将要调试的文件所在的磁盘驱动器。p: 是查找DEBUG将要调试的文件所需的子目录路径,若未指定,DOS使用当前目录。filename.ext 是DEBUG将要调试的文件名。param 是将被调试的程序(或文件)的命令行参数。附:DEBUG所完成的初始化动作,假定文件名没有,启动DEBUG: 段寄存器CS、DS、ES和SS置为DEBUG程序后的第一个段。 指令指针寄存器IP置为100H(程序段前缀PSP后的第一个语句)。 堆栈指针SP置为段末或COMMAND.COM暂驻部分的结束地址(其中较小的那个地址)。 其余通用寄存器均置为0,标志寄存器置为下述状态。 NV UP EI PL NE NA PO NC 如果DEBUG命令行含有文件名,段寄存器DS和ES指向PSP。寄存器BX和CX含有程序长度。 DEBUG使用单字符命令: 命令格式命令格式汇编A 地址命名N 设备:路径文件名.扩展名比较C 范围输出O 口地址转出D 范围或地址继续执行P =地址值键入E 地址表退出Q填入F 范围表寄存器R 寄存器执行G =地址地址地址.搜索S 范围表十六进制H 值 值跟踪T =地址或范围输入I 口地址反汇编U 地址或范围装入L 地址设备扇区,扇区写W 地址设备扇区,扇区移动M 范围 地址这些DEBUG命令主要参考清华大学计算机系列教材IBM-C汇编语言程序设计一书。 显示存储单元的命令D(DEBUG),格式为: -Daddress或 - Drange例如,按指定范围显示存储单元内容的方法为: -D 100 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显示的单元内容。 左边用十六进制H表示每个字节,右边用ASCII字符表示每个字节,“.”表示不可显示的字符。这里没有指定段地址, D命令自动显示DS段的内容。如果只指定首地址,则显示从首地址开始的80个字节的内容。如果完全没有指定地址,则显示上一个D命令的最后一个单元的内容。 这里顺便提一下存储器及其地址的分段。 计算机存储信息的基本单位是一个二进制位,一位可存储一个二进制数:0或1。每8位组成一个字节,位编号如下所示:76543210 正当MS-DOS盛行的时候,PC机的字长为16位,由2个字节组成,位编号如下所示:字1514131211109876543210字节7654321076543210高位字节 MSB低位字节 LSB 在存储器里以字节为单位存储信息。为了正确地存放或取得信息,每一个字节单元给以一个存储器地址。地址从0开始编号,顺序地每次加1。在机器里,地址也是用二进制数来表示的。它是无符号整数,书写格式为十六进制。 16位二进制可以表示2的16次方个字节单元的地址,它可表示的地址范围应该是0-65535。为方便,存储器的容量以2的10次方=1024为基本单位,称为1K。这样,65536个字节单元的存储容量就是64K,其地址编号的范围用16进制数表示为0-FFFFH。如下所示。0000,0001,0002,0009,000A,000B,000C,000D,000E,000F,0010,0011,0012,0019,001A,001B,001C,001D,001E,001F,0020,0021,0022,0029,002A,002B,002C,002D,002E,002F, FFE0,FFE1,FFE2,FFE9,FFEA,FFEB,FFEC,FFED,FFEE,FFEF,FFF0,FFF1,FFF2,FFF9,FFFA,FFFB,FFFC,FFFD,FFFE,FFFF。 一个字存入存储器要占有相继的二个字节,存放时,低位字节存入低地址,高位字节存入高地址,以相反的次序存入的。 存储器的特点:它的内容是取之不尽的。从某个单元取出其内容后,该单元仍然保存着原来的内容不变,可以重复取出,只有存入新的信息之后,原来保存的内容自动丢失。 存储器地址的分段: 前面已经提到16位字长的机器可以访问最大存储空间为64K字节,而PC机的最大存储容量为1M(原MS-DOS操作系统下)。要访问1M字节空间的存储器必须有20位地址,用16进制数表示1M字节的地址范围应该为00000-FFFFF。 在1M字节的存储器里,每一个存储单元都有一个唯一的20位地址,称为该存储单元的物理地址。CPU访问存储器时,必须先确定所要访问的存储单元的物理地址才能取得(或存入)该单元的内容。20位物理地址由16位段地址和16位偏移地址组成,段地址是指每一段的起始地址,由于它必须是小段的首地址,所以其低4位一定是0,这样就可以规定段地址只取段起始地址的高16位值。偏移地址则是指在段内相对于段起始地址的偏移值。这样,物理地址的计算方法如下: 把段地址左移4位再加上偏移地址值就形成物理地址。或写成: 16d X段地址+偏移地址=物理地址 每个存储单元只有唯一的物理地址,但它却可由不同的段地址和不同的偏移地址组成。 在PC机中,有四个专门存放段地址的寄存器,称为段寄存器。它们是代码段CS(Code Segment)、数据段DS(Data Segment)、堆栈段SS(Stack Segment)和附加段ES(Extra Segment)寄存器。每个段寄存器可以确定一个段的起始地址,而这些段则各有各的用途。代码段是存放当前正在运行的程序。数据段存放当前运行程序所用的数据,如果程序中使用了串处理指令,则其源操作数也存放在数据段中。堆栈段定义了堆栈的所在区域,堆栈是一种数据结构,它是一个比较特殊的数据段。附加段是附加的数据段,它是一个辅助的数据区,也是串处理指令的目的操作数存放区。还有四个通用数据寄存器AX、BX、CX、DX;四个指针及变址寄存器SP、BP、SI、DI;控制寄存器包括IP(指令指针寄存器)和PSW程序状态字寄存器。这些将专门开辟一页详加介绍。 修改存储单元内容的命令有两种 输入命令E(Enter),有两种格式如下: 第一种格式可以用给定的内容表来替代指定范围的存储单元内容。命令格式为: -E address list 例如,-E DS:100 F3XYZ8D 其中F3,X,Y,Z和8D各占一个字节,该命令可以用这5个字节来替代存储单元DS:0100到0104的原先的内容。 第二种格式则是采用逐个单元相继修改的方法。命令格式为: -E address 例如,-E CS:100 则可能显示为: 18E4:0100 89. - 如果需要把该单元的内容修改为78,则可以直接键入78,再按空格键可接着显示下一个单元的内容,这样可以不断修改相继单元的内容,直到Enter键结束该命令为止。 填写命令F(Fill),其格式为: -F range list 例如,-F 4BA:0100 5 F3XYZ8D 使04BA:0100-0104单元包含指定的5个字节的内容。如果list中的字节数超过指定的范围,则忽略超过的项;如果list的字节数小于指定范围,则重复使用list填入,直到填满指定的所有单元为止。 检查和修改寄存器内容的命令R(Register),它有三种格式如下: 显示CPU内所有寄存器内容和标志位状态,其格式为: -R 例如, -rAX=0000 BX=0000 CX=010A DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000 DS=18E4 ES=18E4 SS=18E4 CS=18E4 IP=0100NV UP DI PL NZ NA PO NC 18E4:0100 C70604023801 MOV WORD PTR0204,0138 DS:0204=0000 其中标志位状态的含义可见下表:标 志 名标志为1标志为0OFDFIFSFZFAFPFCF溢出(是/否) 方向(减量/增量)中断(允许/关闭)符号(负/正)零(是/否)辅助进位(是/否)奇偶(偶/奇)进位(是/否OV DNEINGZRACPECYNV UPDIPLNZNAPONC 显示和修改某个寄存器内容,其格式为: -R register name 例如,键入 -r ax 系统将响应如下: AX F1F4: 即AX寄存器的当前内容为F1F4,如不修改则按Enter键,否则,键入欲修改的内容如: -r bx BX 0369 :059F 则把BX寄存器的当前内容修改为059F。 显示和修改标志位状态,命令格式为: -RF 系统将响应,如: OV DN EI NG ZR AC PE CY - 此时如不修改其内容可按Enter键,否则,建入欲修改的内容,如: OV DN EI NG ZR AC PE CY - PONZDINV 即可,键入的顺序是任意的。 运行命令G(Go),其格式为: -G =address1address2address3 . 其中,地址1指定了运行的起始地址,如不指定则从当前的CS:IP开始运行。 后面的地址均为断点地址,当指令执行到断点时,就停止执行并显示当前所有寄存器及标志位的内容,和下一条将要执行的指令。 跟踪命令T(Trace),有两种格式: 逐条指令跟踪 -T=address 从指定地址起执行一条指令后停下来,显示所有寄存器内空及标志位的值。如未指定则从当前的CS:IP开始执行。 多要指令跟踪 -T=address 从指定地址起执行n条指令后停下来,n由指定。 汇编命令A(Assemble),其格式为: -A address 该命令允许键入汇编语言语句,并能把它们汇编成机器代码,相继地存放在从指定地址开始的存储区中。必须注意:DEBUG把键入的数字均看成十六进制数,所以如要键入十进制数,则其后应加以说明,如100D。 反汇编命令U(Unassemble),有两种格式: 从指定地址开始,反汇编32个字节,其格式为: -Urange 例如: -u 100 18E4:0100 C70604023801 MOV WORD PTR0204,0138 18E4:0106 C70606020002 MOV WORD PTR0206,0200 18E4:010C C70608020202 MOV WORD PTR0208,0202 18E4:0112 BB0402 MOV BX,0204 18E4:0115 E80200 CALL 011A 18E4:0118 CD20 INT 20 18E4:011A 50 PUSH AX 18E4:011B 51 PUSH CX 18E4:011C 56 PUSH SI 18E4:011D 57 PUSH DI 18E4:011E 8B37 MOV SI,BX 如果地址被省略则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。 对指定范围内的存储单元进行反汇编,格式为: -Urange例如: -u 100 10C 18E4:0100 C70604023801 MOV WORD PTR0204,0138 18E4:0106 C70606020002 MOV WORD PTR0206,0200 18E4:010C C70608020202 MOV WORD PTR0208,0202或 -u 100 112 18E4:0100 C70604023801 MOV WORD PTR0204,0138 18E4:0106 C70606020002 MOV WORD PTR0206,0200 18E4:010C C70608020202 MOV WORD PTR0208,0202这两种格式是等效的。 命名命令N(Name),其格式为: -N filespecs filespecs 命令把两个文件标识符格式化在CS:5CH和CS:6CH的两个文件控制块中,以便在其后用L或W命令把文件装入或存盘。filespecs的格式可以是: d:path filename.ext 例如: -N myprog -L - 可把文件myprog装入存储器。 装入命令L(Load),有两种功能: 把磁盘上指定扇区范围的内容装入到存储器从指定地址开始的区域中。其格式为: -Laddress drive sector sector 装入指定文件,其格式为: -Laddress 此命令装入已在CS:5CH中格式化了的文件控制块所指定的文件。如未指定地址,则装入CS:0100开始的存储区中。 写命令W(Write),有两种功能: 把数据写入磁盘的指定扇区。其格式为: -W address drive sector sector 把数据写入指定的文件中。其格式为: -W address 此命令把指定的存储区中的数据写入由CS:5CH处的文件控制块所指定的文件中。如未指定地址则数据从CS:0100开始。要写入文件的字节数应先放入BX和CX中。 退出DEBUG命令Q(Quit),其格式为:-Q 它退出DEBUG,返回DOS。本命令无存盘功能,如需存盘应先使用W命令。debug教程一、DEBUG程序的调用 在DOS的提示符下,可键入命令: C:DEBUGD:PATHFILENAME.EXTPARM1PARM2其中,文件名是被调试文件的名字。如用户键入文件,则DEBUG将指定的文件装入存储器中,用户可对其进行调试。如果未键入文件名,则用户可以用当前存储器的内容工作,或者用DEBUG命令N和L把需要的文件装入存储器后再进行调试。命令中的D指定驱动器PATH为路径,PARM1和PARM2则为运行被调试文件时所需要的命令参数。在DEBUG程序调入后,将出现提示符,此时就可用DEBUG命令来调试程序。二、DEBUG的主要命令1、显示存储单元的命令D(DUMP),格式为: _Daddress或_Drange例如,按指定范围显示存储单元内容的方法为:-d10012018E4:0100c70604023801c706-06020002c7060802G.8.G.G.18E$:01100202bb0402e80200-CD20505156578B37.;.h.MPQVW.718E4:01208B其中0100至0120是DEBUG显示的单元内容,左边用十六进制表示每个字节,右边用ASCII字符表示每个字节,表示不可显示的字符。这里没有指定段地址,D命令自动显示DS段的内容。如果只指定首地址,则显示从首地址开始的80个字节的内容。如果完全没有指定地址,则显示上一个D命令显示的最后一个单元后的内容。2、修改存储单元内容的命令有两种。输入命令E(ENTER),有两种格式如下:第一种格式可以用给定的内容表来替代指定范围的存储单元内容。命令格式为:-Eaddresslist例如,-EDS:100F3XYZ8D其中F3,X,Y,Z和各占一个字节,该命令可以用这五个字节来替代存储单元DS:0100到0104的原先的内容。第二种格式则是采用逐个单元相继修改的方法。命令格式为:-Eaddress例如,-EDS:100则可能显示为:8E4:010089.-如果需要把该单元的内容修改为78,则用户可以直接键入78,再按“空格”键可接着显示下一个单元的内容,如下:18E4:010089.781B.-这样,用户可以不断修改相继单元的内容,直到用ENTER键结束该命令为止。填写命令F(FILL),其格式为:-Frangelist例如:-F4BA:01005F3XYZ8D使04BA:01000104单元包含指定的五个字节的内容。如果list中的字节数超过指定的范围,则忽略超过的项;如果list的字节数小于指定的范围,则重复使用list填入,直到填满指定的所有单元为止。3)检查和修改寄存器内容的命令R(register),它有三种格式如下:显示CPU内所有寄存器内容和标志位状态,其格式为:-R例如,-rAX=0000BX=0000CX=010ADX=0000SP=FFFEBP=0000SI=0000DI=0000DS=18E4ES=18E4SS=18E4CS=18E4IP=0100NVUPDIPLNZNAPONC18E4:0100C70604023801MOVWORDPTR0204,0138DS:0204=0000显示和修改某个寄存器内容,其格式为:-Rregistername例如,键入-RAX系统将响应如下:AXF1F4:即AX寄存器的当前内容为F1F4,如不修改则按ENTER键,否则,可键入欲修改的内容,如:-RbxBX0369:059F则把BX寄存器的内容修改为059F。显示和修改标志位状态,命令格式为:-RF系统将响应,如:OVDNEINGZRACPECY-此时,如不修改其内容可按ENTER键,否则,可键入欲修改的内容,如:OVDNEINGZRACPECY-PONZDINV即可,可见键入的顺序可以是任意的。4)运行命令G,其格式为:-G=address1address2address3其中,地址1指定了运行的起始地址,如不指定则从当前的CS:IP开始运行。后面的地址均为断点地址,当指令执行到断点时,就停止执行并显示当前所有寄存器及标志位的内容,和下一条将要执行的指令。5)跟踪命令T(Trace),有两种格式:逐条指令跟踪-T=address从指定地址起执行一条指令后停下来,显示所有寄存器内容及标志位的值。如未指定地址则从当前的CS:IP开始执行。多条指令跟踪-T=addressvalues从指定地址起执行n条指令后停下来,n由values指定。6)汇编命令A(Assemble),其格式为:-Aaddress该命令允许键入汇编语言语句,并能把它们汇编成机器代码,相继地存放在从指定地址开始的存储区中。必须注意:DEBUG把键入的数字均看成十六进制数,所以如要键入十进制数,则其后应加以说明,如100D。7)反汇编命令U(Unassemble)有两种格式。从指定地址开始,反汇编32个字节,其格式为:-Uaddress例如:-u10018E4:0100C70604023801MOVWORDPTR0204,013818E4:0106C70606020002MOVWORDPTR0206,020018E4:010CC70606020202MOVWORDPTR0208,020218E4:0112BBO4O2MOVBX,020418E4:0115E80200CALL011A18E4:0118CD20INT2018E4:011A50PUSHAX18E4:011B51PUSHCX18E4:011C56PUSHSI18E4:011D57PUSHDI18E4:011E8B37MOVSI,BX如果地址被省略,则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。对指定范围内的存储单元进行反汇编,格式为:-Urange例如:-u10010c18E4:0100C70604023801MOVWORDPTR0204,013818E4:0106C70606020002MOVWORDPTR0206,020018E4:010CC70606020202MOVWORDPTR0208,0202或-u10011218E4:0100C70604023801MOVWORDPTR0204,013818E4:0106C70606020002MOVWORDPTR0206,020018E4:010CC70606020202MOVWORDPTR0208,0202可见这两种格式是等效的。8)命名命令N(Name),其格式为:-Nfilespecsfilespecs命令把两个文件标识符格式化在CS:5CH和CS:6CH的两个文件控制块中,以便在其后用L或W命令把文件装入存盘。filespecs的格式可以是:d:pathfilename.ext例如,-Nmyprog-L-可把文件myprog装入存储器。9)装入命令(Load),有两种功能。把磁盘上指定扇区范围的内容装入到存储器从指定地址开始的区域中。其格式为:-Laddressdrivesectorsector装入指定文件,其格式为:-Laddress此命令装入已在CS:5CH中格式化了文件控制块所指定的文件。如未指定地址,则装入CS:0100开始的存储区中。10)写命令W(Write),有两种功能。把数据写入磁盘的指定扇区。其格式为:-Waddressdrivesectorsector把数据写入指定的文件中。其格式为:-Waddress此命令把指定的存储区中的数据写入由CS:5CH处的文件控制块所指定的文件中。如未指定地址则数据从CS:0100开始。要写入文件的字节数应先放入BX和CX中。11)退出DEBUG命令Q(quit),其格式为:-Q它退出DEBUG,返回DOS。本命令并无存盘功能,如需存盘应先使用W命令。debug教程内容简要:准备写一些 DEBUG的命令,不要小看它,对你的破解会很有帮助的。DEBUG在每个人的机器里都会有,只是很多人对它都很陌生,如你掌握了它的用法,对你的日常使用及维护工作会带来很大的方便,下面介绍一些它的基本指令用法指令格式 功能 备注AA 记忆体位址 组译汇编语言指令 A 100CC 区段1 区段范围 区段2 将两块内存作比较 C 100 L20 200DD 记忆体拉址 显示记忆体的内容 D 100EE 记忆体位址 编辑记忆体资料 E 100FF 指定区段范围 填充指定内存区块内容 F 100 L10 90GG 区段:区址带有任选断点执行 G 100HH 运算子 运算子十六进制加减运算 H 44 33II 端口 读/显示输入字节LL 记忆位址或磁碟,磁轨,磁区 装入文件或磁区 L 100 2 1 2MM 区段范围 记忆体位址传送内存区块 M 100 L10 110NN 档案名称 定义文件及参量 N OO 端口位址 输出字节到端口PP 区段:区址在下一指令上停止 P 2QQ 退出 DEBUG 界面QRR 寄存器 显示修改寄存器/标志 R AXSS 记忆区段范围 对字符进行检索 S 100 L70 jTT =记忆区段或数值范围单步追踪 TUU 记忆位址 对指令进行反汇编 U 100WW 记忆区段或指定范围 写入文件或磁盘扇区 W 100 0 1 1下面对一些常用指令进行详细剖析:A (Assemble)汇编指

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论