微机原理软件实验报告学院:信息与通信工程学院班级:XXXXXX姓名:XXXXX学号:XXXXXXXX班内序号:XXXXX日期:2017年11月30日目录微机原理软件实验报告..................................................................11.实验一....................................................................32.实验二....................................................................73.实验三...................................................................134.实验四...................................................................205.实验五...................................................................306.总结及结论...............................................................397.参考文献................................................................39实验一DEBUG的使用一、实验目的:1.掌握汇编程序的编辑,编译,连接和执行的全过程;2.学习和掌握用DEBUG调试程序的方法.二、实验内容:1.用编辑软件,输入以下汇编语言源程序:DATSEGMENT;默认ds段ADB20;(自定)BDB15;(自定)YDB3DUP(0)ZDB0,0DATENDSSTASEGMENTSTACKDW50DUP(?)STAENDSCODSEGMENTASSUMECS:COD,DS:DATSTARPROCFARPUSHDSXORAX,AX;AX清零PUSHAXMOVAX,DATMOVDS,AXMOVAX,STAMOVSS,AXMOVAL,AMOVZ,ALMOVZ+1,ALCALLSUB1;A*AMOVAL,BMOVZ,ALMOVZ+1,ALCALLSUB1;A*A+B*BMOVAL,AMOVZ,ALMOVAL,BMOVZ+1,ALCALLSUB1;A*A+B*B+A*BADDWORDPTRY,AX;A*A+B*B+A*B+A*B-->(A+B)^2ADCBYTEPTR[Y+2],0RETSTARENDPSUB1PROCMOVAL,ZMOVAH,Z+1MULAHADDWORDPTRY,AXADCBYTEPTR[Y+2],0RETSUB1ENDPCODENDSENDSTAR2.通过编译,连接形成可执行文件。3.用DEBUG将可执行文件调入,并进行调试。(1)用D命令观察数据区在内存中的具体内容,记录单元A和B的具体地址。(2)用U命令对目标代码反汇编,观察反汇编后的结果.注意发现源程序的起始位置,并记录这个起始地址。(3)用T命令作单步跟踪调试.比较每条指令执行后的结果和原来的理解是否一致。得出程序运行的结果:它们是写在什么单元,具体内容是什么;并判断结果是否正确。(4)用E命令修改单元A,B的内容,重新执行程序,并记录结果。(5)退出DEBUG。三、预习题:1.熟悉常用的DEBUG命令。2.阅读并分析程序的功能。答:程序实现了(A+B)^2的功能。3.若SS=2000H,SP=FFFFH,向堆栈中压入4字节数据后,如何用D命令显示压入堆栈的内容?答:使用指令“d2000:0000”即可显示压入堆栈的内容,因为SP+1会溢出,所以变成0000。四、实验过程a.通过masm和link命令使得程序编译链接成功。b.进入debug中,用u命令查看反编译结果。得出A的地址为:076A:0000,值为14H,即十进制的20D;B的地址为:076A:0001,值为0FH,即十进制的15D。Y的偏移地址为0002H,Z的偏移地址为0005H。DATA段基地址为076AH。SUB1子程序段入口地址为003F。c.用e命令将A地址和B地址内的值由2AH,32H改为23H,24H,通过d命令重新查看A地址,B地址下的数值,发现改变成功。d.利用t命令单步调试,可发现,每一步程序的执行,会与寄存器及存储器的内容的变化是一致的。e.退出debug。五、实验总结由于之前上《操作系统》时,零散地学过一些汇编相关的内容,所以关于masm、debug的基本指令的使用还是比较熟悉的,在做实验一的整个过程中也是比较轻松也希望自己能保持着这种轻松的状态去应对接下来的实验!实验二分支、循环程序设计一、实验目的1.开始独立进行汇编语言程序设计;2.掌握基本分支,循环程序设计;3.掌握最简单的DOS功能调用。二、实验内容1.安排一个数据区,内存有若干个正数,负数和零。每类数的个数都不超过9。2.编写一个程序统计数据区中正数,负数和零的个数。3.将统计结果在屏幕上显示。4.(选做题)统计出正奇数、正偶数,负奇数、负偶数以及零的个数。三、预习题1.十进制数0~9所对应的ASCII码是什么?如何将十进制数0~9在屏幕上显示出来?答:0~9分别对应ASCII码的30H~39H。因为屏幕上显示的数字是ASCII码,所以为了将十进制数0~9显示在屏幕上,需在原有的十进制数值基础上加上30H即可。2.如何检验一个数为正,为...