组成原理课设关于累加器_第1页
组成原理课设关于累加器_第2页
组成原理课设关于累加器_第3页
组成原理课设关于累加器_第4页
组成原理课设关于累加器_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章详细设计方案第2章详细设计方案2.1算法与程序的设计与实现本课设采用伟福COP2000实验仪软件和计算机实现数据累加的功能,利用伟福COP2000的指令集编程实现。2.1.1算法具体描述从1累加到100是一个重复一百次的循环,控制循环的条件则必然是一个等于一百的数,每执行一次循环就减一,当此数减到零跳出循环。本程序的核心思想就是:累加和=累加和+累加数,然后累加数加1。在开始没有进入循环时需要先将1存入寄存器R1,并且将1存入R3,循环的控制数初始值应该是99。但是还有一点必须要考虑其中,就是进位。一个八位寄存器只能存储两个十六位的数,最大数是0xFF,而1+2++99+100的和是5050,在一个八位的寄存器中存不下,所以需要用到进位的概念。在微指令中有专门用来控制进位的语句:JCMM。所以要用判断进位的加法进行计算,若有进位在前一位加一后,循环次数减一并且累加数加一;若无进位,循环次数减一并且累加数加一。然后对于循环次数进行判断,判断是否完成1到100的累加,未完成继续执行,完成后,累加的结果存在R3和R2中,R3存低8位,R2存高八位。在COP2000中只有将数据存到累加器A中才能进行加减运送,所以每次进行数据计算都会将数据存储的A中,然后进行计算。对于连续内存地址的数据进行累加计算时,先要将需要累加的数据存储到内存地址中,在用电脑进行测试时,可以存入立即数作为数据进行累加。当与COP2000连接以后,需要用中断程序,实现对于数据的输入,每次调用中断程序输入一个数据,用IN输入到A中,然后存储到内存地址中。可以将控制循环次数的数据存储到R0中,用来确定输入数据的个数,将内存地址的首地址存到R1中,每次存完数据,循环次数减一,地址加一直到数据输入完成。数据输入完成后,对于数据的累加与从1累加到100原理相同,只不过累加数变成对于地址的累加,只不过需要根据内存地址将数据调到A中,然后进行加法运算,从而实现数据的累加,结果存到R2,R3中,还可以利用OUT,将结果输出。2.2流程图的设计与实现2.2.1流程图具体分析从1累加到100的流程图如下图所示:开始开始R0=99R0=99R1=1R3=1R1++R3+=R1R1++R3+=R1是否产生进位是否产生进位 N YR2++ R2++R0--R0--R0=0? NR0=0?输出在R2,R3输出在R2,R3结束结束图2.2.1从1累加到100的流程图对于连续内存地址数据的累加流程图如下:对于连续内存地址数据的存储开始开始初始化R0,R1初始化R0,R1是否输入中断是否输入中断 N Y将输入的数据存储到首地址中将输入的数据存储到首地址中R0--R0--R1++R1++R0=0?R0=0? N Y输入结束进行累加输入结束进行累加结束结束图2.2.2关于数据输入的流程图 2.2对于连续内存地址数据累加流程图如下:开始开始初始化R0,R1初始化R0,R1将首地址的数据存入R3将首地址的数据存入R3R1++取出@R1的数据R3+=R1R1++取出@R1的数据R3+=R1是否产生进位是否产生进位 N YR2++ R2++R0--R0--R0=0? NR0=0? Y输出在R2,R3输出在R2,R3结束结束图2.2.3关于连续内存地址数据累加流程图沈阳航空航天大学课程设计报告第三章程序调试与结果测试 第3章程序调试与结果测试3.1程序调试(1)语法错误(1)在进行输入的时候需要将输入放到A中,然后在放入内存中,不能直接放到内存中。(2)指令集不支持将某一存储单元内的数据直接写入寄存器内,必须通过累加器A进行中转。因此使用MOVR0,00H出现错误。正确的应为MOVA,00H;MOVR0,A。(3)指令混淆,立即数和存储单元的地址只差一个“#”。编程开始阶段,不熟悉指令集,执行把立即数放入累加器的操作,误将MOVA,01H用作MOVA,#01H。(2)逻辑错误(1)编程开始阶段,由于考虑不周全,保存结果时只用了一个寄存器,结果导致无法存储正确的结果,后来经过检查发现5050转化为十六进制为13BA,需要用两个寄存器存储结果。(2)地址超出范围,采用中断方式执行主程序时,设程序首指令地址为F0H,导致最后的指令超出了地址范围。(3)在连接COP2000仪器时,采用中断方式输入数据时,开始的时候,无法跳出中断,仔细检查程序没有错误,检查仪器时发现IA没有调整,后来调整IA,才可以顺利的完成数据的输入。3.2程序测试及结果分析从1累加到100程序测试当控制循环数为100时,输出结果为:141F,转化为十进制就是5151当控制循环数为99时,输出结果为:13BA,转化为十进制就是5050当控制循环数为98时,输出结果为.:1356,转化为十进制就是4950当控制循环数为97时,输出结果为.:12F3,转化为十进制就是4851从连续内存地址数据累加程序测试当连续内存地址首地址为:0A0H,在以0A0H为首地址开始的五个地址中存入数据:7,9,11,12,15。实际结果为:54。将数据输入到程序后,运行程序得到:36H,转化为十进制等于54。两个结果相同。当连续内存地址首地址为:0A0H,在以0A0H为首地址开始的五个地址中存入数据:14,14,14,14,14。实际结果为:70。将数据输入到程序后,运行程序得到:46H,转化为十进制等于70。两个结果相同。当连续内存地址首地址为:0A0H,在以0A0H为首地址开始的十个地址中存入数据:18,18,18,18,18,18,18,18,18,18。实际结果为:180。将数据输入到程序后,运行程序得到:B4H,转化为十进制等于180。两个结果相同。沈阳航空航天大学课程设计报告 参考文献 参考文献沈阳航空航天大学课程设计报告 附录[1]白中英.计算机组成原理(第4版)[M].北京:科学出版社.2008[2]王爱英.计算机组成与结构(第4版)[M].北京:清华大学科学出版社.2006[3]唐硕飞.计算机组成原理(第2版).[M].北京:高等教育出版社.2008[4]伟福COP2000型计算机组成原理试验仪指导书[M].南京伟福实业有限公司

附录(源代码)从1累加到100的源代码MOVR0,#99MOVR1,#1MOVA,R1MOVR3,ALOOP1:MOVA,R1ADDA,#1MOVR1,AADDCA,R3JCCARRYMOVR3,ALOOP2:MOVA,R0SUBA,#1JZNEXTMOVR0,AJMPLOOP1CARRY:MOVR3,AMOVA,R2ADDA,#1MOVR2,AJMPLOOP2NEXT:JMPNEXTEND连续内存地址数据累加的源代码JMPLOOPORG20HINMOV@R1,AMOVA,R0SUBA,#1JZTMOVR0,AMOVA,R1ADDA,#1MOVR1,ARETIT:MOVR0,#4MOVR1,#0A0HMOVA,@R1MOVR3,ALOOP1:MOVA,R1ADDA,#1MOVR1,AMOVA,@R1ADDCA,R3JCCARRYMOVR3,ALOOP2:MOVA,R0SUBA,#1JZLOOP3MOVR0,AJMPLOOP1CARRY:MOVR3,AMOVA,R2ADDA,#1MOVR2,AJMPLOOP2LOOP3:MOVA,R3OUTJMPLOOP3END沈阳航空航天大学课程设计报告

课程设计总结:通过本次课程设计,让我对计算机的组成原理有了更深层次的理解,让我对微指令编程有了更加深入的了解与认识。此次课程设计中,用到了采用中断方式输入数据,开始时由于对中断方式的不了解,出了很多错误,后来在老师的指导和同学的帮助下,了解了中断的工作方式,从而成功的利用中断来实现数据的输入。同时掌握了伟福COP2000试验仪和COP2000软件的使用,学会了实际汇编和程序的执行过程。此次课程设计的过程中,明白了各个学科都是相同的,开始做课程设计的时候先利用C语言知识将代码写出来,然后对照组成原理实验指导书全部转变成微指令,从而提高了代码的书写速度。在做课设的过程中,自己明白了一定要有一个好的编程思想,不管做什么程序,一定要先想好思路,把所有的问题考虑明白,将问题分析彻底,将程序写的精简。在编程的过程中,要考虑到程序的实用性与可

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论