当前位置:文档之家› 微机原理与接口技术debug程序调试

微机原理与接口技术debug程序调试

微机原理与接口技术debug程序调试
微机原理与接口技术debug程序调试

该程序是将十六进制数8H通过查表的方式转换为ASCII码38H。通过反汇编后可知8H存放在偏移地址为0010H中,转换后的数据38H存放在偏移地址为0011H中。调试结果如下,证明程序是正确的。

该程序是将12345678H与12345678H相乘得到14B66DC1DF4D840。通过反汇编得到被乘数与乘数分别存放于偏移地址为0000H和0004H起始处,结果存放于偏移地址为0008H起始处。调试结果如下,证明程序是正确的。

该程序是将是对X=90和Y=57进行比较得到X>Y,所以Z=1。通过反汇编得到X与Y分别存放于偏移地址为0000H和0001H处,结果Z存放于偏移地址为0002H处。调试结果如下,证明程序是正确的。

该程序是利用SF位来判断补码数Z=7938H是否为正数,求其绝对值。而7938H=0111 1001 0011 1000B,它是一个正数。通过反汇编得到Z存放于偏移地址为0000H处,结果送回原处依旧是7938H。调试结果如下,证明程序是正确的。

该程序是是将NUM1=062389AB78E390AFH和NUM2=7F367D82A9027C8BH两个8字节的无符号数相加得855A072E21E60D3A。通过反汇编得到NUM1与NUM2分别存放于偏移地址为0000H和0008H起始处,结果SUM存放于偏移地址为0010H起始处。调试结果如下,证明程序是正确的。

该程序是将字节变量BYTE_DATA=8FH这个数用8位二进制数显示。通过反汇编得到BYTE_DATA存放于偏移地址为0000H起始处,结果BUF=10001111B存放于偏移地址为0001H起始处,计算机的所存储的是相对应的ASCII码,并且显示器显示了10001111。调试结果如下,证明程序是正确的。

例4.7:

该程序是将长度小于等于100个由键盘输入的字符串的每一个的符号ASCII 码值+2。通过反汇编得到我输入的字符串‘ABCD1234’存放于偏移地址为0002H 起始处,之后加一个回车(ASCII码为0D),符串长度限制为64H存放于偏移地址为0000H处,实际输入长度08H存放于偏移地址为0001H处。结果存放于偏移地址为0066H起始处,并且字符串的结尾加上‘$’(ASCII码为24)。调试结果如下,证明程序是正确的。

该程序是将从1开始到整数N求和,要求和不大于10000,并保存N。用C 语言编程的该数为142。通过反汇编得到结果NUM=8EH存放于偏移地址为0000H 处。调试结果如下,证明程序是正确的。

该程序是将89,34,23,47,2,93,13,26,3,90这10个数按从小到大排列。通过反汇编得到这10个数存放于偏移地址为0000H起始处,结果送回原处。调试结果如下,证明程序是正确的。

该程序是统计字符串‘ASDFJKL’对应的ASCII码串中的二进制1的个数。通过反汇编得到‘ASDFJKL’存放于偏移地址为0000H起始处,CX=55表示字符总个数为56,结果NUM=21存放于偏移地址为0007H处。调试结果如下,证明程序是正确的。

该程序是将从键盘输入的十进制数(-32768—+32767)转化为二进制数。通过反汇编得到我输入的‘1234’存放于偏移地址为0002H起始处,之后加一个回车(ASCII码为0D),字符串长度限制为07H存放于偏移地址为0000H处,实际输入长度04H存放于偏移地址为0001H处,结果BINARY=4D2H存放于偏移地址为0009H起始处。调试结果如下,证明程序是正确的。

该程序是将ASCSTRING=‘1’,‘A’,‘6’,‘E’这四位十六进制ASCII码转换为二进制数。通过反汇编得到ASCSTRING存放于偏移地址为0000H起始处,结果放于偏移地址为0004H起始处。调试结果如下,证明程序是正确的。

该程序是将一个16位二进制带符号数以十进制形式输出到显示器显示。调试结果如下,结果显示Divide overflow(除法溢出)。

例4.14:

程序开始编译时出错了,经查错是LP_MUL标号后面少写了“:”。

该程序是分别对三组信息表的各自前两个数相乘(46,4和78,9和25,6),相乘结果放到第三单元中,之后乘积累加放到RESULT里。通过反汇编得到LIST1存放于偏移地址为0000H起始处,其中乘积DBH存放于偏移地址为0002H处,LIST2存放于偏移地址为0004H起始处,其中乘积2BEH存放于偏移地址为0006H 起始处,LIST3存放于偏移地址为0008H处,其中乘积96H存放于偏移地址为000AH处,结果RESULT存放于偏移地址为000CH起始处,经计算RESULT本应该等于40CH,结果却显示43CH。调试结果如下,证明程序是错误的。

该程序是将以ARRAY为首地址的数组[25H,36H,89H,20H,40H,9AH,5BH]求和。通过反汇编得到ARRAY存放于偏移地址为0000H起始处,结果RESULT=239H存放于偏移地址为0009H起始处。调试结果如下,证明程序是正确的。

该程序是利用递归完成一个无符号数N=7的阶乘。通过反汇编得到N存放于偏移地址为0000H处,结果FN=13B0H存放于偏移地址为0002H起始处。调试结果如下,证明程序是正确的。

DEBUG调试程序的应用实验的报告.doc

电子电气工程学院学生实验报告 专业级 1 班 2 组姓名学号 课程名DEBUG 调试程序的应用指导教师成绩 一,实验预习 实验序号1实验题目DEBUG调试程序的应用预习日期 要求: 1.实验目的; 2,实验原理; 3,画出实验原理图; 4 实验设备; 5,预习内容(该实验完成的内容);6,记录表格设计 一实验目的 1、了解 DEBUG调试程序常用命令的基本格式、主要功能和使用方法。 2、熟悉进入或退出DEBUG调试程序运行界面的步骤。 3、掌握用DEBUG调试程序进行程序编辑、调试、运行、结果检查的基本方法。 4、进一步汇编语言上机环境及基本操作 二实验原理 1,启动 DEBUG程序,在 DEBUG环境下建立和汇编程序2,输入程序并汇编 A 2,_A 100 169C(CS):0100(ip) MOV DL, 33 ;DEBUG默认 16 进制数 169C: 0102 MOV AH,2 ;dos 的 2 号功能调用 169C: 0104 INT 2l ;功能调用 169C: 0106 INT(中断)20 ;中断 169C: 0108 ;回车结束程序的输入 3.运行程序_G=0100(全速运行)得到 3 4,用反汇编命令_U。然后分析该程序的指令:33 的 ascll 的值为 3, MOV 是将原操 作数送到DL 中( DL 为目标操作数)。 5,将机器指令程序送到起始地址为200H 的若干单元 6,执行机器指令程序_G=0200得到 3 7,执行 T 命令,实现单步运行。 8,执行 D 命令查看存储单元的原值。 E 是修改内存, R 显示修改内存命令。 四实验设备 微型计算机一台

有图示的用DEBUG调试程序过程示例

用DEBUG调试程序示例 例如:编程实现两个字类型的数相加,把和存在存储单元中,并且用debug查看程序的运行结果,检查程序运行结果的正确性。 参考源程序如下: DATA SEGMENT NUM1 DW 1234H NUM2 DW 5678H SUM DW ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AX,NUM1 ADD AX,NUM2 MOV SUM,AX MOV AH,4CH INT 21H CODE ENDS END START 假设把源程序命名为jiafa.asm,输入源程序后,完成汇编、连接的过程,则生成了可执行文件jiafa.exe。运行此可执行文件时在屏幕上无显示结果。在debug下调试程序的步骤示例如下: 一、进入debug,同时把被调试程序调入内存。 回车后即进入了debug程序,结果如下图所示: 注意:被调试的是可执行文件,而且文件必须写全名,不能只写主文件名。 二、用u命令反汇编(输入u后回车),以便查找需要设置断点的地址。

三、设置断点运行 断点可以设置在程序中的任意一条指令的首地址处,但为了能够查看到程序的运行结果,一般把断点设置在主程序运行完并且程序退出之前,例如程序的最后两条指令是 MOV AH, 4CH INT 21H 则把断点设置在MOV AH, 4CH处,(如果程序较长,一次反汇编没有找到上述指令,再次输入u命令后回车,直到显示上述指令为止,),对于本例,显示如下图所示的结果。 如上图示例中的指令mov ah,4ch的偏移地址是0000F,指令int 21h(debug下默认为16进制,不显示h)的偏移地址是0011,则用G命令设置断点运行时输入g0F(g是debug下的程序运行命令,后面的数字0F是刚才选定的断点地址)回车后结果如下图: 为了能够查看你的程序在内存单元中存放的数据,必须设置断点运行不能只用G命令,并且断点必须是你程序中的某条指令,一般设置在MOV AH, 4CH处。 四、查看内存单元中的数据 查看内存单元的内容用D命令,格式之一如下: D段地址:偏移地址

利用DEBUG调试汇编语言程序段

利用DEBUG调试汇编语言程序段一.实验目的 1.熟悉DEBUG有关命令的使用方法; 2.利用DEBUG掌握有关指令的功能; 3.利用DEBUG运行简单的程序段。 二.实验容 1.进入和退出DEBUG程序; 1)开始—运行,输入cmd,点确定进入命令窗口 2)在命令窗口中输入dubug进入debug程序

3)进入debug窗口后,输入q命令退出debug 2.学会DEBUG中的 1)D命令(显示存数据D 段地址:偏移地址) 例1:-D100 ;显示DS段, 0100开始的128个字节容 说明:指定要显示其容的存区域的起始和结束地址,或起始地址和长度。 ①DSEGREG[起始地址] [L 长度] ;显示SEGREG段中(缺省默认为DS), 以[起始地址] (缺省为当前的偏移地址),开始的[L 长度] (缺省默认为128)个字节的容. ② D SEGREG[段地址:偏移地址]

;显示SEGREG段中(缺省默认为DS), [段地址:偏移地址] 开始的[L 长度] (缺省默认为128)个字节容 -D ;默认段寄存器为DS,当前偏移地址(刚进入debug程序偏移地址为0100H) -D DS:100 ;显示DS段, 0100H开始的128个字节容 -D CS:200 ;显示CS段, 0200H开始的128个字节容 -D 200:100 ;显示DS段, 0200:0100H开始的128个字节容 -D 200;显示DS段, 0200H开始的128个字节容 -D 100 L 10 ;显示DS段, 100H开始的100H个字节容 2)E命令(修改指定存) 例1:-E100 41 42 43 44 48 47 46 45 -D 100,L08

实验一调试程序DEBUG的使用实验报告

南昌理工学院实验报告 二O一二年月日 课程名称:微机原理与接口技术实验名称:调试程序DEBUG的使用班级:姓名:同组人: 指导教师评定:签名: 【一、实验名称】 调试程序DEBUG的使用 【二、实验目的】 1.掌握汇编程序的编辑,编译,连接和执行的全过程; 2.学习和掌握用DEBUG 调试程序的方法。 【三、实验内容和原理】 1.用编辑软件,输入以下汇编语言源程序: DAT SEGMENT A D B 20 ;(自定) B DB 15 ;(自定) Y DB 3 DUP(0) Z DB 0,0 DAT ENDS STA SEGMENT STACK DW 50 DUP(?) STA ENDS COD SEGMENT ASSUME CS:COD,DS:DAT STAR PROC FAR PUSH DS XOR AX,AX PUSH AX MOV AX,DAT MOV DS,AX MOV AX,STA MOV SS,AX MOV AL,A MOV Z,AL MOV Z+1,AL CALL SUB1 MOV AL,B MOV Z,AL MOV Z+1,AL CALL SUB1 MOV AL,A MOV Z,AL MOV AL,B MOV Z+1,AL CALL SUB1 ADD WORD PTR Y,AX ADC BYTE PTR[Y+2],0 RET STAR ENDP SUB1 PROC MOV AL,Z MOV AH,Z+1 MUL AH ADD WORD PTR Y,AX ADC BYTE PTR[Y+2],0 RET SUB1 ENDP COD ENDS END STAR

VB程序调试技巧

一,如果遇到了一些逻辑性很强的问题比如有循环什么的我的方法是在关键地方加入 变量 这样可以比较好地找到问题 二,msgbox 三,监视窗口,如下面的例子 For i=1 to 10000 A=sqr(i) next i 你想再监视当i=799时A的值,就可以添加监视,方法:点调试,添加监视,选择“当监视值为真时中断”,上面表达式框中写上i=799, 这样你按F5,运行程序,程序会在i=799时中断。其他选项你可以自己去琢磨一下。 一个程序如何顺利的“脱产”,调试的过程是非常重要的。学过、钻研过程序设计的人都有同样的感受,很多情况下,调试程序的过程会比程序编写的过程更为困难。任何一个天才都不敢说,他编的程序是100%正确的。几乎每一个稍微复杂一点的程序都必须经过反复的调试、修改,最终才完成。所以说,程序的调试是编程中的一项重要技术。 程序中的典型错误类型 A类:语法错误。 B类:编译错误。

C类:属性设置错误。 D类:逻辑错误。 调试方法 方法一:利用“MSDN帮助菜单” “MSDN帮助菜单”是一个很好的自学工具,对于出现调试对话框的菜单来说,可以按下“帮助”按钮查看错误原因。 对于一些不是很清楚的函数格式、保留字的作用,也可以借助“帮助菜单”。 方法二:逐过程检查 主要检查代码是否写对,位置有没有错误,关键是要确定一段代码是在哪个事件控制下的。 不妨先在脑海中把整个程序过一边,想一想究竟会有哪些事件发生(有些事件是人机互动的,例如:鼠标点击;而有些是机器自己执行的,这时要想到计时器的作用);然后想一想每一件事发生后有什么效果。我们代码所编写的一般就是事件发生后的这个效果,那么以此事件来决定代码所写的位置。

实验一 利用DEBUG调试程序调试程序段

实验一利用DEBUG调试程序调试程序段1.实验目的 (1)熟悉DEBUG有关命令的使用方法。 (2)利用DEBUG掌握有关指令的功能。 (3)利用DEBUG运行简单的程序段。 2.实验内容、实验步骤 (1)进入和退出DEBUG程序。 进入DEBUG程序,Windows中在命令提示符下进入DEBUG如图:退出DEBUG如图: (2)学会DEBUG中的D命令、E命令、R命令、T命令、A命令、G命 令等的使用。对于U命令、N命令、W命令等,也应试一下。 R命令: 1)显示所有寄存器内容: 格式:-R↙ 功能:以十六进制形式显示CPU内部各寄存器的值:以符号形式标志寄存 器各标志位(除TF外)的值,并将CS:IP所指的内存内容反汇编成一条指 令,可视为将要执行的指令。 ●从显示可知,CS=11A7H, IP=0000H. 2)修改寄存器 格式:-R 寄存器名↙ 功能:DEBUG首先显示指定寄存器的当前值,并在下一行首给出提示“:”, 等待用户输入新值,若直接回车相当于不个忙寄存器的值。 ●由显示可知,用E命令修改,再查看可发现数据已经被改了。

3)修改标志值 格式:-RF↙ 功能:先用符号显示当前各标志位的值,并在末尾给出提示符“-”,然后等待用户以符号形式输入新的标志值,对输入的次序没有要求,各标志值之间也可没有空格;若直接在“-”之后回车,则保留原标志值。 ●由显示可知,相应的标志值改变了。 A命令 格式:-A内存地址↙ ●执行汇编命令A后,相应的指令对应的机器码将会依次存放在指定的 内存单元中,并提示下一地址。 U命令 格式:-U 内存块↙

●由显示可知,反汇编命令U从指定的内存地址开始对内存块进行反汇 编,并分三列显示反汇编的结果。 N命令 格式:-N【e】【PA TH】文件名.扩展名↙ W命令L命令 格式:-W/L 内存地址 ●由显示可知,命令N为命令W和命令L指定文件,而命令W把指定 内存块的内容写入命令N指定文件中,命令L则将其文件装入内存地址中。 T命令 1)单步执行 格式:-T=内存地址↙ ●由显示可知,T命令将内存地址的段地址和偏移地址修改CS和IP,然 后执行由CS:IP指向的内存单元处的一条指令,显示各寄存器的值,并反编下一条指令,然后返回DEBUG状态。

PLC程序调试方法及步骤

来源:中国物资采购网时间:2010年5月6日11时20分【大中小】PLC程序的调试可以分为模拟调试和现场调试两个调试过程,在此之前首先对PLC外部接线作仔细检查,这一个环节很重要。外部接线一定要准确无误。也可以用事先编写好的试验程序对外部接线做扫描通电检查来查找接线故障。不过,为了安全考虑,最好将主电路断开。当确认接线无误后再连接主电路,将模拟调试好的程序送入用户存储器进行调试,直到各部分的功能都正常,并能协调一致地完成整体的控制功能为止。 1.程序的模拟调试 将设计好的程序写入PLC后,首先逐条仔细检查,并改正写入时出现的错误。用户程序一般先在实验室模拟调试,实际的输入信号可以用钮子开关和按钮来模拟,各输出量的通/断状态用PLC上有关的发光二极管来显示,一般不用接PLC实际的负载(如接触器、电磁阀等)。可以根据功能表图,在适当的时候用开关或按钮来模拟实际的反馈信号,如限位开关触点的接通和断开。对于顺序控制程序,调试程序的主要任务是检查程序的运行是否符合功能表图的规定,即在某一转换条件实现时,是否发生步的活动状态的正确变化,即该转换所有的前级步是否变为不活动步,所有的后续步是否变为活动步,以及各步被驱动的负载是否发生相应的变化。 在调试时应充分考虑各种可能的情况,对系统各种不同的工作方式、有选择序列的功能表图中的每一条支路、各种可能的进展路线,都应逐一检查,不能遗漏。发现问题后应及时修改梯形图和PLC中的程序,直到在各种可能的情况下输入量与输出量之间的关系完全符合要求。 如果程序中某些定时器或计数器的设定值过大,为了缩短调试时间,可以在调试时将它们减小,模拟调试结束后再写入它们的实际设定值。 在设计和模拟调试程序的同时,可以设计、制作控制台或控制柜,PLC之外的其他硬件的安装、接线工作也可以同时进行。 2.程序的现场调试 完成上述的工作后,将PLC安装在控制现场进行联机总调试,在调试过程中将暴露出系统中可能存在的传感器、执行器和硬接线等方面的问题,以及PLC的外部接线图和梯形图程序设计中的问题,应对出现的问题及时加以解决。如果调试达不到指标要求,则对相应硬件和软件部分作适当调整,通常只需要修改程序就可能达到调整的目的。全部调试通过后,经过一段时间的考验,系统就可以投入实际的运行了。 本文来自: 中国物资采购网https://www.doczj.com/doc/a816562313.html, 详细出处参考:https://www.doczj.com/doc/a816562313.html,/newsinfo/2010-5-6/201056-11200321719338297.html PLC程序现场调试指在工业现场,甩有设备都安装好后,所有连接线都接好后的实际调试。也是PLC程序的最后调试。现场调试的目的是,调试通过后,可交给用户使用,或试运行。现场调试参与的人员较多,要组织好,要有调试大纲。依大纲,按部就班地一步步推进。开始调试时,设备可先不运转,甚至了不要带电。可随着调试的进展逐步加电、开机、加载,直到按额定条件运转。具体过程大体是: 1)、要查接线、核对地址。要逐点进行,要确保正确无误。可不带电核对,那就是查线,较麻烦。也可带电查,加上信号后,看电控系统的动作情况是否符合设计的目的。 2)、检查模拟量输入输出。看输入输出模块是否正确,工作是否正常。必要时,还可用标准仪器检查输入输出的精度。 3)、检查与测试指示灯。控制面板上如有指示灯,应先对应指示灯的显示进行检查。一方面,查看灯坏了没有,另一方面检查逻辑关系是否正确。指示灯是反映系统工作的一面镜子,先调好它,将对进一步调试提供方便。 4)、检查手动动作及手动控制逻辑关系。完成了以上调试,继而可进行手动动作及手动

DEBUG调试程序 (2)

一、实验目的 1、掌握DEBUG的常用命令,学会使用DEBUG。 2、深入了解数据在存储器中的存取方法,及堆栈中数据的压入和弹出。 3、掌握各种寻址方法以及简单指令的执行过程。 二、实验设备及环境 1.安装Windows 7操作系统的计算机 三、实验内容及步骤(截图并对图示进行必要的文字说明) 1、练习debug的命令 1、汇编命令A(Assemble Command)将汇编语言程序直接会变进入内存 2、反汇编命令U(Unassemble Command)将制定地址范围内的代码以汇编语言 形式显示,同时显示该代码位于内存的地址和机器码

3.显示内存单元内容命令D(Dump Command)显示制定内存范围的内容 显示偏移地址为100-115的内容: 4. 修改存储单元内容命令E(Enter Command) a. 用命令所给定的内容表去代替指定地址范围的内存单元内容。 b. 一个单元一个单元地连续修改单元内容。 例:往200H为起始地址的单元存放一串16进制数。 查看这些数据是否替换了原来单元的内容 5、检查和修改寄存器内容命令R(Register Command) 格式:a. R b. R [寄存器名]

功能:a. 显示CPU所有寄存器的内容和全部标志位状态。 b. 显示和修改一个指定寄存器内容和标志位的状态。 例如:显示所有寄存器的内容和全部标志位状态 例如:修改寄存器BX的内容为3000 例如:修改标志位零ZF为ZR,方向标志DF为DN 6、单步执行命令T(Trace Command) 格式:a. T[=地址] b. T[=地址] [条数] 例:用T命令格式b执行以上程序: 若单步执行3条指令,可采用b格式。 7、运行命令G(Go Command)执行用户正在调试的程序

Keil-C51程序调试过程

如何使用Keil C软件调试单片机程序 调试一般都是在发生错误与意外的情况下使用的。如果程序能正常执行,调试很多时候都是用不上的。所以,最高效率的程序开发还是程序员自己做好规范,而不是指望调试来解决问题。 单片机的程序调试分为两种,一种是使用软件模拟调试,第二种是硬件调试。 使用软件模拟调试,就是用计算机去模拟单片机的指令执行,并虚拟单片机片内资源,从而实现调试的目的。但是软件调试存在一些问题,不可能像真正的单片机运行环境那样执行的指令能在同一个时间完成(往往比单片机慢)。软件调试只能是一种初步的,小型工程的调试,比如一个只有几百上千行的代码的程序,软件调试能很好的完成。 硬件调试其实也需要计算机软件的配合,大致过程是这样的:计算机软件把编译好的程序通过串行口、并行口或者USB口传输到仿真器,然后与单片机一样执行。仿真器仿真全部的单片机资源(所有的单片机接口,并且有真实的引脚输出)。仿真器会将单片机内部内存与时序等情况返回给计算机,这样就可以在计算机里看到单片机程序真实的执行情况。不仅如此,还可以通过计算机的软件实现单步、全速、运行到光标的常规调试手段。仿真器可以接入实际的电路中。 图1:仿真器 下面将具体介绍如何使用Keil uVision 软件来调试单片机程序。 首先:打开一个已经编译通过的单片机项目。选择Debug下面的Start/Stop Debug Session,这个选项可以打开调试也可以关闭调试。

接下来看到的窗口就是调试窗口了: 下面具体说说相关子窗口的功能: 1、左侧的ProjectWorkspace Regs是片内内存的相关情况值;Sys是系统一些累加器、计数器等。Regs

DEBUG的使用及程序调试方法

实验一 DEBUG的使用及程序调试方法 一.实验目的 1、掌握常用DEBUG命令以及调试简单程序。 2、掌握常用汇编指令的功能及其书写格式。 3、掌握在DUBUG下进行简单程序设计并调试。 二.实验环境 微型计算机一台 DOS或WINDOWS操作系统,MASM开发套件。 三.实验原理 DEBUG是专门为汇编语言设计的调试工具软件,它通过单步、设置断点等方式,为使用者提供了非常有效的调试手段。在DEBUG 下所有输入的数据都是十六进制,所以不需要后面加H。并且不区分大、小写字母。 1、直接启动DEBUG程序 如https://www.doczj.com/doc/a816562313.html,在C盘的根目录下,启动的方法是: C:\>DEBUG _ 这时屏幕上会出现“_”提示符,等待键入DEBUG命令。 2、启动DEBUG程序的同时装入被调试文件 命令格式如下: C:\>DEBUG [d:][PATH]filename[.EXT] [d:][PATH]是被调试文件所在盘及其路径,filename是被调试文件的文件名,[.EXT]是被调试文件的扩展名。 3、DEBUG的主要命令

(1)检查和修改寄存器内容的命令R,它有三种方式:1)显示CPU内部所有寄存器内容和标志位状态,格式为:-R R命令显示中标志位状态的含义如下表所示: 标志名置位复位溢出Overflow(是/否)OV NV 方向Direction(减量/增量)DN UP 中断Interrupt(允许/屏蔽)EI DI 符号Sign(负/正)NG PL 零Zero(是/否)ZR NZ 辅助进位Auxiliary Carry(是/否)AC NA 奇偶Parity(偶/奇)PE PO 进位Carry(是/否)CY NC 2)显示和修改某个指定寄存器内容,格式为:-R 寄存器名例如输入:-R AX 系统将响应如下: AX F1F4 : 表示AX当前内容为F1F4,此时若不对其作修改,可按ENTER键,否则,输入修改后内容,如: -R BX BX 0369 :059F 则BX内容由0369改为059F 3)显示和修改标志位状态,命令格式为:-RF 系统将给出响应,如 OV DN EI NG ZR AC PE CY- 这时若不作修改可按ENTER键,否则在“-”号之后键入修改值,键入顺序任意。如 OV DN EI NG ZR AC PE CY-PONZDINV (2)显示内存单元内容的命令D,格式为:-D[地址]或-D[范围]

C语言程序调试方法.

所谓程序调试是指对程序的查错和排错。 调试程序一般应经过以下几个步骤: 一、先进行人工检查,即静态检查。 在写好一个程序以后,不要匆匆忙忙上机,而应对程序进行人工检查。这一步十分重要,它能发现程序设计人员由于疏忽而造成的多数错误。这一步往往容易被人忽视,总希望把一切都推给计算机去做,但这样会多占用机器时间,作为一个程序人员应当养成严谨的作风,每一步都要严格把关,不把问题留给后面的工序。 为了更有效地进行人工检查,所编的程序应力求做到以下几点: ①应当采用结构化程序方法编程,以增加可读性; ②尽可能多加注释,以帮助理解每段程序的作用; ③在编写复杂的程序时不要将全部语句都写在main函数中,而要多利用函数,用一个函数来实现一个单独的功能。各函数之间除用参数传递数据外,尽量少出现耦合关系,这样便于分别检查和处理。 二、在人工检查无误后,再上机调试。 通过上机发现错误称为动态检查。在编译时会给出语法错误的信息,调试时可以根据提示信息具体找出程序中出错之处并改正。应当注意的是有时提示出错的地方并不是真正出错的位置,如果在提示出错的行找不到错误的话应当到上一行再找。有时提示出错的类型并非绝对准确,由于出错的情况繁多且各种错误互有关联,因此要善于分析,找出真正的错误,而不要只从字面意义上找出错信息,钻牛角尖。 如果系统提示的出错信息很多,应当从上到下逐一改正。有时显示出一大片出错信息往往使人感到问题严重,无从下手。其实可能只有一二个错误。例如,对使用的变量未定义,编译时就会对所有含该变量的语句发出出错信息。这时只要加上一个变量定义,就所有错误都消除了。 三、在改正语法错误(包括“错误(error)”和“警告(warning)”)后,程序经过连接(link)就得到可执行的目标程序。运行程序,输入程序所需数据,就可得到运行结果。应当对运行结果作分析,看它是否符合要求。有的初学者看到运行结果就认为没问题了,不作认真分析,这是危险的。 有时,数据比较复杂,难以立即判断结果是否正确。可以事先考虑好一批“试验数据”,输入这些数据可以很容易判断结果正确与否。例如解方程ax2+bx+c=0,输入a、b、c的值分别为1、-2、1时,根x的值是1。这是容易判断的,若根不等于1,程序显然有错。但是,用“试验数据”时,程序运行结果正确,还不能保证程序完全正确。因为有可能输入另一组数据时运行结果不对。例如,用公式

用debug调试程序

实验二用DEBUG调试程序 一、实验目的 学习利用DEBUG调试程序的基本思想及方法 二、实验环境: 1.硬件:PC微机 2.软件:DOS系统、EDIT.EXE、MASM.EXE、LINK.EXE、DEBUG.EXE 三、实验内容 利用DEBUG调试程序,可以将一个可执行程序(如.EXE、.COM等)装入内存中,并接管对程序运行的控制权,通过采取如反汇编、断点运行、单步执行、寄存器内容修改等方法,对可执行程序进行跟踪、调试,以找出其中的设计错误,然后再对源程序进行相应修改,重新生成正确的可执行程序。 1.准备被调试程序: 假定所有有关文件均在当前路径C:\MYTEST>下,按照实验一的步骤生成一个被调试的可执行 2.

进入DEBUG环境:(其中斜体部分由键盘输入。) 其中,短线‘-’作为DEBUG环境的操作提示符,在此提示符下,可以输入各种DEBUG 命令,对可执行程序TEST.EXE进行跟踪调试。 3.主要调试命令: 1)反汇编命令U:将存储器中的二进制数据翻译成较有意义的助记符形式,以帮助理 解。一般常用以下格式: a)-U↘:从当前IP处开始,对连续约32字节内容反汇编。如对TEST.EXE,刚装入 DEBUG时的IP=0000,则在输入U命令后有如下显示: 在上例中,12B7:0000表示CS:IP的内容(其中CS的值是动态值);B8B612代表该处存放的二进制数据,亦即指令MOV AX,12B6的机器代码;当连续约32字节的数据反汇编完后,重新回到DEBUG提示符“-”下,如果再键入U命令,则将继续对后面的内存区反汇编。

特别应该注意的是,由于反汇编命令针对内存区的二进制数据,而被调试程序仅占内存区的某一部分,故反汇编出来的内容并非全是被调试程序的代码,如上例中的JMP 0063以后的部分,显然不是TEST.EXE的内容。另外还需注意,DEBUG默认使用十六进制。 b)–U 0123↘:从指定的IP=0123处开始,对连续约32字节内容反汇编。 c)–U 0123 0143↘:从指定的IP=0123处开始反汇编,直至指定的0143处结束。 2)显示寄存器命令R:显示或修改寄存器的内容。一般常用以下形式: a)-R↘:显示所有寄存器当前的内容及当前将执行的指令。如对TEST.EXE,在程序 运行之前,键入R命令: 在显示寄存器内容时,标志寄存器F(或程序状态字寄存器PSW)表示成各个分离的标志位, b)-R AX↘:显示指定的AX寄存器当前的内容,并等待键入新值;如果不作修改, 可直接回车。如: c)-R F↘:显示标志寄存器F各个标志位的内容,并等待键入新的标志位;如果不 作修改,可直接回车。如: 3)运行命令G:使程序在DEBUG控制下运行,一般有全程、断点运行两种方式。 a)-G↘:控制程序由当前IP处运行,直至程序结束。如果当前IP为初始值,其作 用则相当于直接在DOS下运行程序,一般用于快速观察程序的运行情况。 b)-G 0123↘:控制程序由当前IP处运行,直至指定的断点IP=0123H处,程序暂停, 显示各个寄存器的当前值及断点处指令,然后返回DEBUG提示符“-”下。如对 TEST.EXE,若想观察字符串显示的入口参数是否设置好,则可以断点运行至000A 处: 断点一般选取在需要观察的地方,当程序停下来后,可以根据各方面的情况(如寄存器、缓冲区、标志等)来判断程序是否运行正确。

单片机程序调试步骤

步骤: ①首先建立工程项目文件; ②为工程选择目标器件(如TA89S52); ③工程项目设置软硬件调试环境; ④创建源程序文件并输入程序代码; ⑤保存创建的源程序项目文件; ⑥把源程序文件添加到项目中; 第一步:建立工程项目文件 双击桌面Keil uVision3.LNK快捷图标得到图1 KEIL 图标 在打开的下界面中点工程项得到图2。 图1 打开工程下拉菜单,选择点击“新建工程“,首先在这里要新建一个工程项目文件。 图2 为工程文件取一个名称,确定选择存放的路径(事先为每一个工程单独建立一个目录),在建立工程时形成的所有文件全部存放在这个目录下,如起工程名y2(此时不加后缀),保存类型选择 Project Files(*.uv2)点保存

选择新建工 图3 接下来选择CPU驱动芯片,如AT89S52芯片,然后点确定。 图4 这时提示:复制标准的8051开始代码到工程项目文件夹或添加文件到工程项目文件夹?(如果选择Y之后将会产生一个STARTUP文件,对我们实验是一个无用的文件,会在个别计算机上会导致不能创建目标文件,同时会产生一个空白的工程项目文件),选择N之后只建立一个空白的工程项目文件,我们选N便于操作。 至此用户就完成了建立一个空白的工程项目文件,并为工程选好了目标器件,但却是空白的工程项目文件。 第二步:建立源文件 在界面中打开文件下拉菜单,在打开的选项中点“新建”,产生一个新建空白文件。

点新建 图1 在新建空白文件中输入源程序文件 图3 在确认源程序无错时点保存,这时界面上弹出提示“另存为”菜单,选择好保存路径,也就是刚才保存建立工程项目文件的目录路径,输入文件名,如(要有后缀,汇编程序是*.asm),然后点击保存。 图4这时仅仅是完成了汇编程序的建立而已,但汇编程序与工程项目文件现在还没建立任何关系,此时应把源程序文件添加到工程中,构成一个完整的工程项目。 第三步:将源程序文件添加到工程项目中

Debug调试程序的主要命令

Debug调试程序的主要命令 DEBUG..EXE程序(DOS、Windows都提供)是专门为分析、研制和开发汇编语言程序而设计的一种调试工具,具有跟踪程序执行、观察中间运行结果、显示和修改寄存器或存储单元内容等多种功能。也是我们学习汇编语言必须掌握的调试工具,必须熟练掌握其一些的命令的使用。 一、DEBUG程序的启动和退出 1.直接启动 DEBUG..EXE是DOS环境下的可执行程序。在DOS提示符下键入命令:如:C:> DEBUG ↙ 在调用DEBUG程序后,出现“一”提示符,等待使用DEBUG命令。 2.启动DEBUG并装入需要调试的用户程序 命令格式: C:> DEBUG [盘符:][路径][文件名.EXE][参数1][参数2] 二、DEBUG程序的常用命令 1.DEBUG下汇编语言的语法规则 ①所有数值全为十六进制数,且不需要加后缀…H?; ②只能使用DB或DW,直接把字节、字的数值或字符串的ASCⅡ码送入相应单元中;(DD、DQ、DT)是另外三个可以定义变量的. ③不允许使用变量和标号,但变量和标号可用直接地址代替,且直接地址加方括号;START: MOV AX,BX LOOP [1000H] ④短、近和远转移或调用的目标地址,取决于到目标地址的字节位移量。远返回的助记符为RETF。 ⑤修改存储单元字节操作数类型,用BY(BYTE PTR),修改存储单元字操作数类型,用WO(即WORD PTR)。段超越助记符为CS:、DS:、ES:和SS:2.DEBUG的常用命令 (1)汇编命令 A 格式:A [地址] 功能:使用A命令可以直接在Debug中输入汇编指令,输入的汇编语言指令语句从指定的地址单元开始存放。若缺省起始地址,则从当前CS:100地

实验一 DEBUG调试程序的使用

实验一DEBUG调试程序的使用实验 一、实验目的 1.熟悉 DEBUG 调试程序中的常用命令。 2.学会在 DEBUG 下调试运行汇编语言源程序。 二、实验内容 1.熟悉DEBUG常用命令的使用: A、U、D、E、R、G、T、L、W、Q常用命令。2.在DEBUG下编写汇编语言程序,实现多字节(5个字节)十进制加法。 三、实验用设备仪器及材料 硬件:计算机软件:DEBUG调试软件 四.实验方法和步骤 1.在开始菜单\命令提示符下,进入DOS环境。 2.在DOS目录下启动DEBUG。 3.熟悉DEBUG常用命令,详细记录每一步所用的命令及查看结果的方法和具体结果。4.在DEBUG下编写程序,实现多字节十进制加法实验。 五.实验提示 DEBUG常用命令 A:编辑和汇编源程序。格式:-A 地址 U:反汇编验证源程序。格式:-U 地址 R:观察或修改寄存器的内容。 D:显示存储单元的内容。格式:-D 地址 E:修改存储单元的内容。 格式1:-E 地址 格式2:-E 地址单元数据单元数据…… G:设置断点运行源程序。格式:-G=首地址末地址 T:单步执行程序。执行结束后显示 AX、BX、CS、IP 寄存器内容的变化,并显示下一条要执行的指令的地址和内容。 格式:-T=地址或者-T=地址值 N:文件命名。格式:-N *.com L:将某个文件或特定磁盘扇区的内容加载到内存。格式:-L 地址 W:将程序写到磁盘。如果不指定 address,Debug 程序将从 CS:100 开始。在写盘操作之前要用R命令修改bx,cx的内容(存放写的字节数)。

Q:退出 本次实验的内容均在 DEBUG 下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。

C++程序调试方法和技巧

程序调试方法和技巧 一、改正程序的编译期错误 源程序编制完成后,首先由C++编译程序编译成.obj文件,再由连接程序连接成可执行文件。在编译时,如果源程序存在语法错误(errors),则系统不允许连接,直到改正了所有的语法错误后,才能进行连接。另外,编译时还可能存在另一类错误,即警告性错误(warnings),这类错误一般不影响程序的连接,在很多情况下也不影响程序的执行结果,但建议还是尽量把这类错误改正。 选择编译菜单(Compile)(或者直接单击快捷工具栏上的编译按钮)对编译好的源程序进行编译,在集成环境下方的OutPut窗口中将会显示相应的编译信息(若OutPut窗口没有出现,则可以在快捷工具栏上右键单击并在弹出的菜单中选择OutPut菜单项即可打开(或关闭)OutPut窗口)。若程序编译没有发现错误,则该窗口中显示“***.exe - 0 error(s), 0 warning(s)”,这时可以进行程序的连接;若编译后存在语法错误或警告错误,该窗口中则显示两类错误的个数,并列出相应的错误位置和原因。 改正编译期错误的方法和一般原则为: 1.改正错误时一般从第一个错误开始,然后依次改正后续的错误。因为前面错误的出现,往往会导致编译系统在编译时错位,把本来正确的 语句认为是错的,也可能把某些语句的错误掩盖掉。所以当改正了前 面的错误后,可能会使错误量减少很多,也可能增加很多; 2.在OutPut窗口中双击指定错误,则系统会自动定位到该错误出现的位置,并在错误语句前面用一个蓝色子弹头标识。注意,该标识只是告 诉程序员编译时在此位置出错了,真正的错误可能出现在该标识语句 的前一语句或后一语句,如函数定义时,在小括号后加了分号,错误 标识将出现在左大括号处; 3.根据情况,每改正一个或几个错误后,应重新编译一下,然后再从第一个错误进行改错,直到所有错误都被改正过来。 二、程序执行时的调试 实践中发现,往往很小的程序在执行时也会出现错误。当一个程序可以被连接成功,但执行时却存在不正常现象,如不能得到预期的运行结果或出现死机等,而一下子又很难找出出错原因时,可以采取以下方法查错、改错。 1.单步跟踪执行命令

利用DEBUG调试汇编语言程序段

利用DEBUG调试汇编语言程序段

利用DEBUG调试汇编语言程序段 一.实验目的 1.熟悉DEBUG有关命令的使用方法; 2.利用DEBUG掌握有关指令的功能; 3.利用DEBUG运行简单的程序段。 二.实验内容 1.进入和退出DEBUG程序; 1)开始—运行,输入cmd,点确定进入命令窗 口 2)在命令窗口中输入dubug进入debug程序

3)进入debug窗口后,输入q命令退出debug

2.学会DEBUG中的 1)D命令(显示内存数据D 段地址:偏移地址) 例1:-D100 ;显示DS段, 0100开始的128个字节内容 说明:指定要显示其内容的内存区域的起始和结束地址,或起始地址和长度。 ①D SEGREG[起始地址] [L 长度] ;显示SEGREG段中(缺省内默认为DS), 以[起始地址] (缺省内为当前的偏移地址),开始的[L 长度] (缺省内默认为128)个字节的

内容. ②D SEGREG[段地址:偏移地址] ;显示SEGREG段中(缺省内默认为DS), [段地址:偏移地址] 开始的[L 长度] (缺省内默认为128)个字节内容 -D ;默认段寄存器为DS,当前偏移地址(刚进入debug程序偏移地址为0100H) -D DS:100 ;显示DS段, 0100H开始的128个字节内容 -D CS:200 ;显示CS段, 0200H开始的128个字节内容 -D 200:100 ;显示DS段, 0200:0100H

开始的128个字节内容 -D 200;显示DS段, 0200H开始的128个字节内容 -D 100 L 10 ;显示DS段, 100H开始的100H个字节内容 2)E命令(修改指定内存) 例1:-E100 41 42 43 44 48 47 46 45 -D 100,L08 结果:08F1:0100 41 42 43 44 48 47 46 45 例2:-E 100: 08F1:0100 76 42 :42是操作员键入 此命令是将原100号内存内容76修改为42,用D命令可察看。

DEBUG调试程序的使用

DEBUG调试程序的使用 一、DEBUG的启动 在DOS系统提示符下,运行DEBUG命令即可启动。 命令格式:DEBUG [文件名全称] 功能:启动DEBUG调试程序,并把指定名字的文件装载入内存,以供调试。 说明:启动DEBUG,实际就是让计算机执行DEBUG.EXE这个调试程序。若该程序不在当前目录下,需要在命令中指定该程序所在的位置路径(包括其所在磁盘和文件夹)。 文件名全称指定要调试的文件名及其所在的位置路径。若指定该选项,则在启动DEBUG时把该文件装载入内存,以供调试,该文件一般是EXE文件或COM文件。若不指定该选项,则只启动DEBUG,不装载文件。 二、DEBUG常用命令 1、D——显示内存单元内容的命令 格式:D[开始地址[结束地址]] 说明:①若“开始地址”和“结束地址”都指定,则显示指定地址范围内的内存单元的内容;若只指定“开始地址”,省略“结束地址”,则显示从“开始地址”开始的80H个字节的内容;若“开始地址”和“结束地址”都省略,则显示从上次显示的末字节单元的下一个字节开始的80H个字节的内容。 ②“开始地址”可包含段地址,若省略段地址,则默认使用DS的值作段地址。 2、E——输入内容(修改内存单元内容)命令 格式:E开始地址[数据表列] 说明:①若指定数据表列,则用数据表列中的数据存入从指定地址开始的内存单元中;若省略数据表列,则先显示指定开始地址的内存单元的内容,等待你修改。若需要修改,输入其内容,按空格键显示、修改下一个内存单元内容;若不需要修改,直接按空格键显示、修改下一个内存单元内容,修改完成后按回车键。 ②“开始地址”可包含段地址,若省略段地址,则默认使用DS的值作段地址。 3、F——填充内容(修改内存单元内容)命令 格式:F开始地址结束地址数据表列 说明:①用数据表列中的数据存入由开始地址和结束地址指定范围内的内存单元。若数据表列中的数据少于指定地址范围的内存单元数,则循环使用表列中的数据存入内存单元,若数据表列中的数据多于指定地址范围的内存单元数,则多余的数据被忽略。 ②“开始地址”可包含段地址,若省略段地址,则默认使用DS的值作段地址。 4、R——显示和修改寄存器内容命令 格式:R[寄存器名] 说明:省略寄存器名时,显示所有寄存器的内容;当指定寄存器名时,系统先显示指定名字的寄存器的内容,并等待用户输入新的内容,若不需修改,可直接按回车键。用F代表Flags寄存器的名字,即RF命令可显示修改Flags的内容。 5、A——汇编命令 格式:A[开始地址] 说明:①允许用户输入汇编指令(程序段),系统自动把其转变成机器指令,并依次存入指定地址开始的内存单元中。若省略开始地址,则第一次使用A命令时默认开始地址为CS:0100H,以后使用时的默认开始地址为上次用A命令后的下一个内存单元的地址。 ②开始地址一般不指定段地址,默认使用CS的值作段地址。 6、U——反汇编命令

微机实验一 调试程序DEBUG的使用

南昌航空大学实验报告 课程名称:微机原理实验名称: 调试程序DEBUG的使用 班级:09045131 学生姓名:杨望学号:09045131 指导教师评定:签名: 一、实验目的 1、熟悉DEBUG有关命令的使用方法。 2、学习DEBUG掌握有关指令的功能。 3、学习如何使用DEBUG运行简单的程序段。 二、实验内容 1、运行DEBUG,并对一些命令进行操作,例如利用DEBUG验证加法等。 2、利用DEBUG运行一段简单的程序段,例如输出字符串“ABC”。 三、实验步骤: 1、熟悉DEBUG并进行操作 运行CMD,在Windows提示符下输入DEBUG命令进入DEBUG操作,不区分大小写。 (1)格式:-?;屏幕显示DEBUG各项命令提示 C:\DOCUME~1\ADMINI~1>debug -? assemble A [address] compare C range address dump D [range] enter E address [list] fill F range list go G [=address] [addresses] hex H value1 value2 input I port load L [address] [drive] [firstsector] [number] move M range address name N [pathname] [arglist] output O port byte proceed P [=address] [number] quit Q register R [register] search S range list trace T [=address] [value] unassemble U [range] write W [address] [drive] [firstsector] [number] allocate expanded memory XA [#pages] deallocate expanded memory XD [handle]

相关主题
文本预览
相关文档 最新文档