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

下载本文档

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

文档简介

1、沈阳航空航天大学课课 程程 设设 计计 报报 告告课程设计名称:计算机组成原理课程设计计算机组成原理课程设计课程设计题目:COP2000COP2000 实现数据累加实现数据累加院(系):计算机学院专 业:计算机科学与技术班 级:学 号:姓 名: 指导教师:完成日期:沈阳航空航天大学课程设计报告 -I-目目 录录第第 1 章章 总体设计方案总体设计方案.11.1设计原理.11.2设计思路.11.3设计环境.2第第 2 章章 详细设计方案详细设计方案.42.1 算法与程序的设计与实现 .42.1.1 算法具体描述.42.2 流程图的设计与实现 .52.2.1 流程图具体分析.5第第 3 章章 程序

2、调试与结果测试程序调试与结果测试.83.1 程序调试 .83.2 程序测试及结果分析 .8参考文献参考文献.10附附 录(源代码)录(源代码).11沈阳航空航天大学课程设计报告 第 1 章 总体设计方案-1-第 1 章 总体设计方案1.1设计原理设计原理实现无符号数的累加功能,计算 1+2+.+99+100。应用累加器和4 个寄存器可以实现这个程序。根据该程序可以拓展到对连续内存地址的数据进行累加。连续内存地址的累加与累加相比,需要对于内存地址进行累加并且从内存地址中读数,然后将读出的数据进行累加求和。在累加求和部分,两个程序的原理是相同的。 1.2设计思设计思路路每个运算步骤需要用到累加器

3、A,需要一个寄存器存储 100 以控制循环,一个寄存器存储从 1 开始每次加 1 递增的累加数。由于 5050 的十六进制是 13BA,一个寄存器最大只能存放 FF,所以需要用到两个计算器存放累加的结果。我用 R0 存储控制循环的数;用 R1 存放累加数,用 R2 和 R3 存放累加和,其中 R2 存放高位,R3 存放低位。对于连续内存地址数据进行累加时,数据输入,在 COP2000 软件中,为了直观简便观看调试程序,可用立即数送入;而在硬件测试中,应采用中断方式输入,其优点是可连续输入不同数据,灵活,用户输入数据,如:LOOP1: JMP LOOP1 ORG 20H IN两种方式产生结果相同

4、。在中断程序中可以加入循环控制数据和内存地址自动累加语句,可以控制输入的数据个数。连续内存地址累加和数据累加相比,只有数据输入部分不同,最基本的原理是相同的,所以还是用 R0 存储控制循环的数;用 R1 存放累加数,用 R2 和 R3 存放累加和,其中 R2 存放高位,R3 存放低位。沈阳航空航天大学课程设计报告 第 1 章 总体设计方案-2-1.3设计环境设计环境利用伟福 COP2000 型计算机组成原理实验仪软件和计算机,在 COP2000 试验仪软件上编程实现数据的累加。伟福 COP2000 试验仪软件的指令集分为如下大类:算术运算指令、数据传送指令、跳转指令、中断返回指令、输入输出指令

5、。伟福 COP2000 计算机组成原理实验仪软件截图如 1.3 所示:本程序所用到的相应的指令集(1) 算术逻辑运算指令SUB A,#II-从累加器中减去立即数后加入累加器 A 中AND A, #II-累加器 A“与”立即数 IIADDC A,R?-将寄存器 R?的值加入累加器 A 中,考虑进位(2) 数据传送指令MOV R?,#II-将立即数 II 送到寄存器 R?中MOV MM, A -将累加器 A 中的值送到存储器 MM 地址中MOV A,#II-将立即数 II 送到累加器 A 中MOV R?,A-将累加器 A 中的值送到寄存器 A 中MOV A,R?-将寄存器 R?的值送到累加器 A

6、中MOV A, MM -将存储器 MM 地址中的值送到累加器 A 中MOV R?,A-将累计器 A 的值送到间址存储器中(3)跳转指令JZ MM-若零标志位置 1,跳转到 MM 地址JC MM-若进位标志置 1,跳转到 MM 地址JMP MM-跳转到 MM如下为 COP2000 计算机组成原理实验软件截图:沈阳航空航天大学课程设计报告 第 1 章 总体设计方案-3-图 1.3 伟福 COP2000 计算机组成原理试验仪软件截图沈阳航空航天大学课程设计报告 第 2 章 详细设计方案-4-第 2 章 详细设计方案2.1 算法与程序的设计与实现算法与程序的设计与实现 本课设采用伟福 COP2000

7、实验仪软件和计算机实现数据累加的功能,利用伟福 COP2000 的指令集编程实现。2.1.1 算法具体描述算法具体描述从 1 累加到 100 是一个重复一百次的循环,控制循环的条件则必然是一个等于一百的数,每执行一次循环就减一,当此数减到零跳出循环。本程序的核心思想就是:累加和=累加和+累加数,然后累加数加 1。在开始没有进入循环时需要先将 1 存入寄存器 R1,并且将 1 存入 R3,循环的控制数初始值应该是 99。但是还有一点必须要考虑其中,就是进位。一个八位寄存器只能存储两个十六位的数,最大数是 0 xFF,而 1+2+.+99+100 的和是 5050,在一个八位的寄存器中存不下,所以

8、需要用到进位的概念。在微指令中有专门用来控制进位的语句:JC MM。所以要用判断进位的加法进行计算,若有进位在前一位加一后,循环次数减一并且累加数加一;若无进位,循环次数减一并且累加数加一。然后对于循环次数进行判断,判断是否完成 1 到 100 的累加,未完成继续执行,完成后,累加的结果存在 R3 和 R2 中,R3 存低 8 位,R2 存高八位。在COP2000 中只有将数据存到累加器 A 中才能进行加减运送,所以每次进行数据计算都会将数据存储的 A 中,然后进行计算。对于连续内存地址的数据进行累加计算时,先要将需要累加的数据存储到内存地址中,在用电脑进行测试时,可以存入立即数作为数据进行累

9、加。当与COP2000 连接以后,需要用中断程序,实现对于数据的输入,每次调用中断程序输入一个数据,用 IN 输入到 A 中,然后存储到内存地址中。可以将控制循环次数的数据存储到 R0 中,用来确定输入数据的个数,将内存地址的首地址存到 R1中,每次存完数据,循环次数减一,地址加一直到数据输入完成。数据输入完成后,对于数据的累加与从 1 累加到 100 原理相同,只不过累加数变成对于地址的沈阳航空航天大学课程设计报告 第 2 章 详细设计方案-5-累加,只不过需要根据内存地址将数据调到 A 中,然后进行加法运算,从而实现数据的累加,结果存到 R2,R3 中,还可以利用 OUT,将结果输出。2.

10、2 流程图的设计与实现流程图的设计与实现2.2.1 流程图具体分析流程图具体分析1. 从 1 累加到 100 的流程图如下图所示: N Y N图 2.2.1 从 1 累加到 100 的流程图开始R0=99R1=1R3=1R1+R3+=R1是否产生进位R2+R0-R0=0?输出在R2,R3结束沈阳航空航天大学课程设计报告 第 2 章 详细设计方案-6-2. 对于连续内存地址数据的累加流程图如下:2.1 对于连续内存地址数据的存储NY NY图 2.2.2 关于数据输入的流程图2.2 对于连续内存地址数据累加流程图如下:开始初始化 R0,R1是否输入中断将输入的数据存储到首地址中R0-R1+R0=0

11、?输入结束进行累加结束沈阳航空航天大学课程设计报告 第 2 章 详细设计方案-7- N Y NY图 2.2.3 关于连续内存地址数据累加流程图开始初始化 R0,R1R1+取出R1 的数据R3+=R1是否产生进位R2+R0-R0=0?输出在R2,R3结束将首地址的数据存入 R3沈阳航空航天大学课程设计报告 第三章 程序调试与结果测试-8- 第 3 章 程序调试与结果测试3.1 程序调试程序调试(1 1)语法错误)语法错误(1)在进行输入的时候需要将输入放到 A 中,然后在放入内存中,不能直接放到内存中。(2)指令集不支持将某一存储单元内的数据直接写入寄存器内,必须通过累加器 A 进行中转。因此使

12、用 MOV R0, 00H 出现错误。正确的应为 MOV A,00H;MOV R0, A。(3)指令混淆,立即数和存储单元的地址只差一个“#” 。编程开始阶段,不熟悉指令集,执行把立即数放入累加器的操作,误将 MOV A, 01H 用作 MOV A, #01H。(2 2)逻辑错误)逻辑错误(1)编程开始阶段,由于考虑不周全,保存结果时只用了一个寄存器,结果导致无法存储正确的结果,后来经过检查发现 5050 转化为十六进制为 13BA,需要用两个寄存器存储结果。(2)地址超出范围,采用中断方式执行主程序时,设程序首指令地址为F0H,导致最后的指令超出了地址范围。(3)在连接 COP2000 仪器

13、时,采用中断方式输入数据时,开始的时候,无法跳出中断,仔细检查程序没有错误,检查仪器时发现 IA 没有调整,后来调整IA,才可以顺利的完成数据的输入。3.2 程序测试及结果分析程序测试及结果分析1. 从 1 累加到 100 程序测试当控制循环数为 100 时,输出结果为:141F,转化为十进制就是 5151 当控制循环数为 99 时,输出结果为:13BA,转化为十进制就是 5050 当控制循环数为 98 时,输出结果为.:1356,转化为十进制就是 4950沈阳航空航天大学课程设计报告 第三章 程序调试与结果测试-9- 当控制循环数为 97 时,输出结果为.:12F3,转化为十进制就是 485

14、12. 从连续内存地址数据累加程序测试当连续内存地址首地址为: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

15、。实际结果为:180。将数据输入到程序后,运行程序得到:B4H,转化为十进制等于 180。两个结果相同。沈阳航空航天大学课程设计报告 参考文献-10- 参考文献1 白中英.计算机组成原理(第 4 版)M.北京:科学出版社.20082 王爱英.计算机组成与结构(第 4 版)M.北京:清华大学科学出版社.20063 唐硕飞.计算机组成原理(第 2 版).M.北京:高等教育出版社.20084 伟福 COP2000 型计算机组成原理试验仪指导书M.南京伟福实业有限公司沈阳航空航天大学课程设计报告 附录-11-附 录(源代码)1.从 1 累加到 100 的源代码MOV R0,#99MOV R1,#1MO

16、V A,R1MOV R3,ALOOP1:MOV A,R1ADD A,#1MOV R1,AADDC A,R3JC CARRYMOV R3,ALOOP2:MOV A,R0SUB A,#1JZ NEXTMOV R0,AJMP LOOP1CARRY:MOV R3,AMOV A,R2ADD A,#1MOV R2,AJMP LOOP2NEXT:JMP NEXTEND沈阳航空航天大学课程设计报告 附录-12-2. 连续内存地址数据累加的源代码JMP LOOPORG 20HINMOV R1,AMOV A,R0SUB A,#1JZ TMOV R0,AMOV A,R1ADD A,#1MOV R1,ARETIT:M

17、OV R0,#4MOV R1,#0A0HMOV A,R1MOV R3,ALOOP1:MOV A,R1ADD A,#1MOV R1,AMOV A,R1ADDC A,R3JC CARRYMOV R3,ALOOP2:MOV A,R0SUB A,#1JZ LOOP3MOV R0,AJMP LOOP1CARRY:MOV R3,AMOV A,R2ADD A,#1MOV R2,AJMP LOOP2LOOP3:MOV A,R3OUTJMP LOOP3END沈阳航空航天大学课程设计报告-13-课程设计总结:课程设计总结: 通过本次课程设计,让我对计算机的组成原理有了更深层次的理解,让我对微指令编程有了更加深入的了解与认识。此次课程设计中,用到了采用中断方式输入数据,开始时由于对中断方式的不了解,出了很多错误,后来在老师的指导和同学的帮助下,了解了中断的工作方式,从而成功的利用中断来实现数据的输入。同时掌握了伟福 COP2000 试验仪和 COP2000 软件的使用,学会了实际汇编和程序的执行过程。此次课程设计的过程中,明白了各个学科都是相同的,开始做课程设计的时候先利用 C 语言知识将代码写出来,然后对照组成原理实验指导书全部转变成微指令

温馨提示

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

评论

0/150

提交评论