计算机原理课程设计(4)
计算机组成原理_课程设计任务书
课程设计课程名称:计算机组成原理设计题目:一个非常简单的CPU的设计学院:信息工程与自动化专业:计算机科学与技术年级: 08级 1班学生姓名:张桥指导教师:李凌宇日期: 2010-9-9教务处制课程设计任务书信息工程与自动化学院计算机专业 08 1 年级学生姓名:张桥课程设计题目:一个简单的CPU的设计课程设计主要内容:设计一台完整的计算机。
首先要确定该计算机的功能和用途。
在设计中根据功能和用途确定指令系统,定义数据通路,设计每条指令的执行流程,要求利用微程序进行设计,每人至少要求4条CPU指令,可以自己选择;在设计中要求画出指令系统的格式并说明各位的意义;要求画出数据通路并定义微操作信号;要求画出微程序流程图。
设计指导教师(签字):教学基层组织负责人(签字):年月日一台模型计算机的设计一、教学目的、任务与实验设备融会贯通本课程各章节的内容,通过知识的综合运用,加深对计算机系统各模块的工作原理及相互联系的认识,加深计算机工作中“时间—空间”概念的理解,从而清晰地建立计算机的整机概念。
二、数据格式和指令系统本模型机是一个8位定点二进制计算机,具有四个通用寄存器:R 0~R 3,能执行11条指令,主存容量为256KB 。
1. 数据格式数据按规定采用定点补码表示法,字长为8位,其中最高位(第7位)为符号位,小数点位置定在符号位后面,其格式如下:数值相对于十进制数的表示范围为:-1≤X ≤1―2―72. 指令格式及功能由于本模型机机器字只有8位二进制长度,故使用单字长指令和双字长指令。
⑴ LDR Ri ,D格式 7 4 3 2 1 0功能:Ri ←M (D )(2) STR Ri ,D格式功能:M (D )←(Ri )(3) ADD Ri ,Rj格式 功能:Ri ←(Ri )+ (Rj )(4) SUB Ri ,Rj格式 7 4 3 2 1 0功能:Ri ←(Ri )- (Rj )(5) AND Ri ,Rj格式功能:Ri ←(Ri)∧(Rj)(6)OR Ri,Rj格式功能:Ri ←(Ri)∨(Rj)(7)MUL Ri,Rj格式7 4 3 2 1 0功能:Ri ←(Ri)×(Rj)(8)转移指令格式7 4 3 2 1 0功能:条件码00 无条件转移PC ←D01 有进位转移PC ←D10结果为0转移PC ←D11结果为负转移PC ←D⑼IN R i,M j格式其中M j为设备地址,可以指定四种外围设备,当M j=01时,选中实验箱的二进制代码开关。
计算机组成原理课程设计
课程设计报告课程设计名称:计算机组成原理系:学生姓名:班级:学号:成绩:指导教师:开课时间:2011-2012学年2 学期一、设计题目计算机组成原理课程设计——简单模型机的微程序设计二、主要内容通过课程设计更清楚地理解下列基本概念:1.计算机的硬件基本组成;2.计算机中机器指令的设计;3.计算机中机器指令的执行过程;4.微程序控制器的工作原理。
5.微指令的格式设计原则;在此基础上设计可以运行一些基本机器指令的微程序的设计三.具体要求1.通过使用作者开发的微程序分析和设计仿真软件,熟悉介绍的为基本模型机而设计的微程序的执行过程。
必须充分理解并正确解释下些问题:(1)微程序中的微指令的各个字段的作用。
哪些字段是不译码的,哪些字段是直接译码的,哪些字段又可以看成是字段间接编码的。
(2)微程序中的微指令是否是顺序执行的,如果不是,那么次地址是如何产生的。
什么情况下,次地址字段才是将要执行的微指令的地址。
(3)在微程序中如何根据机器指令中的相关位实现分支,据此,在设计机器指令时应如何避免和解决与其它指令的微指令的微地址冲突。
(4)哪些微指令是执行所有指令都要用到的。
(5)解释一条机器指令的微程序的各条微指令的微地址是否连续?这些微指令的微地址的安排的严重原则是什么?(6)为什么读写一次内存总要用两条微指令完成?(7)机器程序中用到的寄存器是R0,是由机器指令中哪些位决定的?如果要用R1或R2,是否要改写微程序或改写机器指令?如果要,应如何改写?2.在原有5条机器指令的基础上增加实现下述各功能的机器指令,试设计相应的机器指令的格式并改写原来的微程序使其可以运行所有的机器指令。
新增加的机器指令的功能是:求反指令NOT RS,RD :/(RS) →(RD)与指令AND RD,(addr):(RD)与(addr)→(RD)异或指令XOR RD,(addr):(addr)异或(RD)→(RD)或指令OR RD,(addr):(RD)或(addr)→(RD)减法指令SUB RD,RS :(RS)减(RD)→(RD)其中的RS、RD可以是R0、R1、R2中的任何一个。
计算机原理课程设计阶乘
计算机原理课程设计阶乘一、课程目标知识目标:1. 学生能理解阶乘的概念,掌握计算阶乘的基本方法。
2. 学生能了解计算机中循环结构的应用,理解递归算法在计算阶乘中的实现过程。
3. 学生掌握计算机程序设计中阶乘相关问题的解决方法。
技能目标:1. 学生能运用所学知识编写计算阶乘的程序,具备一定的编程实践能力。
2. 学生能通过分析、设计、调试程序,提高问题解决能力和逻辑思维能力。
3. 学生能够运用递归思想优化计算阶乘的算法,提高编程技巧。
情感态度价值观目标:1. 学生对计算机科学产生兴趣,树立探究精神和创新意识。
2. 学生通过团队协作解决问题,培养沟通能力和团队精神。
3. 学生在解决问题的过程中,形成严谨、细致、负责的学习态度。
课程性质:本课程为计算机原理课程设计,旨在让学生通过实际操作,掌握计算阶乘的基本原理和方法,提高编程实践能力。
学生特点:本课程针对的是高年级学生,他们已经具备了一定的计算机编程基础,具有较强的逻辑思维能力和问题解决能力。
教学要求:课程要求学生在理解阶乘概念的基础上,学会编写计算阶乘的程序,并能对算法进行优化。
同时,注重培养学生的团队协作能力和创新精神。
通过本课程的学习,使学生能够将所学知识应用于实际问题中,提高综合运用能力。
二、教学内容1. 阶乘概念及其性质- 阶乘定义- 阶乘的数学性质2. 计算阶乘的方法- 递推法- 递归法- 循环法3. 计算机程序设计中的阶乘实现- 编程语言的选择- 阶乘程序设计- 程序调试与优化4. 阶乘应用案例- 阶乘在数学问题中的应用- 阶乘在计算机科学中的应用5. 教学案例分析与讨论- 案例展示- 案例分析与讨论- 团队协作解决问题教学内容安排与进度:第一课时:阶乘概念及其性质,学习阶乘定义和数学性质。
第二课时:计算阶乘的方法,学习递推法、递归法和循环法。
第三课时:计算机程序设计中的阶乘实现,进行编程实践和程序调试。
第四课时:阶乘应用案例,探讨阶乘在数学和计算机科学中的应用。
计算机专业课程设计
计算机专业课程设计一、课程目标知识目标:1. 理解计算机专业课程设计的基本概念、原则和方法;2. 掌握运用所学的编程语言、数据结构与算法,解决实际问题;3. 了解计算机系统的基本组成、工作原理及其在各领域的应用。
技能目标:1. 能够运用分析、设计的方法,独立完成小型计算机项目的需求分析和设计;2. 培养阅读和理解计算机相关技术文档的能力,提高自学能力;3. 学会使用专业软件工具进行项目开发和调试,提高实际操作能力。
情感态度价值观目标:1. 培养学生的团队合作意识,学会与他人共同解决问题;2. 激发学生对计算机专业的兴趣,提高学习的积极性和主动性;3. 树立正确的价值观,认识到计算机技术在国家和社会发展中的重要作用,增强社会责任感。
课程性质:本课程为计算机专业核心课程,旨在培养学生的编程能力、项目设计和实践能力。
学生特点:学生已具备一定的编程基础,具有较强的逻辑思维能力和学习兴趣。
教学要求:注重理论与实践相结合,强调学生动手实践,培养学生的创新能力和实际操作能力。
将课程目标分解为具体的学习成果,以便于后续的教学设计和评估。
二、教学内容1. 计算机专业课程设计概述- 课程设计的基本概念- 课程设计的原则- 课程设计的方法2. 编程语言与数据结构- 常用编程语言的特点与应用场景- 数据结构的基本概念与分类- 常用数据结构及其算法实现3. 计算机系统组成与应用- 计算机硬件系统- 计算机软件系统- 计算机在各领域的应用案例4. 项目需求分析与设计- 需求分析的方法与步骤- 设计模式与架构- 项目文档编写规范5. 项目开发与调试- 编程规范与技巧- 软件测试方法与策略- 调试工具与技巧6. 团队合作与沟通- 团队合作的重要性- 沟通技巧与方法- 项目管理与协作工具教学内容安排与进度:1. 第1-2周:计算机专业课程设计概述2. 第3-4周:编程语言与数据结构3. 第5-6周:计算机系统组成与应用4. 第7-8周:项目需求分析与设计5. 第9-10周:项目开发与调试6. 第11-12周:团队合作与沟通教材章节关联:1. 《计算机组成原理》第1-3章,介绍计算机硬件系统;2. 《数据结构与算法》第1-5章,介绍数据结构及其算法实现;3. 《软件工程》第1-2章,介绍需求分析、设计与文档编写;4. 《编程实践》第1-2章,介绍编程规范与技巧;5. 《项目管理与团队协作》第1-2章,介绍团队合作与沟通。
计算机组成原理课程设计报告
计算机组成原理课程设计实验报告目录一、程序设计 (1)1、程序设计目的 (1)2、程序设计基本原理 (1)二、课程设计任务及分析 (6)三、设计原理 (7)1、机器指令 (7)2、微程序流程图 (9)3、微指令代码 (10)4、课程设计实现步骤 (11)四、实验设计结果与分析 (15)五、实验设计小结 (15)六、参考文献 (15)一、程序设计1、程序设计目的(1)在掌握部件单元电路实验的基础上,进一步将其组成系统构造一台基本模型计算机。
(2使用简单模型机和复杂模型机的部分机器指令,并编写相应的微程序,具体上机调试掌握整机概念。
(3)掌握微程序控制器的组成原理。
(4)掌握微程序的编写、写入,观察微程序的运行。
(5)通过课程设计,使学生将掌握的计算机组成基本理论应用于实践中,在实际操作中加深对计算机各部件的组成和工作原理的理解,掌握微程序计算机中指令和微指令的编码方法,深入理解机器指令在计算机中的运行过程。
2、程序设计基本原理(1)实验模型机结构[1] 运算器单元(ALU UINT)运算器单元由以下部分构成:两片74LS181构成了并-串型8位ALU;两个8位寄存器DR1和DR2为暂存工作寄存器,保存参数或中间运算结果。
ALU的S0~S3为运算控制端,Cn为最低进位输入,M为状态控制端。
ALU的输出通过三态门74LS245连到数据总线上,由ALU-B控制该三态门。
[2] 寄存器堆单元(REG UNIT)该部分由3片8位寄存器R0、R1、R2组成,它们用来保存操作数用中间运算结构等。
三个寄存器的输入输出均以连入数据总线,由LDRi和RS-B根据机器指令进行选通。
[3] 指令寄存器单元(INS UNIT)指令寄存器单元中指令寄存器(IR)构成模型机时用它作为指令译码电路的输入,实现程序的跳转,由LDIR控制其选通。
[4] 时序电路单元(STATE UNIT)用于输出连续或单个方波信号,来控制机器的运行。
《计算机组成原理》课程设计_两个数的乘法运算
《计算机组成原理》课程设计报告课程设计题目:两个数的乘法运算小组成员:….完成日期:第十一周模型机设计实验一、实验目的综合运用所学计算机原理知识,设计并实现较为完整的模型计算机。
其功能为:输入两个数,进行两个正数(二进制4位)的乘法运算,输出结果。
二、实验内容编写程序,运行程序,观察并记录运行结果。
三、实验仪器1、ZY15CompSys12BB计算机组成原理及系统结构教学实验箱一台2、排线若干3、PC机一台四、预备知识1、数据格式8位,其格式如下:其中第7位为符号位,数值表示范围是:-1≤X<127。
2、指令格式模型机设计四大类指令共十六条,其中包括算术逻辑指令、I/O指令、访问存储器、转移指令和停机指令。
(1)算术逻辑指令规定:算术逻辑指令的名称、功能和具体格式见表2—3。
(2)访存指令及转移指令模型机设计2条访存指令,即存数(STA)、取数(LAD),2条转移指令,即无条件转移(负均可)本模型机规定变址寄存器RI指定为寄存器R2。
(3)I/O指令其中,在IN 指令中,addr=01,选中“输入”中的开关组作为输入设备,在OUT指令中,addr=10时,表示选中“输出单元”中的数码块作为输出设备。
(4)停机指令HALT指令,机器码为60H,用于实现停机操作。
3、指令系统复杂模型机共有16条基本指令,其中算术逻辑指令7条,访问内存指令和程序控制指令4条,输入输出指令2条,其它指令1条。
表2-3列出了各条指令的格式、汇编符号、指令功能。
我们依然采用复杂模型机指令系统中的部分指令。
五、实验的机器指令程序如下:地址内容助记符说明00 14 IN R0 ; 作计数器用,00000001→R001 15 IN R1 ; 输入X的值,0000xxxx→R102 05 STA R1 ; X→22H03 2204 15 IN R2 ; 输入Y→R2,0000xxxx→R205 06 STA R2 ; R2→23H06 2307 42 CLR R2 ; R2清零08 06 STA R2 ; 存入结果R2→24H09 240A 02 LAD R2 ; 提取[23H]→R20B 230C 6A RRC R2,R2 ; R2带进位右循环一位→R2 0D 06 STA R2 ; 循环结果→23H0E 230F 02 LAD R2 ; 提取结果S,[24H]→R210 2411 0C BZC [15H] ; 有进位跳转到15H12 1513 08 JMP [18H] ; 无条件跳转到[18H]14 1815 01 LAD R1 ; 提取X→R116 2217 56 ADC R1,R2 ; R1+R2→R218 6A RRC R2,R2 ; R2带进位右循环一位→R219 06 STA R2 ; 循环结果→24H1A 241B70 RLC R0,R0 ; R0带进位左循环一位→R0 1C 0C BZC [20H] ; 有进位跳转到20H1D 201E 08 JMP [0AH] ; 无条件跳转到[0AH]1F 0A20 2A OUT R2 ; 输出R2中的结果21 60 HATL ; 停机22 XX23 XX24 XX六、程序机器指令和微程序以上程序的机器指令如下:$P0014 $P0115 $P0205 $P0322$P0416 $P0506 $P0623 $P0772$P0806 $P0924 $P0A02 $P0B23$P0C6A $P0D06 $P0E23 $P0F02$P1024 $P110C $P1215 $P1308$P1418 $P1501 $P1622 $P1756$P186A $P1906 $P1A24 $P1B70$P1C0C $P1D20 $P1E08 $P1F0A$P202A $P2160微程序如下$M00018108 $M0101ED82 $M0200C050$M0300A004 $M0400E098 $M0501B406$M06959B41 $M07298838 $M0801ED8A$M0901ED8C $M0A00A01E $M0B018001$M0C00201F $M0D019801 $M0E19880F$M0F019801 $M1001ED83 $M11001001$M12030401 $M13018016 $M143D9A01$M1501A205 $M16318207 $M1731820E$M18009001 $M19028401 $M1A05DB81$M1B0180DC $M1C018001 $M1D05DB8D$M1E070A08 $M1F068A09七、复杂模型机的数据通路框图WE图2-7复杂模型机数据通路框图八、复杂模型机实验接线图接到指令单元接到开关单元九、复杂模型机实验流程图十、课程设计总结1、成员总结体会…2、遇到的问题和解决的方法等1)寄存器不够用。
计算机简单工作原理教案
计算机简单工作原理教案标题:计算机简单工作原理教案引言概述:计算机是现代社会不可或者缺的工具,而了解计算机的简单工作原理对于学习和使用计算机至关重要。
本教案将介绍计算机的简单工作原理,包括计算机的基本组成、数据的表示和处理、存储器的作用、运算器的功能以及控制器的工作原理。
一、计算机的基本组成1.1 中央处理器(CPU):负责执行计算机指令和控制计算机的运行。
1.2 输入设备:用于将外部数据输入到计算机中,如键盘、鼠标等。
1.3 输出设备:用于将计算机处理后的结果输出,如显示器、打印机等。
二、数据的表示和处理2.1 二进制系统:计算机使用二进制系统来表示和处理数据。
2.2 位和字节:计算机中最基本的数据单位是位(0或者1),8位组成一个字节。
2.3 数据的运算:计算机通过运算器对数据进行加减乘除等运算。
三、存储器的作用3.1 主存储器:用于存储计算机中的程序和数据。
3.2 辅助存储器:用于长期存储大量的程序和数据,如硬盘、光盘等。
3.3 缓存存储器:位于CPU内部,用于提高数据访问速度。
四、运算器的功能4.1 算术逻辑单元(ALU):负责进行算术和逻辑运算。
4.2 寄存器:用于存储运算过程中的中间结果和操作数。
4.3 控制单元:负责控制计算机的运行,包括指令的解码和执行。
五、控制器的工作原理5.1 程序计数器(PC):存储当前指令的地址。
5.2 指令寄存器(IR):存储当前指令。
5.3 控制信号:根据指令的不同,控制信号将被发送给相应的部件,以执行相应的操作。
通过本教案的学习,学生将了解计算机的基本组成、数据的表示和处理、存储器的作用、运算器的功能以及控制器的工作原理。
这将为他们进一步学习计算机原理和编程打下坚实的基础。
同时,对于普通用户来说,了解计算机的简单工作原理也将匡助他们更好地使用计算机,解决一些常见的问题。
计算机课程设计任务书
计算机课程设计任务书全文共四篇示例,供读者参考第一篇示例:计算机课程设计任务书一、课程名称:计算机应用课程设计二、课程编号:COMP101三、授课教师:XXX四、课程简介:计算机应用课程设计是一门针对计算机专业学生的实践性课程,旨在培养学生独立分析问题、设计解决方案的能力。
通过本课程的学习,学生将深入了解计算机应用的基本原理和实践技巧,掌握各类应用软件的开发与设计方法,培养实践动手能力和团队合作精神。
五、课程目标:1. 理解计算机应用的基本原理和技术;2. 掌握各类应用软件的开发和设计方法;3. 能够独立分析问题,设计解决方案;4. 培养实践动手能力和团队合作精神。
六、课程内容:1. 计算机应用基础知识介绍2. 软件开发工具及技术3. 基本软件应用开发4. 软件测试与调试技术5. 软件项目管理与团队合作七、实践任务:1. 设计一个简单的桌面应用软件,实现基本的功能:如文本编辑、图形绘制等;2. 运用所学的软件开发技巧,设计一个网页应用程序,实现数据交互和动态效果;3. 结合实际案例,进行软件测试与调试,找出问题并解决;4. 分组进行软件项目管理的实践,体验团队协作的重要性。
八、实践作业要求:1. 按时提交每个阶段的实践作业,包括设计文档、代码和测试报告;2. 在团队合作实践中,积极参与讨论和合作,分工明确,任务完成及时;3. 完成个人项目设计和实现,具有一定的创新性和实用性。
九、考核方式:1. 课堂表现(15%)2. 实践作业(40%)3. 期末考核(45%)十、课程教材:1. 《计算机应用基础》2. 《软件开发技术》3. 《软件测试与调试指南》十一、参考资料:1. https:///2. https:///3. https:///以上为本课程的设计任务书,希望同学们认真学习和实践,掌握计算机应用的基本原理与技术,提升实践能力和团队合作意识。
祝大家学习愉快!第二篇示例:任务书二、任务目标1. 通过本次课程设计,学生要掌握Java、Python或C++等编程语言的基础知识和程序设计技巧。
微型计算机原理及接口技术课程设计-数据采集系统设计
微型计算机原理及接口技术课程设计-数据采集系统设计是一个综合性的项目,需要考虑到硬件和软件两个方面的内容。
以下是一个简单的数据采集系统设计的课程设计思路:一、硬件设计1. 选择合适的微处理器或微控制器,如8051、ARM等。
2. 确定数据采集模块,如AD转换器、传感器等。
3. 选择适当的数据存储模块,如RAM、EEPROM等。
4. 根据系统需求,设计合理的接口电路,如RS-232、RS-485、I2C、SPI等。
5. 确保电路的稳定性和可靠性,进行必要的抗干扰设计。
二、软件设计1. 编写微处理器或微控制器的程序,包括数据采集、处理、存储等环节。
2. 实现与数据采集模块和存储模块的通信,实现数据的实时传输和存储。
3. 实现系统的初始化、参数设置、结果显示等功能。
4. 进行必要的测试和调试,确保系统的稳定性和准确性。
具体步骤如下:一、系统总体设计1. 根据需求分析,确定系统的总体结构和功能。
2. 确定数据采集模块的类型和参数要求。
3. 确定存储模块的类型和参数要求。
4. 根据硬件选择,确定微处理器或微控制器的型号和参数要求。
二、硬件电路设计1. 根据系统总体结构和功能,设计合理的接口电路。
2. 根据所选硬件,进行必要的抗干扰设计。
3. 制作电路板,进行必要的调试和测试。
三、软件程序设计1. 根据系统总体结构和功能,编写微处理器或微控制器的程序。
2. 实现与数据采集模块和存储模块的通信协议,实现数据的实时传输和存储。
3. 进行必要的测试和调试,确保程序的正确性和稳定性。
四、系统集成和测试1. 将硬件和软件整合在一起,进行系统的集成和测试。
2. 进行性能测试、精度测试、稳定性测试等,确保系统的稳定性和准确性。
3. 编写系统使用手册和故障排除指南,为用户提供必要的支持和服务。
以上是一个简单的数据采集系统设计的思路和步骤,具体的设计过程还需要根据实际情况进行调整和优化。
同时,还需要注意安全性和环保性等方面的要求,确保系统的安全可靠运行。
计算机原理cpu课程设计
计算机原理 cpu课程设计一、教学目标本节课的教学目标是让学生了解和掌握计算机CPU的基本原理和组成结构,包括中央处理器(CPU)的功能、架构、工作原理及其在计算机系统中的重要性。
知识目标要求学生能够描述CPU的主要组成部分,如控制单元、算术逻辑单元(ALU)、寄存器等,并理解它们的作用。
技能目标则要求学生能够通过实验或模拟软件,观察和分析CPU的工作过程,提升学生的实际操作能力和问题解决能力。
情感态度价值观目标则是培养学生对计算机科学的好奇心和探索精神,增强学生对技术进步的认同感,同时培养学生的团队合作意识。
二、教学内容本节课的教学内容将围绕CPU的原理与结构展开。
首先,介绍CPU在计算机系统中的核心地位及其重要性。
接着,详细讲解CPU的组成,包括控制单元、ALU、寄存器等关键部件的功能和作用。
然后,通过实例分析CPU的工作流程,即 fetch-decode-execute 循环,让学生理解指令的执行过程。
最后,讨论CPU性能指标,如时钟频率、指令周期、流水线技术等,并介绍多核处理器的基本概念。
三、教学方法为了提高教学效果,将采用多种教学方法相结合的方式进行教学。
首先,采用讲授法向学生介绍CPU的基本概念和原理。
其次,通过案例分析法,分析具体的CPU工作实例,让学生更直观地理解CPU的工作过程。
再次,利用实验法,让学生在实验室中实际操作CPU模拟软件,亲身体验CPU的工作原理。
最后,课堂讨论,鼓励学生提出问题、分享心得,以提高学生的主动性和参与度。
四、教学资源为了支持教学,将准备丰富的教学资源。
主要教材为《计算机组成原理》,辅助教材包括《计算机科学概论》等。
参考书籍将提供更深入的理论知识,如《深入理解计算机系统》。
多媒体资料将包括教学PPT、视频动画等,以形象直观的方式展示CPU的工作原理。
实验设备包括CPU模拟器软件和必要的计算机硬件,供学生进行实验操作,增强实践体验。
五、教学评估为了全面、客观地评估学生的学习成果,将采用多种评估方式。
0813022057 施磊磊 计082班 计算机组成原理课程设计(模型计算机的设计与实现)
南通大学计算机科学与技术学院计算机组成原理课程设计报告书课题名模型计算机的设计与实现班级计082姓名施磊磊学号 **********指导教师顾晖日期 2011.1.10 ~ 2011.1.14一、设计目的1、融会贯通教材各章的内容,通过知识的综合运用,加深对计算机系统各模块的工作原理及相互联系的认识,经阿什计算机工作中“时间-空间”概念的理解,从而清晰地建立计算机的整机概念。
2、学习设计和调试计算机的基本步骤和方法,培养科学研究的独立工作能力,取得工程设计和调试的实践和经验。
二、设计内容1、根据给定的数据格式和指令系统,设计一台微程序控制的模型计算机。
2、根据设计图,在QUARTUS II环境下仿真调试成功。
3、在调试成功的基础上,整理出设计图纸和相关文件,包括:(1)总框图(数据通路图);(2)微程序控制器逻辑图;(3)微程序流程图;(4)微程序代码表;(5)设计说明书;(6)工作小结。
三、数据格式与指令系统1、数据格式数据字规定采用定点整数补码表示法,字长8位,其中最高位为符号位,其格式如下:7 6 5 4 3 2 1 02、指令格式本实验设计使用5条机器指令,其格式与功能说明如下:7 6 5 4 3 2 1 0INADDSTAOUTJMPIN指令为单字长(字长为8bits)指令,其功能是将数据开关的8位数据输入到R0寄存器。
ADD指令为双字长指令,第一个字为操作码,第二个字为操作数地址,其功能是将R0寄存器的内容与内存中地址为A的数相加,结果存放在R0寄存器中。
STA指令为双字长指令,第一个字为操作码,第二个字为操作数地址,其功能是将R0寄存器中的内容存储到以第二个字为地址的内存单元中。
OUT指令为双字长指令,第一个字为操作码,第二个字为操作数地址,其功能是将内存中以第二个字为地址的内存单元中的数据读出到数据总线,显示之。
JMP指令为双字长指令,第一个字为操作码,第二个字为操作数地址,其功能是程序无条件转移到第二个字指定的内存单元地址。
本科计算机课程设计
本科计算机课程设计一、课程目标知识目标:1. 理解计算机课程设计的基本原理和方法;2. 掌握运用所学的编程语言和工具进行简单的系统分析与设计;3. 了解软件工程的基本概念,并能运用到实际项目中;4. 掌握计算机课程中涉及的数据结构、算法和软件测试等知识。
技能目标:1. 能运用结构化分析方法进行需求分析,独立完成需求规格说明书编写;2. 能根据需求规格说明书,运用面向对象设计方法进行系统设计,并编写设计文档;3. 能运用所学的编程技能,独立完成系统模块编码和调试;4. 能对完成的软件进行基本的测试和优化。
情感态度价值观目标:1. 培养学生严谨、认真的工作态度,养成良好的编程习惯;2. 增强学生的团队协作意识,学会与他人共同解决问题;3. 激发学生对计算机科学的兴趣,培养其探索精神和创新意识;4. 培养学生遵守职业道德,关注社会需求,将所学知识应用于实际问题的解决。
本课程目标旨在让学生通过学习,掌握计算机课程设计的基本知识和技能,培养其独立分析和解决问题的能力,同时注重培养学生的团队协作、创新意识和职业道德,使其成为适应社会需求的计算机专业人才。
二、教学内容1. 计算机课程设计基本原理:包括课程设计的目的、任务、方法和步骤,结合教材相关章节,让学生从理论上掌握计算机课程设计的基本框架。
2. 系统分析与设计:讲解需求分析、系统设计的基本方法,如结构化分析、面向对象设计等,结合案例让学生学会运用所学方法进行实际项目的设计。
3. 编程语言与工具:根据教材,介绍常用的编程语言(如C++、Java等)和开发工具(如Visual Studio、Eclipse等),使学生能熟练运用这些工具进行软件开发。
4. 数据结构、算法与软件测试:结合教材相关章节,讲解基本数据结构、算法知识,以及软件测试方法,让学生掌握计算机程序的核心技术。
5. 项目实践:安排一个实际项目进行课程设计,要求学生按照教学大纲,分阶段完成需求分析、系统设计、编码、测试等任务。
计算机组成原理课程设计 微指令
计算机组成原理课程设计微指令一、课程设计题目微指令设计与实现二、设计目的通过本次课程设计,学生将深入了解微指令的概念、设计方法和实现过程,掌握微指令的编写技巧和调试方法,提高学生的计算机组成原理理论水平和实践能力。
三、设计内容1. 微指令的概念和作用2. 微指令的设计方法和流程3. 微指令的编写技巧和调试方法4. 微指令的实现过程和实验操作四、设计步骤1. 学生自行学习微指令的概念和作用,了解微指令的设计方法和流程。
2. 学生根据所学知识,编写一个简单的微指令程序,包括指令的操作码、操作数、寻址方式等。
3. 学生使用微指令编译器,将编写好的微指令程序转换成微指令码。
4. 学生使用微指令模拟器,将微指令码加载到模拟器中,进行调试和测试。
5. 学生根据实验结果,对微指令程序进行优化和改进,提高程序的执行效率和稳定性。
6. 学生撰写实验报告,总结微指令的设计方法和实现过程,分析实验结果和问题,并提出改进方案和建议。
五、设计要求1. 学生需要独立完成本次课程设计,不得抄袭他人作品。
2. 学生需要按照设计步骤,认真完成实验操作和调试工作。
3. 学生需要撰写规范的实验报告,包括实验目的、原理、方法、结果和结论等内容。
4. 学生需要在规定时间内完成课程设计,并按时提交实验报告。
六、设计评价1. 学生的实验报告质量和内容是否符合要求。
2. 学生的实验操作和调试能力是否达到要求。
3. 学生的微指令程序设计和实现是否合理和有效。
4. 学生的课程表现和参与度是否积极和认真。
七、设计参考资料1. 《计算机组成原理》(第2版),唐朔飞,高等教育出版社,2015年。
2. 《计算机组成原理实验指导书》(第2版),唐朔飞,高等教育出版社,2016年。
3. 《微指令设计与实现》课程教材,作者待定。
计算机组成原理课程设计的实验报告
计算机组成原理课程设计的实验报告实验报告:计算机组成原理课程设计摘要:本实验报告旨在介绍计算机组成原理课程设计的实验过程和结果。
该实验旨在深入理解计算机的组成和工作原理,并通过设计和实现一个简单的计算机系统来加深对计算机组成原理的理解。
本实验报告将包括实验的目的、实验环境、实验步骤、实验结果以及实验的分析和讨论。
1. 实验目的:本实验的目的是通过设计和实现一个简单的计算机系统,加深对计算机组成原理的理解。
具体目标包括:- 理解计算机的基本组成和工作原理;- 掌握计算机硬件的设计和实现方法;- 学习使用计算机组成原理相关的软件工具。
2. 实验环境:本实验所需的硬件和软件环境如下:- 硬件环境:一台支持计算机组成原理课程设计的计算机;- 软件环境:计算机组成原理相关的软件工具,如Xilinx ISE、ModelSim等。
3. 实验步骤:本实验的步骤主要包括以下几个部分:3.1 系统需求分析在设计计算机系统之前,首先需要明确系统的需求和功能。
根据实验要求,我们需要设计一个简单的计算机系统,包括指令集、寄存器、运算单元等。
3.2 系统设计根据系统需求分析的结果,进行系统设计。
设计包括指令集的设计、寄存器的设计、运算单元的设计等。
3.3 系统实现在系统设计完成后,需要进行系统的实现。
具体步骤包括使用硬件描述语言(如VHDL)进行电路设计,使用Xilinx ISE进行逻辑综合和布局布线,最终生成bit文件。
3.4 系统测试在系统实现完成后,需要进行系统的测试。
测试包括功能测试和性能测试。
功能测试主要是验证系统是否按照设计要求正常工作;性能测试主要是测试系统的性能指标,如运行速度、吞吐量等。
4. 实验结果:经过实验,我们成功设计和实现了一个简单的计算机系统。
该系统具有以下特点:- 指令集:支持基本的算术运算和逻辑运算;- 寄存器:包括通用寄存器、程序计数器、指令寄存器等;- 运算单元:包括算术逻辑单元(ALU)和控制单元。
计算机组成原理课程设计
计算机组成原理课程设计
计算机组成原理课程设计
一、课程介绍
本课程主要介绍计算机组成原理,包括计算机的结构,功能,性能,介绍CPU,存储器,总线,输入/输出系统,及这些部件之间的工作关系。
二、课程目标
1. 学生能够认识计算机的概念、主要组成部分及功能。
2. 了解计算机基本工作原理,包括CPU,存储器,总线,输入/输出系统,以及这些部件之间的工作关系。
3. 掌握主要软件技术,包括汇编语言,编译语言,操作系统等。
三、内容安排
本课程包括以下主要内容:
1. 计算机基本概念:计算机的构成,计算机系统和计算机网络。
2. CPU:架构、指令集、运算法则和程序控制。
3. 存储器:存储器的类型、特性和性能。
4. 总线:总线的结构、架构及特点。
5. 输入输出系统:计算机系统的输入输出结构、设备接口、通信协议。
6. 汇编语言程序设计:汇编语言基本语法,程序编写及调试。
7. 编译语言程序设计:编译语言程序设计,程序语言、数据结构、程序编写及调试。
8. 操作系统程序设计:操作系统概念、基本功能结构,虚拟存储器,任务调度,工作管理,系统文件管理等。
四、课程评价
课程主要采用学习报告、小组讨论、实验报告等方式进行评价。
计算机组成原理课程设计完整版
目录1 需求分析 (1)1.1课程设计目的 (1)1.2课程设计内容及要求 (1)1.3TDN-CM++计算机组成原理实验教学系统特点 (2)1.4微指令格式分析 (2)1.5指令译码电路分析 (5)1.6寄存器译码电路分析 (6)1.7时序分析 (7)2 总体设计 (9)2.1数据格式和机器指令描述 (9)2.2机器指令设计 (11)3 详细设计 (16)3.1控制台微程序流程的详细设计 (16)3.2运行微程序流程的详细设计 (19)4 实现阶段 (31)4.1所用模型机数据通路图及引脚接线图 (31)4.2 测试程序及结果 (33)心得体会 (35)参考资料 (36)1 需求分析1.1 课程设计目的本课程设计是计算机科学与技术专业重要的实践性教学环节之一,是在学生学习完《计算机组成原理》课程后进行的一次全面的综合设计。
目的是通过一个完整的8位指令系统结构(ISA)的设计和实现,加深对计算机组成原理课程内容的理解,建立起整机系统的概念,掌握计算机设计的基本方法,培养学生科学的工作作风和分析、解决实际问题的工作能力。
1.2 课程设计内容及要求基于TDN-CM++计算机组成原理实验教学系统,设计和实现一个8位指令系统结构(ISA),通过调试和运行,使设计的计算机系统能够完成指定的功能。
设计过程中要求考虑到以下各方面的问题:(1)指令系统风格(寄存器-寄存器,寄存器-存储器,存储器-存储器);(2)数据类型(无符号数,有符号数,整型,浮点型);(3)存储器划分(指令,数据);(4)寻址方式(立即数寻址,寄存器寻址,直接寻址等);(5)指令格式(单字节,双字节,多字节);(6)指令功能类别(算术/逻辑运算,存储器访问,寄存器操作,程序流控制,输入/输出)。
要求学生综合运用计算机组成原理、数字逻辑和汇编语言等相关课程的知识,理解和熟悉计算机系统的组成原理,掌握计算机主要功能部件的工作原理和设计方法,掌握指令系统结构设计的一般方法,掌握并运用微程序设计(Microprogramming)思想,在设计过程中能够发现、分析和解决各种问题,自行设计自己的指令系统结构(ISA)。
(整理)微型计算机原理课设
《微型计算机原理》课程设计题目:竞赛抢答器设计姓名:赵浩淞学号:40850020班级:电081指导教师:董洁日期:2010.12前言本次课程设计的内容是设计一个6路抢答器,并对抢答成功、抢答犯规、响铃提示等实际情况进行软硬件模拟。
设计过程中,主要用到的芯片有可编程中断控制器8259A、可编程并行接口芯片8255A、可编程定时器/计数器芯片8253等。
硬件方面,原理图的设计是基于Labcenter electronics公司出版的Proteus,它强大的仿真能力让我赞叹不已的同时,也受益匪浅。
软件方面,程序的设计是基于8086/8088汇编语言在轻松汇编软件上进行编写和调试,它小巧方便且功能齐全。
反复推敲的设计思路,充满艰辛而又饶有趣味的设计过程,成功的软、硬件结合,再加上日复一日的努力奋斗,才有了今日之设计成果。
在要求的基础之上,我还加入了一些自主创新的东西。
设计完成之时,本人激动的心情,溢于言表。
虽然,我知道,我的设计成果之中一定还存在很多不足之处,很多可以优化的地方,甚至,有可能还会有一些漏洞。
但是,整个过程我的的确确努力了,并全身心投入于其中了。
我尽量做到了我所能做到的最好。
下面,我将对我的设计思路、设计过程、设计心得等逐一进行详细的阐释。
烦请老师审阅。
特此感谢董洁老师一学期悉心的教导。
目录第一章课程设计任务书。
4 第二章设计。
5 2.1 设计思路。
5 2.2 硬件设计。
6 2.3 软件设计。
7 第三章小结及参考文献。
10 第四章课程设计图纸。
11 第五章程序清单。
12第一章设计要求设计一个具有4(6)路抢答的抢答器,启动计算机,计算机自动为系统各芯片进行初始化,抢答器开始工作。
比赛开始,在主持人按下开始键,绿灯亮后,选手才可开始抢答,否则违规。
利用并行接口和开关键。
逻辑开关K0——K3(5)代表抢答按钮,当某个逻辑开关闭合时,相当于抢答按钮按下。
若选手抢答成功,黄灯亮,七段数码管显示选手号码,扬声器鸣叫。
计算机组成原理课程设计(中央处理器--微程序控制器设计)
“计算机组成原理”课程设计报告微程序控制器的设计一、设计思路按照要求设计指令系统,该指令系统能够实现数据传送,进行加、减运算和无条件转移,具有累加器寻址、寄存器寻址、寄存器间接寻址、存储器直接寻址、立即数寻址等五种寻址方式。
从而可以想到如下指令: (1)24位控制位分别介绍如下:位控制位分别介绍如下: XRD XRD :: 外部设备读信号,当给出了外设的地址后,输出此信号,从指定外设读数据。
定外设读数据。
EMWR EMWR:: 程序存储器EM 写信号。
写信号。
EMRD EMRD:: 程序存储器EM 读信号。
读信号。
PCOE PCOE:: 将程序计数器PC 的值送到地址总线ABUS 上。
上。
EMEN EMEN:: 将程序存储器EM 与数据总线DBUS 接通,由EMWR 和EMRD 决定是将DBUS 数据写到EM 中,还是从EM 读出数据送到DBUS DBUS。
IREN IREN:: 将程序存储器EM 读出的数据打入指令寄存器IR 和微指令计数器uPC uPC。
EINT EINT:: 中断返回时清除中断响应和中断请求标志,便于下次中断。
中断返回时清除中断响应和中断请求标志,便于下次中断。
ELP ELP:: PC 打入允许,与指令寄存器的IR3IR3、、IR2位结合,控制程序跳转。
转。
MAREN MAREN:将数据总线:将数据总线DBUS 上数据打入地址寄存器MAR MAR。
MAROE MAROE:将地址寄存器:将地址寄存器MAR 的值送到地址总线ABUS 上。
上。
OUTEN OUTEN:将数据总线:将数据总线DBUS 上数据送到输出端口寄存器OUT 里。
里。
STEN STEN:: 将数据总线DBUS 上数据存入堆栈寄存器ST 中。
中。
RRD RRD:: 读寄存器组读寄存器组R0-R3R0-R3,寄存器,寄存器R?R?的选择由指令的最低两位决定。
的选择由指令的最低两位决定。
的选择由指令的最低两位决定。
计算机组成原理课程设计3篇
计算机组成原理课程设计第一篇:CPU设计计算机中心处理器(Central Processing Unit, CPU)是计算机的心脏,它负责执行指令,完成计算和控制计算机的所有运算和数据传输。
在计算机组成原理课程设计中,设计一块CPU是非常重要的一步。
CPU的设计与制作需要有一定的基础和经验。
首先,需要了解CPU的工作原理和基本组成,包括寄存器、ALU、控制器和数据通路等。
其次,需要掌握数字逻辑、硬件描述语言和电子工艺制作等知识和技能,以实现CPU的具体功能。
设计一块CPU可分为以下几个步骤:1.确定CPU的整体架构和指令集。
根据需求和实际应用,确定CPU的整体架构和指令集。
可以参考现有的CPU设计,并根据实际情况进行优化和改进。
2.编写CPU的硬件描述语言代码。
使用硬件描述语言(如VHDL)编写CPU的硬件描述语言代码,包括寄存器、ALU、控制器和数据通路等。
3.使用仿真工具进行验证。
使用仿真工具模拟CPU的运行过程,验证硬件描述语言代码的正确性和功能实现。
4.设计和制作PCB电路板。
将CPU的硬件描述语言代码转换为PCB电路板设计,并制作出实际的电路板。
5.测试CPU的性能和功能。
对制作出的CPU进行测试,验证其性能和功能可靠性。
CPU的设计和制作是计算机组成原理课程设计中非常关键的一步,它直接影响到完成整个计算机系统的可靠性和性能。
因此,设计和制作一块优秀的CPU需要耐心和实践经验的积累。
第二篇:存储器设计存储器是计算机系统中重要的组成部分,用于存储数据和程序。
存储器需要具有读、写、删等常见操作,设计一块性能良好和容量适中的存储器是计算机组成原理课程设计的核心内容之一。
存储器的设计和制作需要掌握数字电路设计、电子工艺制作和人机交互等知识和技能。
下面是存储器设计的主要步骤:1.确定存储器的类型和容量。
根据实际需要和使用场景,确定存储器的类型和容量,包括SRAM、DRAM、FLASH等。
2.设计存储器的电路和控制线路。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计说明书计算机组成原理算法实现(四)专业 计算机科学与技术学生姓名 王亚飞 班级 D 计算机132 学号1320704223 指导教师 花小朋 完成日期2016年1月22日1 课程设计目的本课程设计是在学完本课程教学大纲规定的全部内容、完成所有实践环节的基础上,旨在深化学生学习的计算机组成原理课程基本知识,进一步领会计算机组成原理的一些算法,并进行具体实现,提高分析问题、解决问题的综合应用能力。
2 课程设计内容与要求2.1 题目计算机组成原理算法实现(四)2.2 功能能够实现机器数的真值还原(定点小数)、定点小数的单符号位补码加减运算、定点小数的补码乘法运算和浮点数的加减运算。
(1)系统进入(主)窗体的设计:菜单需要在输入口令正确后方可激活使用。
口令输入错误时要给出重新输入口令的提示。
(2)选择主窗体中“定点小数真值还原”时进入下图所示的窗体:在上面的窗体中按“输入”按扭时,将输入焦点设置为最上面的一个文本框上。
输入一个定点小数形式的机器数(如:1.1001)后,按“原—〉真值”、“反—〉真值”、“补—〉真值”或“移—〉真值”按钮中的任一个后,将在第二个文本框中显示对应的真值。
选择“返回”按钮时回到主窗体。
(3)选择主窗体中的“定点小数单符号位补码加减运算”时进入如下图所示的窗体:操作时首先选择“输入”按钮输入参与运算的数据,然后再选操作按钮。
当单击“加法”、“减法”第三、四个文本框显示对应的结果。
选择“返回”按钮时回到主窗体。
(4)选择主窗体中的“定点小数原码乘法”时进入如下图所示的窗体:操作时首先选择“输入”按钮输入参与运算的数据,然后再选操作按钮。
当单击“乘法”时第三个文本框显示对应的结果。
选择“返回”按钮时回到主窗体。
(5)选择主窗体中的“浮点数的加减运算”时进入下图所示的窗体:先选择“输入”按钮输入参与运算的数据,再选操作按钮。
当单击“加法”和“减法”时下列文本框显示对应的结果:加法的阶码和尾数、减法的阶码和尾数。
选择“返回”按钮时回到主窗体。
(6)选择主窗体中的“帮助”进入下图所示的窗体:阅读完文字后,可使用“关闭”按钮返回主窗口。
3 功能模块详细设计3.1 功能介绍3.2实现方法(1)登录界面设计思路界面:整个布局使用了LinearLayout,设置 android:orientation="vertical"就可以让所有控件以水平方式来排列,LinearLayout作为容器来承载控件,布局中第一个控件是TextView,值为“计算机组成原理算法实现(4)”,第二个控件是EditText,EditText是文本输入框,最后一个控件是Button控件,用于确定来绑定事件。
功能:Buttton绑定了一个监听点击的一个事件,在这个方法体中,主要写了,获得EditText的字符串消息和Intnet跳转,Intent是Android中的一个类,用于控件不同地Activity跳转,从而实现可以在手机上看到不同的画面,这里的Intent 跳转到主界面,这也是程序的唯一入口地址。
当口令正确,就可以进入主界面,如果连续三次错误程序将被锁死,无法打开。
(2)主界面设计思路界面:在主界面中使用了NavigationView,NavigationView采用最Google最新的Material Design,它是一个很新并且重要的Material Design组件。
在Material Design中,Navigation drawer导航抽屉,被设计用于应用导航,提供了一种通用的导航方式,体现了设计的一致性。
而NavigationView的典型用途就是配合之前v4包的DrawerLayout,作为其中的Drawer部分,即导航菜单的本体部分。
NavigationView是一个导航菜单框架,使用menu资源填充数据,使我们可以更简单高效的实现导航菜单。
它提供了不错的默认样式、选中项高亮、分组单选、分组子标题、以及可选的Header。
功能:这里的导航菜单设置了四个ITEM,分别是“机器数的真值还原”,“定点小数符号位的补码加减运算”,“定点小数原码的乘法运算”和“浮点数的加减运算”,点击对应的ITEM分别会跳到相应的界面,从而实现了界面的跳转,具体的操作将会在别人Activity处理。
(3)机器数的真值还原设计思路界面:在这个UI中,设置了较多的控件,首先第一个是EditText,用于输入信息,第二个和第三个控件都是TextView,不同的是第一个只是用来提示用户下面是真值,所以这里的Text属性就被设置了“真值是”,第三个真正用来显示所求的结果的,然后依次放了几个Button,用来触发事件。
功能:第一个Button是原码求真值的,我们所输入的是定点小数所以是符合原码的不用再做处理,第二个Button是“反码-->真值”,当得到所输入的数据后,对这个定点小数小数点以后的数据进行取反,取反的数据再与符号位连接起来就得到“反码-->真值”的值了。
第三个Button是用来“补码-->真值”,因为补码是在反码基础上取反加1就好,所以可以复用求反码的方法,在此基础上加1,便取到补码到真值的值了。
第四个Button是“移码”复用第三个Button的方法,只要对符号位替换掉就好了。
(4)定点小数的单符号位的补码加减运算设计思路界面:UI布居中,有两个EditText,分别输入两个定点小数,两个TextView用来显示求和的结果,和相减的结果,四个Button按钮用来触发事件。
功能:点击“减法”会获得两个输入框中补码相加的结果,在TextView中显示,点击“加法”会对两个输入框的值进行相加,加的结果会显示在TextView中,以供用户观察。
点击“返回”会直接退出这个界面,回到主界面,点击“清除”会清除输入框中的值。
代码处理首先是取得两个ExitText中的值,程序得到的值会进行判断是正是负,如果是正的直接处理,如果是负的会把它写成加一个负数的形式,调用相加的方法,最后加上符号位,最后返回一个字符串。
(5)定点小数原码乘法运算设计思路界面:UI中有两个EditText,一个TextView以及三个Button。
功能:点击输入会获得第一个EditText的焦点,点击乘法会对两个输入框的值进行相乘,乘的结果会显示在TextView中,以供用户观察。
点击“返回”会直接退出这个界面,回到主界面。
定点小数原码乘法的原理是,符号位相同得正,不同为负,然后对后边字符串中的内容进行遍历,第一个数的最后一位依次与第二个数的个个位置的数相乘,保存在一个字符串数组中,最后对这个数组进行二进制加法运算,返回这个结果。
(6)浮点数的加减运算设计思路界面:UI布居中,有四个EditText,分别输入两个浮点小数,四个TextView用来显示求和的结果,和相减的结果,四个Button按钮用来触发事件。
功能:点击“输入”会获得第一个EditText的焦点,点击乘法会对四个输入框的值进行浮点数加减,乘的结果会显示在TextView中,以供用户观察。
点击“返回”会直接退出这个界面,回到主界面。
4 设计小结为期一周的课程设计就这样结束了。
在程序设计的时也遇到了很多的问题,刚刚看到这个题目时觉得挺简单,后来慢慢的发现并非如此。
当你真正要去做一个东西的时候,会面临比平常多的问题。
经过本次课程设计,发现做软件真的需要做很多工作,不仅仅是敲代码。
通过此次课程设计,使我更加扎实的掌握了有关Android方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。
实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。
过而能改,善莫大焉。
在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。
最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。
这次课程设计终于顺利完成了,在设计中遇到了很多问题。
在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可!课程设计诚然是一门专业课,给我很多专业知识以及专业技能上的提升,同时又是一门讲道课,一门辩思课,给了我许多道,给了我很多思,给了我莫大的空间。
同时,设计让我感触很深。
使我对抽象的理论有了具体的认识。
参考文献[1] 白中英. 计算机组成原理(第五版)[M]. 北京: 科学出版社, 2010.[2]耿祥义《Java2实用教程》[M].北京:清华大学出版社2006.08部分代码Util.javapackage com.wyf.king.myapplication;public class Util {/****** 求补码* @param str String** @return String*/public String getBuMa(String str){String buMa;if(NotRight(str)){return "数据不会法!!!";}else if(str.charAt(0)=='0'){System.out.println("我是正数");return str;}else {buMa=str.substring(0,2)+QuFan(str.substring(2,str.length()));System.out.println("前两个是"+str.substring(0, 2));System.out.println("我是负数");return buMa;}}/*** 对字符串取反* @param str String* @return String*/public String QuFan(String str){System.out.println("取反的字符串是"+str);str=str.replace("1","*");str=str.replace("0","1");str=str.replace("*","0");System.out.println("取反后是:"+str);return str;}public boolean NotRight(String str) {// Pattern pattern = pile("[0-1]"); // Matcher matcher = pattern.matcher(str);// if (matcher.find()) {// return true;// }return false;}/*** 定点小数加法运算* @param one String* @param two String* @return String*/public String DingJiaJian(String one,String two) {one=getBuMa(one);two=getBuMa(two);String result="";int len;String temp=null;if(one.length()<two.length()){temp=one;one=two;two=temp;}boolean jinwei[]=new boolean[one.length()];{len=two.length();result=one.substring(len);System.out.println("len是从这里开始的"+result);for(int i=len-1;i>=0;i--){if(one.charAt(i)=='.'){jinwei[i]=true;result="."+result;continue;}intsum=(int)(one.charAt(i)+two.charAt(i));System.out.println(sum);System.out.println("one的值是"+one.charAt(i)+"two的值是"+two.charAt(i)+"sum是"+sum);System.out.println('2');if(sum==98){jinwei[i]=true;if((i+1)<two.length()&&jinwei[i+1]) {temp="1"+result;result=temp;}else {temp="0"+result;result=temp;}}else if (sum==97){if((i+1)<two.length()&&jinwei[i+1]==true) {temp="0"+result;result=temp;jinwei[i]=true;}else {temp="1"+result;result=temp;jinwei[i]=false;}}else if (sum==96) {if(jinwei[i+1]){temp="1"+result;result=temp;}else {temp="0"+result;result=temp;}jinwei[i]=false;}else {}if(i==0){if(jinwei[0]&&jinwei[2]||!jinwei[0]&&!jinwei[2]){return result;}}}}return "内存溢出";}public String DingJianFa(String one,String two) {System.out.println("two is"+two);if(two.charAt(0)=='0'){two="1"+two.substring(1);}else {two="0"+two.substring(1);}return DingJiaJian(one, two);}/*** 原码乘法运算* @param one String* @param two String* @return String*/public String YuanCheng(String one,String two) {String result;String temp="";//保留正负号if(one.charAt(0)==two.charAt(0))result="0.";else {result="1.";}String a=result;result="0";one=one.substring(2);two=two.substring(2);char first[]=one.toCharArray();char second[]=two.toCharArray();int len1=first.length;int len2=second.length;char aa[]=new char[100];if(len1<len2){aa=first;first=second;second=aa;}String meiHang[]=new String[second.length*second.length];int len=first.length;for(int i=0;i<len;i++){for(int j=0;j<second.length;j++){if(first[i]=='1'&&second[i]=='1'){temp="1"+temp;}else{temp="0"+temp;}}for(int j=1;j<=i;j++)temp=temp+"0";meiHang[i]=temp;temp="";System.out.println("每行的数据:"+meiHang[i]);result=ErJiaFa(meiHang[i],result);}return a+result;}/******************二进制加法器************************/public String ErJiaFa(String one,String two){String result="";int len=0;String temp=null;if(one.length()<two.length()){temp=one;one=two;two=temp;}boolean jinwei[]=new boolean[one.length()+2];int len1=one.length();int len2=two.length();for (int i = 0; i < len1-len2; i++){two="0"+two;}for (int i = len1-1;i>=0; i--){char a=one.charAt(i);char b=two.charAt(i);if((a=='1'&&b=='1'&&(jinwei[i+1]==true))){result="1"+result;jinwei[i]=true;}elseif((a=='1'&&b=='1'&&jinwei[i+1]==false)){result="0"+result;jinwei[i]=true;}elseif((a=='0'&&b=='0'&&jinwei[i+1]==true)){result="1"+result;}elseif((a=='0'&&b=='0'&&jinwei[i+1]==false)){result="0"+result;}elseif(jinwei[i+1]==true&&(a=='1'&&b=='0'||a=='0'&&b==' 1')){result="0"+result;jinwei[i]=true;}elseif(jinwei[i+1]==false&&((a=='1'&&b=='0')||(a=='0'&&b =='1'))){result="1"+result;jinwei[i]=false;System.out.println("我错了"+result);}System.out.println("result"+result);}if (jinwei[0]){result="1"+result;}return result;}}FuDianShuUtil.javapackage com.wyf.king.myapplication;/*** Created by King on 2016/1/20.*/public class FuDianShuUtil {public String FuDianShuJia(String j1 ,String j2,String t1,String t2){String result1=null,result2=null;String s2_=t1;char b1_[]=new char[s2_.length()-1];s2_.getChars(0,2,b1_,0);s2_.getChars(3,s2_.length(),b1_,2);C.原_补(b1_);String s2=new String(b1_);String s4_=t2;char b2_[]=new char[s4_.length()-1];s4_.getChars(0,2,b2_,0);s4_.getChars(3,s4_.length(),b2_,2);C.原_补(b2_);String s4=new String(b2_);String s1=j1;char a1[]=s1.toCharArray();C.原_补(a1);String s3=j2;char a2[]=s3.toCharArray();C.原_补(a2);B.减(a1,a2,a1); //对阶C.原_补(a1);int p=C.二_十(new String(a1,2,3));char b1[]=new char[p+s2.length()];for(int i=0;i<p+s2.length();i++) b1[i]='0';char b2[]=new char[p+s4.length()];for(int i=0;i<p+s2.length();i++) b2[i]='0';if(a1[0]=='0'){s1.getChars(0, s1.length(), a1, 0);s2.getChars(0, s2.length(), b1, 0);s4.getChars(0, s4.length(), b2, p);}else{s3.getChars(0, s3.length(), a1, 0);s2.getChars(0, s2.length(), b1, p);s4.getChars(0, s4.length(), b2, 0);}B.加(b1, b2, b1); //尾数相加String s=new String(b1);if(s.startsWith("01")||s.startsWith("10")) //右规{for(int i=b1.length-1;i>=1;i--) b1[i]=b1[i-1];C.加一(a1);}else if(s.startsWith("00")) //左规{int t=s.indexOf("1")-2 ;for(int i=0;i<b1.length-t;i++) b1[i]=b1[i+t]; //左移for(int i=b1.length-t;i<b1.length;i++) b1[i]='0';String t_=Long.toBinaryString(t);char a1_[]=new char[5];for(int i=0;i<5;i++) a1_[i]='0';t_.getChars(0,t_.length(),a1_,a1.length-t_.length());B.减(a1, a1_, a1);}else if(s.startsWith("11")){int t=s.indexOf("0")-2 ;for(int i=0;i<b1.length-t;i++) b1[i]=b1[i+t];for(int i=b1.length-t;i<b1.length;i++) b1[i]='0';String t_=Long.toBinaryString(t);char a1_[]=new char[5];for(int i=0;i<5;i++) a1_[i]='0';t_.getChars(0,t_.length(),a1_,a1.length-t_.length());B.减(a1, a1_, a1);}if(b1[b1.length-p]=='1') //舍入{String code=new String(b1,0,b1.length-p);char c[]=code.toCharArray();C.加一(c);b1=c;String code_=new String(b1);if(code_.startsWith("01")||code_.startsWith("10")) //右规{for(int i=c.length-1;i>=1;i--) c[i]=c[i-1];C.加一(a1);}}if(a1[0]=='0'&&a1[1]=='1'||a1[0]=='1'&&a1[1]=='0'){return "结果溢出@结果溢出";}else{C.原_补(a1);if(a1[0]=='0') { a1[0]=' '; a1[1]=(char)('+');}else {a1[0]=' '; a1[0]=(char)('-');}String code1=new String(a1);// result1=code1;C.原_补(b1);if(b1[0]=='0') { b1[1]='0'; b1[0]=(char)('+');}else {b1[1]='0'; b1[0]=(char)('-');}StringBuffer code2_=new StringBuffer(new String(b1));code2_.insert(2,".");String code2=new String(code2_);// result=code2;return code1+"@"+code2;}}public String FuDianShuJian(String j1 ,String j2,String t1,String t2){String result=null;String s2_=t1;char b1_[]=new char[s2_.length()-1];s2_.getChars(0,2,b1_,0);s2_.getChars(3,s2_.length(),b1_,2);C.原_补(b1_);String s2=new String(b1_);String s4_=t2;char b2_[]=new char[s4_.length()-1];s4_.getChars(0,2,b2_,0);s4_.getChars(3,s4_.length(),b2_,2);C.原_补(b2_);String s4=new String(b2_);String s1=j1;char a1[]=s1.toCharArray();C.原_补(a1);String s3=j2;char a2[]=s3.toCharArray();C.原_补(a2);B.减(a1,a2,a1); //对阶C.原_补(a1);int p=C.二_十(new String(a1,2,3));char b1[]=new char[p+s2.length()];for(int i=0;i<p+s2.length();i++) b1[i]='0';char b2[]=new char[p+s4.length()];for(int i=0;i<p+s2.length();i++) b2[i]='0';if(a1[0]=='0'){s1.getChars(0, s1.length(), a1, 0);s2.getChars(0, s2.length(), b1, 0);s4.getChars(0, s4.length(), b2, p);}else{s3.getChars(0, s3.length(), a1, 0);s2.getChars(0, s2.length(), b1, p);s4.getChars(0, s4.length(), b2, 0);}B.减(b1, b2, b1); //尾数相String s=new String(b1);if(s.startsWith("01")||s.startsWith("10")) //右规{for(int i=b1.length-1;i>=1;i--) b1[i]=b1[i-1];C.加一(a1);}else if(s.startsWith("000")) //左规{int t=s.indexOf("1")-2 ;for(int i=0;i<b1.length-t;i++) b1[i]=b1[i+t]; //左移for(int i=b1.length-t;i<b1.length;i++) b1[i]='0';String t_=Long.toBinaryString(t);char a1_[]=new char[5];for(int i=0;i<5;i++) a1_[i]='0';t_.getChars(0,t_.length(),a1_,a1.length-t_.length());B.减(a1, a1_, a1);}else if(s.startsWith("111")){int t=s.indexOf("0")-2 ;for(int i=0;i<b1.length-t;i++) b1[i]=b1[i+t];for(int i=b1.length-t;i<b1.length;i++) b1[i]='0';String t_=Long.toBinaryString(t);char a1_[]=new char[5];for(int i=0;i<5;i++) a1_[i]='0';t_.getChars(0,t_.length(),a1_,a1.length-t_.length());B.减(a1, a1_, a1);}if(b1[b1.length-p]=='1') //舍入{String code=new String(b1,0,b1.length-p);char c[]=code.toCharArray();C.加一(c);b1=c;String code_=new String(b1);if(code_.startsWith("01")||code_.startsWith("10")) //右规{for(int i=c.length-1;i>=1;i--) c[i]=c[i-1];C.加一(a1);}}if(a1[0]=='0'&&a1[1]=='1'||a1[0]=='1'&&a1[1]=='0'){result= "结果溢出@结果溢出";}else{C.原_补(a1);if(a1[0]=='0') { a1[0]=' '; a1[1]=(char)('+');}else {a1[0]=' '; a1[0]=(char)('-');}String code1=new String(a1);// result1=code1;C.原_补(b1);if(b1[0]=='0') { b1[1]='0'; b1[0]=(char)('+');}else {b1[1]='0'; b1[0]=(char)('-');}StringBuffer code2_=new StringBuffer(new String(b1));code2_.insert(2,".");String code2=new String(code2_);// result2=code2;result= code1+"@"+code2;}return result;}}class C{static void 原_补(char a[]) //双符号位原-补{String s=new String(a);if(s.startsWith("1")){s.getChars(stIndexOf("1"), s.length(), a, stIndexOf("1"));s=s.substring(2,stIndexOf("1"));s=s.replaceAll("0", ";");s=s.replaceAll("1", "'");s=s.replaceAll(";", "1");s=s.replaceAll("'", "0");s.getChars(0,s.length(),a,2);}}static int 二_十(String s){int p=0,m=0;for(int i=s.length()-1;i>=0;i--){char c=s.charAt(i);int a=Integer.parseInt(""+c);p=p+(int)(a*Math.pow(2,m));m++;}return p;}static void 加一(char a[]){String s=new String(a);s.getChars(0,stIndexOf("0"),a,0);Stringss=s.substring(stIndexOf("0"),s.length());ss=ss.replaceAll("0", ";");ss=ss.replaceAll("1", "'");ss=ss.replaceAll(";", "1");ss=ss.replaceAll("'", "0");ss.getChars(0,ss.length(),a,stIndexOf("0"));}}class B{static void 加(char a1[],char a2[],char b[]){int temp=0;int n=a1.length-1;for(int i=n,j=n,m=n;i>=0;i--,j--,m--){if(a1[i]=='0'&&a2[j]=='0'&&temp==0){b[m]='0';temp=0;}elseif(a1[i]=='0'&&a2[j]=='1'&&temp==0||a1[i]=='1'&&a2[j ]=='0'&&temp==0||a1[i]=='0'&&a2[j]=='0'&&temp==1){b[m]='1';temp=0;}elseif(a1[i]=='1'&&a2[j]=='1'&&temp==0||a1[i]=='0'&&a2[j ]=='1'&&temp==1||a1[i]=='1'&&a2[j]=='0'&&temp==1){b[m]='0';temp=1;}elseif(a1[i]=='1'&&a2[j]=='1'&&temp==1){b[m]='1';temp=1;}}}static void 减(char a1[],char a2[],char b[]){String s=new String(a2);s.getChars(stIndexOf("1"), s.length(), a2, stIndexOf("1"));s=s.substring(0,stIndexOf("1"));s=s.replaceAll("0", ";");s=s.replaceAll("1", "'");s=s.replaceAll(";", "1");s=s.replaceAll("'", "0");s.getChars(0,s.length(),a2,0);B.加(a1,a2,b);}}。