《2022年2022年汇编debug详解 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年汇编debug详解 .pdf(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、调试程序DEBUG 的特点:在受控环境中测试程序;装入,显示或修改任何文件;执行 DOS 程序;完成磁盘实际读/写操作;建立或汇编汇编语言程序。DEBUG 的命令格式:DEBUG drive: pathfilename.extparam. 其中:drive: 是 DEBUG 将要调试的文件所在的磁盘驱动器。path: 是查找DEBUG将要调试的文件所需的子目录路径,若未指定,DOS使用当前目录。filename.ext 是 DEBUG 将要调试的文件名。param 是将被调试的程序( 或文件 ) 的命令行参数。附:DEBUG 所完成的初始化动作,假定文件名没有,启动DEBUG :段寄存器CS、
2、 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
3、 地址 表退出Q填入F 范围表寄存器R 寄存器 执行G = 地址 地址 地址 .搜索S 范围表十六进制H 值值跟踪T = 地址 或范围 输入I 口地址反汇编U 地址 或范围 装入L 地址 设备扇区 ,扇区 写W 地址 设备扇区 ,扇区 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 7 页 - - - - - - - - - 移动M 范围地址显示存储单元的命令D(DEBUG),格式为:- D address 或 - Drange例如,按指定范围显示存储单元内容的方法为:-
4、D 100 120067C: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 .ABCDEFGHIJKLMNO067C:0120 8B说明:其中 0100 至 0120 是 DEBUG 显示的单元内容。左边用十六进制表示每个字节,右边用 ASCII 字符表示每个字节, “.”表示不可显示的字符。这里没有指定段地址,D 命令自动显示DS 段的内容。如果只指定首地址,则显示从首地址开始的80 个字节的
5、内容。如果完全没有指定地址,则显示上一个D 命令的最后一个单元的内容。计算机存储信息的基本单位是一个二进制位,一位可存储一个二进制数:0 或 1。每 8 位组成一个字节,位编号如下所示:76543210在存储器里以字节为单位存储信息。为了正确地存放或取得信息,每一个字节单元给以一个存储器地址。地址从 0 开始编号,顺序地每次加1。在机器里,地址也是用二进制数来表示的。它是无符号整数,书写格式为十六进制。16 位二进制可以表示2 的 16 次方个字节单元的地址,它可表示的地址范围应该是0-65535。为方便,存储器的容量以2 的 10 次方 =1024 为基本单位,称为1K 。这样, 65536
6、 个字节单元的存储容量就是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,名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共
7、7 页 - - - - - - - - - FFE0,FFE1,FFE2, , , FFE9,FFEA ,FFEB,FFEC,FFED,FFEE,FFEF,FFF0,FFF1,FFF2, , , FFF9,FFFA,FFFB,FFFC,FFFD,FFFE,FFFF。一个字存入存储器要占有相继的二个字节,存放时,低位字节存入低地址,高位字节存入高地址,以相反的次序存入的。存储器的特点:它的内容是取之不尽的。从某个单元取出其内容后,该单元仍然保存着原来的内容不变,可以重复取出,只有存入新的信息之后,原来保存的内容自动丢失。修改存储单元内容的命令有两种输入命令 E(Enter),有两种格式如下:第一
8、种格式可以用给定的内容表来替代指定范围的存储单元内容。命令格式为:-E address list例如, -E DS:100 F3XYZ8D其中 F3,,X?,,Y?,,Z?和 8D 各占一个字节,该命令可以用这五个字节来替代存储单元DS:0100 到 0104的原先的容。第二种格式则是采用逐个单元相继修改的方法。命令格式为:-E address例如, -E CS:100则可能显示为:18E4:0100 89. -如果需要把该单元的内容修改为78,则可以直接键入78,再按空格键可接着显示下一个单元的内容,这样可以不断修改相继单元的内容,直到Enter 键结束该命令为止。填写命令 F(Fill),
9、其格式为:-F range list例如, -F 4BA:0100 5 F3XYZ8D使 04BA:0100-0104 单元包含指定的五个字节的内容。如果list 中的字节数超过指定的范围,则忽略超过的项;如果list 的字节数小于指定范围,则重复使用list 填入,直到填满指定的所有单元为止。检查和修改寄存器内容的命令R(Register),它有三种格式如下:显示 CPU 内所有寄存器内容和标志位状态,其格式为:-R名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 7 页
10、 - - - - - - - - - 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 PTR0204,0138 DS:0204=0000其中标志位状态的含义可见下表:标志名标志为 1标志为 0OFDFIFSFZFAFPFCF溢出(是 /否)方向(减量 /增量)中断(允许 /关闭)符号(负 /正)零(是 /否)辅助进位(是 /否
11、)奇偶(偶 /奇)进位(是 /否OVDNEINGZRACPECYNVUPDIPLNZNAPONC显示和修改某个寄存器内容,其格式为:-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 -名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - -
12、 - - - 名师精心整理 - - - - - - - 第 4 页,共 7 页 - - - - - - - - - 此时如不修改其内容可按Enter 键,否则,建入欲修改的内容,如:OV DN EI NG ZR AC PE CY - PONZDINV即可,键入的顺序是任意的。运行命令 G(Go),其格式为:-G =address1address2address3 .其中,地址1 指定了运行的起始地址,如不指定则从当前的CS:IP 开始运行。后面的地址均为断点地址,当指令执行到断点时,就停止执行并显示当前所有寄存器及标志位的内容,和下一条将要执行的指令。输入命令 I( IN),其格式为:- I
13、PortAddress显示指定端口地址的内容输出命令 O(OUT), 其格式为:- O PortAddressNewValue修改指定端口地址的内容跟踪命令 T(Trace),有两种格式:逐条指令跟踪-T=address从指定地址起执行一条指令后停下来,显示所有寄存器内空及标志位的值。如未指定则从当前的CS:IP 开始执行。多要指令跟踪-T=addressvalue从指定地址起执行n 条指令后停下来,n 由 value 指定。汇编命令 A(Assemble), 其格式为:-A address该命令允许键入汇编语言语句,并能把它们汇编成机器代码,相继地存放在从指定地址开始的存储区中。必须注意:D
14、EBUG 把键入的数字均看成十六进制数,所以如要键入十进制数, 则其后应加以说明, 如 100D。反汇编命令 U (Unassemble), 有两种格式:从指定地址开始,反汇编32 个字节,其格式为:-Uaddress例如:-u 100名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 7 页 - - - - - - - - - 18E4:0100 C70604023801 MOV WORD PTR0204,0138 18E4:0106 C70606020002 MOV WO
15、RD 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 个字节。对指定范围内的存储单元进行
16、反汇编,格式为:-Urange例如:-u 100 10C18E4:0100 C70604023801 MOV WORD PTR0204,0138 18E4:0106 C70606020002 MOV WORD PTR0206,0200 18E4:010C C70608020202 MOV WORD PTR0208,0202或-u 100 11218E4:0100 C70604023801 MOV WORD PTR0204,0138 18E4:0106 C70606020002 MOV WORD PTR0206,0200 18E4:010C C70608020202 MOV WORD PTR02
17、08,0202这两种格式是等效的。命名命令 N(Name),其格式为:-N filespecs filespecs命令把两个文件标识符格式化在CS:5CH 和 CS:6CH 的两个文件控制块中,以便在其后用L 或 W 命令把文件装入或存盘。filespecs 的格式可以是:d:path filename.ext名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 7 页 - - - - - - - - - 例如:-N myprog-L-可把文件 myprog 装入存储器。装入命
18、令 L(Load), 有两种功能:把磁盘上指定扇区范围的内容装入到存储器从指定地址开始的区域中。其格式为:-L address drive sector sector_numL 命令只能读入逻辑扇区, 不能读取 MBR . 其中 , 第一个参数是读入到的地址, 第二个参数是盘号(0=A,1=B,2=C,.) , 第三个参数是起始逻辑扇区( 从 0 开始编号的 , 引导扇区在最开始), 第四个参数是读入的扇区的个数 . 装入指定文件,其格式为:-L address此命令装入已在CS:5CH 中格式化了的文件控制块所指定的文件。如未指定地址, 则装入 CS:0100 开始的存储区中。写命令 W(W
19、rite) , 有两种功能:把数据写入磁盘的指定扇区。其格式为:-W address drive sector sector把数据写入指定的文件中。其格式为:-W write address利用 R 命令在 BX CX (CX为低字 ,BX 为高字 )中存入程序段的长度(字节数 ),可以利用R BX 和 R CX 要写入文件的修改长度.此命令把指定的存储区中的数据写入由CS:5CH 处的文件控制块所指定的文件中。如未指定地址则数据从CS: 0100 开始。要写入文件的字节数应先放入BX 和 CX 中。退出 DEBUG 命令 Q(Quit),其格式为:-Q它退出 DEBUG ,返回 DOS。本命令无存盘功能,如需存盘应先使用W 命令。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 7 页 - - - - - - - - -