计算机组成原理课程设计用高级语言C#模拟计算机指令流程.doc

上传人:laozhun 文档编号:2392315 上传时间:2023-02-17 格式:DOC 页数:40 大小:2.43MB
返回 下载 相关 举报
计算机组成原理课程设计用高级语言C#模拟计算机指令流程.doc_第1页
第1页 / 共40页
计算机组成原理课程设计用高级语言C#模拟计算机指令流程.doc_第2页
第2页 / 共40页
计算机组成原理课程设计用高级语言C#模拟计算机指令流程.doc_第3页
第3页 / 共40页
计算机组成原理课程设计用高级语言C#模拟计算机指令流程.doc_第4页
第4页 / 共40页
计算机组成原理课程设计用高级语言C#模拟计算机指令流程.doc_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《计算机组成原理课程设计用高级语言C#模拟计算机指令流程.doc》由会员分享,可在线阅读,更多相关《计算机组成原理课程设计用高级语言C#模拟计算机指令流程.doc(40页珍藏版)》请在三一办公上搜索。

1、计算机科学与工程学院课程设计报告题目全称:用高级语言C#模拟计算机指令流程 学生学号: 2010231030025 姓名:樊继硕指导老师: 职称: 指导老师评语: 签字: 课程设计成绩:设计过程表现设计报告质量总分第一章 概论21.指令流程仿真软件工作原理与实现技术31.1 CPU的基本组成31.2 时序控制方式31.3控制器分类32.算术、逻辑运算部件33.CPU模型43.1指令格式43.2寻址方式43.3 指令类型53.4 传送指令63.5 双操作数算逻指令63.6 程序控制类指令63.7 总线与数据通路结构63.8 MOV指令图7第二章 需求分析81.导言81.1 目的81.2 范围82

2、.系统定义82.1 项目来源及背景82.2 项目要达到的要求92.3 软件整体结构93.应用环境103.1 系统运行硬件环境103.2 软件运行软件环境104.功能规格114.1 角色(Actor)定义114.2 系统住Use Case图114.3 用户端115.性能需求135.1 界面需求135.2 响应时间需求145.3 可靠性需求145.4 开放性需求145.5 可扩展性需求145.6 系统安全性需求146.产品提交14第三章 概要设计151.系统名称152.编写目的153.系统目的164.系统分析165.界面设计165.1界面设计166.模块设计176.1指令流程演示模块设计17第四章

3、 详细设计与实现171.导言171.1目的171.2本文档的预期读者181.3范围182.详细设计概述183.界面详细设计与实现18第五章 软件测试351.测试环境351.1硬件环境351.2 软件运行软件环境351.3 测试方法和工具352.测试范围353.测试目的354.界面测试36第一章 概论1.指令流程仿真软件工作原理与实现技术1.1 CPU的基本组成CPU 通常包含运算部件、寄存器组、微命令产生部件、时序系统等主要部件,由CPU内部总线将它们连接起来,实现它们之间的信息交换。1.2 时序控制方式同步控制方式是指统一发出的时序信号对各项操作进行同步控制。在同步控制方式中,操作时间被划分

4、为许多长度固定的时间段,一个时间段就是一个节拍,也称为时钟周期。时钟周期作为基本的时序单位,一旦确定,便固定不变,这是同步控制方式的主要特点。异步控制方式是指各项操作不受统一时序信号的约束,而是根据实际需要安排不同的时间。在异步控制所涉及的操作范围内,没有统一的时钟周期划分和同步定是脉冲,只是异步控制方式的基本特点。1.3控制器分类组合逻辑控制器。执行指令是,由组合逻辑电路在相应时间发出所需的微命令,控制有关操作。这种产生微命令的方式就是组合逻辑控制方式。组合逻辑控制器主要包括微命令发生器、指令寄存器IR、程序寄存器PC、状态字寄存器PSW、时序系统等部件。所谓微程序控制方式,是指微命令不是由

5、组合逻辑而是由微命令译码产生的。微命令控制器与组合逻辑控制器的最大不同之处是微命令产生部件的实体发生了变化,它不是由一些组合逻辑电路的集合,而是一个控制寄存器CM和相应的微命令寄存器uIR,还有微地址形成电路以及微地址寄存器uRA等部件。2.算术、逻辑运算部件在计算机中,运算部件主要由输入逻辑、算术逻辑运算部件、输出逻辑三部分组成。其中ALU是运算器部件的核心,即可完成算术运算,也可完成逻辑运算。ALU的组成一位加法器包括由两个半加器构成的一位全加器和由与非门构成的一位进位门。一位输入选择器由一对与或非门构成。控制门用来选择ALU做算术运算和逻辑运算。3.CPU模型模型机指令系统3.1指令格式

6、从简单、规整出发,模型机采用定长指令格式,每条指令16位长,占据一个存储单元。由于指令字长有限,采用寄存器型寻址,及指令格式中给出寄存器号,根据不同寻址方式形成相应地址。3.2寻址方式模型机寻址方式的特点是在指令中直接给出寄存器编号,供CPU编程访问、可编程寄存器R0R3、堆栈指针SP、程序计数器PC、程序状态字PSW。针对同一种寻址方式编码,制定不同的寄存器,可以派生出多种不同的寻址方式。(1) 寄存器寻址操作数地址存放在制定的寄存器。这种寻址方式可用来设置初始值,如设置某个寄存器的内容,或设置堆栈指针,或设置程序起始地址,或设置程序状态字等。(2) 寄存器间址操作数地址存放在指定的寄存器中

7、,而操作数则放在由该地址所指示的存储单元中。因此这种寻址方式需要内容访存,从主存单元读取操作数,或将数据写入住存单元。(3) 自减型寄存器间址将指定寄存器的内容减1后作为操作数地址再按此地址访存,从主存中读取操作数,或将数据写入主存。(4)自增型寄存器间址操作数地址在指定寄存器中,访存后将寄存器内容加1,作为新的地址指针。(5)自增型双间址将指定寄存器的内容作为操作数的间接地址,根据该地址访存后寄存器内容加1,指向下一个间址单元。双间址需两次访存,第一次从间址单元中读取操作数地址;第二次访存再从操作数地址单元中取得操作数,或向该单元写入数据。(6)变址寻址方式在变址方式中,形式地址存放在紧跟指

8、令的存储单元中,所指定的变址寄存器内容作为变址量,将形式地址与变址量相加,其结果为操作数地址。再根据该地址访存,读取或写入操作数。(7)跳步方式现行指令执行后,不是顺序执行下一条指令,而是执行再下一条指令。因此在取指后PC+1,然后进行一次PC+1,使PC内容指向现行指令之后第二个单元。这是一种实现程序分支的方法。3.3 指令类型根据模型机指令格式,操作码有4位,现用14种操作码表示了15种指令,余下2种操作码组合可供扩展。按操作数多少,可将模型机的指令分为双操作数指令和但操作数指令两大类;按指令本身的功能又可将这些指令分为传送、运算、转移等三类。3.4 传送指令由于可选用多种寻址方式,MOV

9、指令可用来预置寄存器或单元内容,实现寄存器间、寄存器存储器间、各存储单元间的信息传送,还可实现堆栈操作PUSH、POP,不专设方寸指令。在系统结构上将外围接口寄存器与主存单元统一编址,因而MOV指令可用来进行I/O操作,不再专门设置显示I/O指令。3.5 双操作数算逻指令逻辑运算指令用来实现位检测、位清除、位设置、位修正等位操作功能,所用屏蔽字可由立即寻址方式提供。异或指令可实现判符合操作。3.6 程序控制类指令程序控制类指令包括转移指令、返回指令和转子指令,用来实现程序的转移。3.7 总线与数据通路结构3.7.1 总线总线是一组能为多个部件分时共享的信息传送线3.7.2 内总线模型机内部数据

10、通路的特点是:由ALU汇集各数据,单向内总线实现数据分配,寄存器在逻辑上分立。各寄存器将其输出分别送至ALU的输入选择器,ALU输出经移位器送到内总线上,内总线是16根单项数据传送线,它们连接到各寄存器对应的D输入端。数据究竟送入哪一个或哪几个寄存器,取决于及存取器是否收到CP脉冲,控制器只向需要接收数据的寄存器发同步打入脉冲。这种通路结构的优点是简单、规整、控制集中,便于设置微命令;缺点是只有一组基本数据通路,并行程度较低。3.7.3 系统总线CPU通过总线与外部连接,如连接主存、各种外围设备。系统总线可分为地址总线、数据总线、控制总线三种。3.7.4 指令指令是程序可执行形态的基本单元,它

11、以代码形式按一定格式给出要求计算机执行的操作类型,以及相应的操作数地址等控制信息,一条指令控制实现了一步操作。3.7.5 指令中的基本信息操作码;操作数或操作数地址;存放运算结果的地址;后继指令地址3.8 MOV指令图第二章 需求分析1.导言1.1 目的该文档是为用户学习计算机指令流程软件要求,主要描述了该软件的设计需求,以及所要达到的功能。将作为以后开发以及概要设计阶段的设计输入。本文档的预期读者有: 设计人员开发人员项目管理人员测试人员指导老师客户1.2 范围 此软件用于初学计算机组成原理的学生用于模拟计算机指令流程学习用,教师也可用于教学之中。2.系统定义2.1 项目来源及背景在学习计算

12、机指令执行流程的时候,由于其内容比较空洞抽象造成了老师教授和学生学习理解的不便。在正常教学时也不方便进行展示。运用该软件不但便于课堂教学同时也方便同学们的理解与掌握计算机的指令执行流程。同时具有快捷性、方便性、检索迅速查找方便、可靠性高、寿命长、成本低等。这些优点能够极大高学习效率降低学习的成本。优化了教学方式,并有利与提高学生的积极性主动性。2.2 项目要达到的要求此软件的现实意义在于方便老师的教学与同学的理解之余同时提高同学的积极性,是同学可以主动学习,更加深入理解计算机内部的指令执行流程,深入理解计算机硬件。本项目目标如下:1.软件能够提供友好的用户界面,使操作人员的工作量最大限度的减少

13、2.软件具有良好的运行效率,能够得到提高生产率的目的3.软件应有良好的可扩充性,可以容易的加入其它系统的应用4.平台的设计具有一定的超前性,灵活性5.通过这个项目可以锻炼队伍,提高团队的开发能力和项目管理能力6.尽可能方便用户需求,不会出现错误2.3 软件整体结构 本软件的整体结构为根据用户需求,以用户选择的指令为准,模拟指令的执行流程,显示出指令执行的过程,并在屏幕的图上进行显示,可刷新操作。其关系图为:指令流程模拟软件选择执行的指令选择延迟模拟指令流程显示刷新已执行指令流程3.应用环境本项目的应用环境可以分硬件环境、软件环境来描述。3.1 系统运行硬件环境本系统的硬件环境如下:用户机:普通

14、PCCPU:P4 1.8GHz内存:256MB以上分辨率:推荐使用1366*768像素3.2 软件运行软件环境本系统的软件环境如下:操作系统:Windows xp, Windows 7开发工具包:VS2010PC上装有.NET2.0或以上版本4.功能规格 我们采用面向对象分析作为主要的系统建模方法,运用C#语言进行程序的编写。 Use Case描述的是“actor”(用户、外部系统以及系统处理)是如何与系统交互来完成工作的。Use Case模型提供了一个非常重要的方式来界定系统边界以及定义系统功能,同时,该模型将来可以派生出动态对象模型。4.1 角色(Actor)定义角色或者执行者(Actor

15、)指与系统产生交互的外部用户或者外部系统。4.2 系统住Use Case图 本软件只有一种用户,用户只需下载使用即可。系统主Use Case图如下:系统用户流程软件4.3 用户端 用户只需下载安装此软件即可使用此软件功能,可用于学习与教学。用户安装软件选择需要模拟的指令模拟指令流程显示模拟的指令 用户端的主要功能为模拟并显示用户要求的流程,将计算机执行流程的顺序显示出来,并在缩略图上显示出顺序。用户端功能描述: 功能一:显示可模拟的计算机指令流程,在见面的右边可以看到。 功能二:可显示出要模拟流程的执行过程,文字描述在右下角,缩略图描述在软件界面左边。 功能三:可将已执行的计算机指令文字描述清

16、空,有一按钮执行此功能。4.3.1显示可模拟的计算机指令流程用例描述:显示可模拟的计算机指令流程执行者 :用户前置条件:用户进入软件主页面后置条件:点击下拉菜单基本路径:1. 用户打开软件2. 点击下拉按钮可看到可模拟的流程4.3.2显示出要模拟流程的执行过程用例描述:显示出要模拟流程的执行过程执行者 :用户前置条件:用户进入软件主页面后置条件:点击打开执行功能基本路径:1用户打开软件2点击下拉按钮选择要模拟的流程3显示文字描述与缩略图描述4.3.3 清空已模拟的指令流程 用例描述:清空已模拟的指令流程执行者 :用户前置条件:用户进入软件主页面后置条件:点击打开清空功能基本路径:1用户打开软件

17、2点击下拉按钮选择要模拟的流程3显示文字描述与缩略图描述4点击清空按钮5.性能需求根据用户对的需要,确定系统在响应时间、可靠性、安全等方面有较高的性能要求。5.1 界面需求系统的界面要求如下:页面内容:主题突出,站点定义、术语和行文格式统一、规范、明确,栏目、菜单设置和布局合理,传递的信息准确、及时。内容丰富,文字准确,语句通顺;专用术语规范,行文格式统一规范。导航结构:界面具有明确的导航指示,且便于理解,方便用户使用。技术环境:界面大小适当,方便不同的使用者使用。艺术风格:界面、版面形象清新悦目、布局合理,字号大小适宜、字体选择合理,前后一致,美观大方。5.2 响应时间需求当客户使用软件的时

18、候,进行任何操作的时候,系统应该及时的进行反应,反应的时间在5秒以内。系统应能监测出各种非正常情况,如软件运行出错,与系统不兼容等,避免出现长时间等待甚至无响应。5.3 可靠性需求系统正常运行,正确提示相关内容。5.4 开放性需求软件应具有十分的灵活性,以适应将来功能扩展的需求。5.5 可扩展性需求软件设计要求能够体现扩展性要求,以适应将来功能扩展的需求。5.6 系统安全性需求软件有严格的权限管理功能,各功能模块需有相应的权限方能进入。软件需能够防止各类误操作可能造成的数据丢失,破坏。防止用户非法获取网页以及内容。6.产品提交提交的产品为:软件程序包开发文档用户手册第三章 概要设计1. 系统名

19、称CPU指令流程仿真软件(MOV指令、双操作数指令、单操作数指令)2. 编写目的本文档旨在给出CPU指令流程模拟系统的大体框架,其中主要包括有:系统目的、系统体系结构设计、模块设计、界面设计。3. 系统目的本软件旨在通过对CPU指令(MOV指令、双操作数指令、单操作数指令)流程的直观模拟,方便对计算机组成原理的学习。在学习CPU指令流程的相关知识时候,由于其内容比较空洞抽象造成了老师教授和学生学习理解的不便。在教学过程中也由于无法现场演示,使得不少同学对该部分知识存在理解模糊的问题。运用该软件不仅便于课堂教学同时也方便与同学们的理解与掌握CPU指令流程和模型机数据通路结构原理,同时具有快捷性、

20、方便性、检索迅速查找方便、可靠性高、寿命长、成本低等优点,这些优点能够极大高学习效率降低学习成本,优化了教学方式,并有利于提高学生的积极主动性。4. 系统分析本仿真程序软件能够根据用户在页面提示的选项框和输入框内相应的选择和输入,分别在图示的模型机数据通路结构示意图和富文本框内动态显示出选择指令的指令流程,一条指令对应一幅图形,在示意图形中通过相应部件变红显示该指令执行时数据的流向,从而达到模拟指令流程的目的,另外用户可以根据教学需要在“输入延迟”一栏中输入需要延迟的时间,以控制动态流程的间隔。 5. 界面设计本软件界面设计应以简洁易懂为原则。本软件包括一个界面,将各个控制界面与模拟示意图形和

21、动态显示指令的富文本框至于同一界面。界面的大小都应合适,并且在打开时,方便用户使用。5.1界面设计界面中包括标题和模型机数据通路结构模拟图,图上配上明确的文字说明,使软件易于用户操作。界面上的按钮名称简洁易懂,用户能够根据各个按钮的名称推断出它们的作用;界面设有输入框,用于用户输入,输入框应醒目,大小合适,方便用户使用。在模拟指令流程的各个步骤时,界面上相应部件连接线以红色显示,醒目大方;红色箭头指向准确,富文本框内显示指令合理,文字大小清晰醒目,方便查看。6. 模块设计6.1 指令流程演示模块设计指令流程演示主要包括以下几个模块:1)绘制模型机数据通路结构模块;2)各按钮模块;3)各类输入模

22、块;4)MOV类指令函数模块;5)双操作数指令函数模块;6)单操作数指令函数模块;7)显示各种指令下的不同工作周期模块;8)各工作周期内显示不同指令函数模块;9)时钟timer模块。第四章 详细设计与实现1.导言1.1目的本文档的编写的目的是描述此系统的详细设计,是将在概要设计中利用建模的思想得到的模块内部的逻辑结构转化成为伪代码的形式,进一步细化概要设计中模块中的数据结构和算法其主要内容有:系统功能简介以及于需求规格说明书的比对;简要说明详细设计;将各个模块内部的拓扑结构完整化;最小模块的组件利用伪代码的形式表现;1.2本文档的预期读者编码实现的人员;项目管理人员(本项目组组长);测试人员;

23、指导教师。1.3范围本文档对各个模块以及他们之间的接口进行定义,至于具体在各个单元的实现,则是在编码阶段,相关编码人员需要做的工作。模块及模块之间的接口的定义式采用伪代码的形式体现,主要目的是完成一种设计的思想,至于利用程序语言将其实现,则仍是编码人员的具体工作。2.详细设计概述 本课程设计的详细设计主要针对主界面的详细设计和扫描时序界面的详细设计。优良的界面设计是本软件设计成功与否的一个非常重要的因素。因为软件的所有操作都是基于这两个界面完成的。 本章主要描述软件编码中的主要函数,具体的代码参见附录。3.界面详细设计与实现主界面流程如下图所示。public Form1() Initializ

24、eComponent(); private void Form1_Load(object sender, EventArgs e) private void Form1_Paint(object sender, PaintEventArgs e) (1)绘制模型机数据通路结构模块;public void piant() (2)各按钮模块;public void button1_Click(object sender, EventArgs e) if (comboBox1.Text = )/ & comboBox2.Text = & comboBox3.Text = ) MessageBox.S

25、how(); else if (comboBox2.Text = ) MessageBox.Show(); else if (comboBox3.Text = ) MessageBox.Show(); else if (textBox1.Text = ) timer1.Enabled = false; MessageBox.Show(); else private void button2_Click(object sender, EventArgs e) this.Close(); private void button3_Click(object sender, EventArgs e)

26、richTextBox1.Clear(); (3)各类输入模块; private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) if (comboBox1.Text = MOV指?令?) if (comboBox2.Items.Contains(R0) else comboBox2.Items.Clear(); comboBox2.Items.Add(R0); comboBox2.Items.Add(R0); comboBox2.Items.Add(-(R0); comboBox2.Items.Add(I/(R0

27、)+); comboBox2.Items.Add(R0)+); comboBox2.Items.Add(X(R0); if (comboBox3.Items.Contains(R1) ) else comboBox3.Items.Clear(); comboBox3.Items.Add(R1); comboBox3.Items.Add(R1); comboBox3.Items.Add(-(R1); comboBox3.Items.Add(R1)+); comboBox3.Items.Add(R1)+); comboBox3.Items.Add(X(R1); if (comboBox1.Text

28、 = 双?操作数y指?令?) if (comboBox2.Items.Contains(R0) else comboBox2.Items.Clear(); comboBox2.Items.Add(R0); comboBox2.Items.Add(R0); comboBox2.Items.Add(-(R0); comboBox2.Items.Add(I/(R0)+); comboBox2.Items.Add(R0)+); comboBox2.Items.Add(X(R0); if (comboBox3.Items.Contains(R1) else comboBox3.Items.Clear()

29、; comboBox3.Items.Add(R1); comboBox3.Items.Add(R1); comboBox3.Items.Add(-(R1); comboBox3.Items.Add(I/(R1)+); comboBox3.Items.Add(R1)+); comboBox3.Items.Add(X(R1); if (comboBox1.Text = 单操作数y指?令?) if (comboBox2.Items.Contains(R0) comboBox.Items.Clear(); comboBox2.Items.Add(无T); if (comboBox3.Items.Con

30、tains(R0) else comboBox3.Items.Clear(); comboBox3.Items.Add(R0); comboBox3.Items.Add(R0); comboBox3.Items.Add(-(R0); comboBox3.Items.Add(R0)+); comboBox3.Items.Add(R0)+); comboBox3.Items.Add(X(R0); void start() switch(comboBox1.Text) case MOV指?令?: textBox2.Text = MOV + + comboBox2.Text + , + comboBo

31、x3.Text; break; case 双?操作数y指?令?: textBox2.Text = OP + + comboBox2.Text + , + comboBox3.Text; break; case 单操作数y指?令?: textBox2.Text = OP + + comboBox3.Text; break; private void comboBox3_SelectedIndexChanged(object sender, EventArgs e) start(); (4)MOV类指令函数模块;void MOV() if (MOV指?令?) piant(); if (Tstep

32、= 1)/FT FT(); if (!= R0) if (!= R1) Tstep+; else Tstep = 4; else if (R1) Tstep = 3; else Tstep = 4; else if (Tstep = 2) STMov(); if(STstep=0) Tstep+; else if (Tstep = 3) DTMov(); if(DTstep=0) Tstep+; else if (Tstep = 4) ETmov(); if(ETstep=0) Tstep = 0; (5)双操作数指令函数模块; void Doub() if (双?操作数y指?令?) piant(); if (Tstep = 1)/FT FT(); if ( != R0) if (!= R1) Tstep+; else Tstep = 4; else if (!= R1) Tstep = 3; else Tstep = 4; else if (Tstep = 2) STMov(); if (STstep = 0) Tstep+; else if (Tstep = 3) DTDoub(); if (DTstep = 0) Tstep+; else if (Tstep = 4) ETDoub(); if (ETstep = 0) Tstep = 0;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号