资源描述:
《微机原理与接口技术 软件实验报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验一DEBUG的使用一、实验目的1.掌握汇编程序的编辑,编译,连接和执行的全过程;2.学习和掌握用DEBUG调试程序的方法。二、实验任务及内容1.用编辑软件,输入以下汇编语言源程序:DATSEGMENTADB20;(自定)BDB15;(自定)YDB3DUP(0)ZDB0,0DATENDSSTASEGMENTSTACKDW50DUP(?)STAENDSCODSEGMENTASSUMECS:COD,DS:DATSTARPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATMOVDS,A
2、XMOVAX,STAMOVSS,AXMOVAL,AMOVZ,ALMOVZ+1,ALCALLSUB1MOVAL,BMOVZ,ALMOVZ+1,ALCALLSUB1MOVAL,AMOVZ,ALMOVAL,BMOVZ+1,ALCALLSUB1ADDWORDPTRY,AXADCBYTEPTR[Y+2],0RETSTARENDPSUB1PROCMOVAL,ZMOVAH,Z+1MULAHADDWORDPTRY,AXADCBYTEPTR[Y+2],0RETSUB1ENDPCODENDSENDSTAR2.通过编译,连
3、接形成可执行文件;3.用DEBUG将可执行文件调入,并进行调试;(1)用D命令观察数据区在内存中的具体内容,记录单元A和B的具体地址;(2)用U命令对目标代码反汇编,观察反汇编后的结果.注意发现源程序的起始位置,并记录这个起始地址;(3)用T命令作单步跟踪调试.比较每条指令执行后的结果和原来的理解是否一致.得出程序运行的结果:它们是写在什么单元,具体内容是什么,并判断结果是否正确;(4)在子程序SUB1的入口处设一断点,用G命令执行程序,在断点处观察堆栈的内容,比较堆栈的内容和程序返回地址是否一致;(
4、5)用E命令修改单元A,B的内容,重新执行程序,并记录结果;(6)用M命令和A命令对程序进行修改:将主程序中最后两条指令(ADD和ADC)修改为一条CALLSUB1指令,重新执行程序;(7)退出DEBUG;4.重新使用编辑软件,把源程序最后一句中的STAR去掉.再次生成可执行文件,并用DEBUG调入内存.当使用U命令时,显示的结果与前一次(未加STAR)的结果有何不同?三、程序流程图开始调用SUB1子程序并返回保存现场DS段初始化赋值:Z=20Z+1=20调用SUB1子程序并返回赋值:Z=15Z+1=
5、15调用SUB1子程序并返回赋值:Z=20Z+1=15结束AX与Y带进位相加四、源程序见实验任务及内容五、程序运行结果(1)U命令对目标代码反汇编,注意发现源程序的起始位置,并记录这个起始地址。答:源程序起始地址:1512:0000H。(2)D命令观察数据区在内存中的具体内容,记录单元A和B的具体地址。答:150A:0000H是A的具体地址,150A:0001H是B的具体地址。(3)T命令作单步跟踪调试.比较每条指令执行后的结果和原来的理解是否一致。得出程序运行的结果:它们是写在什么单元,具体内容是什
6、么,并判断结果是否正确。答:由于单步调试的结果较多,在这里仅说几项以示情况。①PUSHAX后观察得到IP值自加2。②MOVDS,AX后DS的值由14FAH变成150AH。③Z的偏移地址为0005H,而寻址Z中的内容成为[0005H]。所以结果一致正确。(4)在子程序SUB1的入口处设一断点,用G命令执行程序,在断点处观察堆栈的内容,比较堆栈的内容和程序返回地址是否一致。答:SS=150BH,IP=0017H,和程序返回地址一致。(5)用E命令修改单元A,B的内容,重新执行程序,并记录结果。(6)用M命
7、令和A命令对程序进行修改:将主程序中最后两条指令(ADD和ADC)修改为一条CALLSUB1指令,重新执行程序。(6)重新使用编辑软件,把源程序最后一句中的STAR去掉.再次生成可执行文件,并用DEBUG调入内存.当使用U命令时,显示的结果与前一次(未加STAR)的结果有何不同?答:整个代码段仅有一条指令,ADD[BX+SI],AL。由于把源程序最后一句中的STAR去掉,那么程序就不一定是从STAR开始,会造成程序混乱。(结果抓图见下页)六、预习题1.熟悉常用的DEBUG命令。u地址反汇编dxx:偏移
8、地址xx:csdssses查看内存单元的内容t=开始地址[结束地址]跟踪执行p跳过子程序单步运行g=开始地址[断点地址]执行到断点处g全速运行r查看寄存器内容rxxxx:寄存器名称,修改寄存器内容exx:偏移地址xx:csdssses修改内存单元的内容a偏移地址汇编,录入程序或可修改语句2.阅读并分析程序的功能。(见程序流程图)3.若SS=2000H,SP=FFFFH,向堆栈中压入4字节数据后,如何用D命令显示压入堆栈的内容?答:D2000:FFFCH。