您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 汇编语言程序调试及工具软件DEBUG
1汇编语言程序的调试调试工具软件DEBUGDEBUG调试实例汇编语言程序调试及工具软件DEBUG2一、汇编语言程序的调试1、上机步骤:(1)编辑源程序,生成.ASM文件;(2)汇编.ASM文件,生成.OBJ文件;(3)连接.OBJ文件,生成.EXE文件;(4)调试可执行的.EXE文件,检查其正确性;(5)运行可执行的.EXE文件,得到程序运行的结果。2、调试步骤:(1)语法检查通过MASM程序、LINK程序检查,生成.EXE文件。(2)逻辑功能检查通过调试工具检查功能的正确性。3二、调试工具软件DEBUG1、简介面向汇编语言的动态调试工具,有19条命令。通过跟踪、测试对.EXE和.COM文件动态跟踪调试。查找文件中的错误及运行结果。可以直接编写、调试小程序。2、DEBUG的启动方式(1)在DOS状态下直接输入C:DEBUGADD.EXE(2)在DOS状态下输入C:DEBUG-NADD.EXE-L43、DEBUG命令的说明(1)所有命令都是1个字母。(2)命令和参数用空格或“,”分隔,但仅仅在两个16进制数之间才是必要的。例:-DCS:100111-DCS:100,111-DCS:100,111-D,CS:100111(3)默认数据是16进制,不需要写H。(4)每个命令由ENTER结束,并返回到“—”提示符下。5(5)可以检查输入指令的语法错误。例1-DCS:100.111ERROR该输入不应该有“.”例2-A154E:0008MOVAX2000ERRORAX后面应该有“,”(6)命令提示符为“—”。61、A汇编格式:A[内存地址]功能:从内存指定地址开始输入汇编指令,并汇编成机器码,相继存放在由指定地址开始的内存单元中。注意:(1)不允许出现伪指令、宏指令、标号、变量。(2)输入的数据以16进制表示。(3)远返回的助记符为RETF。(4)内存地址在“[]”中,否则默认为立即数。(5)默认段为CS。三、DEBUG命令及使用简介72U反汇编格式:U[起始地址]U[起始地址结束地址]U[起始地址L字节数]功能:对内存的机器码指令进行反汇编。注意:(1)默认字节数为32个。(2)起始地址中可以只包含有效地址,默认段为CS。(3)结束地址只包含有效地址。例1:-U1547:000052PUSHDS1547:00012BC0SUBAX,AX例2:-U1547:100111-U1547:100L1883、G执行程序格式:G[=起始地址]G[=起始地址断点地址1,断点地址2,….]功能:从起始地址开始执行程序,执行到断点时停止,并显示所有寄存器及标志位的值,同时指出下一条要执行的指令地址及指令。注意:(1)地址缺省时,从CS:IP开始连续执行。(2)如果起始地址中只包含有效地址,默认段为CS。(3)最多可设置10个断点,次序任意,按照地址从小到大顺序执行。(4)“=”不能确少,区分起始地址和断点地址。(5)起始地址必须指向真正的程序指令。例1:-G=008AX=004BBX=0000CX=001BDX=0000SP=000CBP=0000SI=0000DI=0000DS=2E5EES=2E5ESS=2E6ECS=2E6FIP=0008NVUPDIPLNZNAPENC2E6F:00080442ADDAL,4294、T单步跟踪指令格式:T[=起始地址]T[=起始地址指令条数]功能:从起始地址开始,逐条跟踪指令的执行。执行完设定的指令条数后就停止程序的执行。屏幕显示各个寄存器的内容和标志位的状态。注意:(1)没有指定指令条数,每次只执行1条语句,即单步执行。(2)如果没有指定地址,从当前CS:IP开始执行或接着上次的T命令的下一条指令执行。例1:单步执行1条指令:—TAX=004BBX=0000CX=0014DX=0023SP=1200BP=1300SI=0000DI=0000DS=2E5EES=2E5ESS=2E6ECS=2E6FIP=0008NVUPDIPLNZNAPENC2E6F:00080442ADDAL,4210例2:从CS:0004开始执行3条指令。-T=435、D显示内存单元的内容格式:D[起始地址]D[起始地址结束地址]D[起始地址L字节数]功能:显示指定内存单元的内容。注意:(1)默认段为DS,显示128个字节。(2)如果没有指定地址,则从上次D命令显示的下一显示单元开始;否则从DS:100H开始。(3)结束地址只能包含偏移地址。例:-D0;从DS:0000H显示128个字节-D0000F;从DS:0000H开始显示到DS:000FH,共16个字节-D0L15;从DS:0000H显示21个字节116、R显示或修改寄存器的内容格式:R[寄存器名]功能:显示或修改指定寄存器的内容,如不指定寄存器则显示所有寄存器的内容、标志位的状态以及CS:IP所对应指令的机器码和汇编指令。例1:检查AX的内容,按ENTER则不修改-RAXAX0000:-例2:检查DX的内容,并修改为100H-RDXDX0000:100例3:显示修改标志寄存器内容-RF例4:显示所有寄存器内容-RAX=004BBX=0000CX=0014DX=0023SP=1200BP=1300SI=0000DI=0000DS=2E5EES=2E5ESS=2E6ECS=2E6FIP=0008NVUPDIPLNZNAPENC2E6F:00080442ADDAL,42127、E修改存储单元的内容格式:E地址E地址[值表]功能:修改指定存储单元的内容,如果值表参数缺省,只能修改显示一个字节。例1:将ES:100H单元开始的内容改为34,“A”,“B”,5B-EES:10034,“AB”,5B例2:将100H单元内容改为36-E1001547:010033.368、F填充格式:F起始地址终止地址值表F起始地址L字节数值表功能:用值表内容修改指定存储单元的内容,如果值表数小于指定字节数,则重复使用值表;如果值表数大于指定字节数,则忽略多余的值表。例1:-F1542:1001061,2,3,4,‘ABCD’例2:-FDS:100L151,2,3139、N命名命令格式:N文件路径及名字功能:在内存文件控制块中定义文件名。10、L读磁盘格式:L[地址][驱动器号][扇区号][扇区数]如果在使用DEBUG时没有输入文件名,必须用N命令定义文件名,再用L命令装入该文件。例:C:DEBUGADD.EXEC:DEBUG-NADD.EXE-L1411、I格式:I外部端口地址功能:从指定端口读数据并显示例:-I2F8从2F8H外部端口读数据12、O格式:O外部端口地址字节数据功能:向指定端口输出一个字节数据例:-O2F82向2F8H外部端口输出字节数据2MOVDX,2F8HMOVAL,02HOUTDX,ALMOVDX,2F8HINAL,DX1513、H运算格式:H数1数2功能:两个16进制数加减运算例:-H0A20C0814、M传送格式:M起始地址结束地址目的地址M起始地址L字节数目的地址功能:把指定内存区域的内容传送到另一个区域。注意:(1)默认段为DS。(2)目的地址只能包含偏移地址。例:-MCS:0LB1001615、S检索格式:S起始地址结束地址值表S起始地址L字节数值表功能:在指定内存范围内检索值表指定的字符,如果找到,则显示检索到的单元地址;如果没找到,则显示提示符。例:设内存DS:0000H开始存入1,2,3,‘A’,‘B’,‘A’,‘B’要求检索字符‘A’,‘B’,‘F’-SDS:006A1542:00031542:0005-SDS:006B1542:00041542:0006-SDS:006F-1716、C比较格式:C起始地址结束地址目的地址C起始地址L字节数目的地址功能:比较两个数据块内容,如果不相同,则显示其内容和地址。默认为数据段,目的地址只包含偏移地址。例:把ES:0开始的10个字节内容与DS:100H开始的区域进行比较,找出与之不同的内容。-CES:0LADS:100执行结果:82DD:0000032D82CD:10082DD:0002000282CD:10282DD:0003050982CD:10382DD:0008046682CD:10817、Q退出格式:-Q功能:退出DEBUG命令。
本文标题:汇编语言程序调试及工具软件DEBUG
链接地址:https://www.777doc.com/doc-3392466 .html