ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:636.07KB ,
资源ID:4857509      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4857509.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(乘法器计组课设.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

乘法器计组课设.docx

1、乘法器计组课设计算机组成原理课程设计报告班级:计算机/物联网 1504 班 : 杰铭 学号: * 完成时间: 2018.1.1 一、课程设计目的1在实验机上设计实现机器指令及对应的微指令(微程序)并验证,从而进一步掌握微程序设计控制器的基本方法并了解指令系统与硬件结构的对应关系;2通过控制器的微程序设计,综合理解计算机组成原理课程的核心知识并进一步建立整机系统的概念;3培养综合实践及独立分析、解决问题的能力。二、课程设计的任务针对COP2000实验仪,从详细了解该模型机的指令/微指令系统入手,以实现乘法和除法运算功能为应用目标,在COP2000的集成开发环境下,设计全新的指令系统并编写对应的微

2、程序;之后编写实现乘法和除法的程序进行设计的验证。三、 课程设计使用的设备(环境)1硬件COP2000实验仪PC机2软件COP2000仿真软件四、课程设计的具体容(步骤)1详细了解并掌握COP 2000模型机的微程序控制器原理,通过综合实验来实现该模型机指令系统的特点:该模型机指令系统的操作码由8位机器码组成,前6位机器码用于区分操作类型,后2位机器码是在操作中涉及通用寄存器时提供通用寄存器的寻址。进位跳转指令JC要求倒数第3、4位为00零跳转指令JZ要求倒数第3、4位为01无条件跳转指令JMP要求倒数第3、4位为11该模型机微指令系统的特点(包括其微指令格式的说明等):该模型机的微指令寄存器

3、地址为00H-0FFH,共256*30位,每条微指令的控制字段部分有30位,控制方式采用的是直接控制而非编码控制,即一位对应一个逻辑开关的状态。可惜的是,此微指令无跳转方式和下指字段,因而仅通过微指令无法在微指令寄存器中跳转,即在一条机器指令所对应的微程序中,只有顺序执行操作。原系统中每条机器指令最多四个周期(当然不是必须的,可以通过机器指令的机器码的设置使一个机器指令包含更多微指令),即此模型机中每个微程序最多四条微指令,多余的空位则浮空处理。2. 计算机中实现乘法和除法的原理(1)无符号乘法算法流程图:乘法采用移位相加的操作来完成,由于位数限制,无溢出可能因为积德长度限定在8位以,由于需要

4、储存中间结果及初始被乘数的指,乘数还需要在过程中进行移位,即两个寄存器无法完成此工作。 由上可知,完成乘法操作需要存取操作数,移位操作,测试标志位跳转,加法操作,同时为了调用加法程序,还需要子程序调用及返回操作。硬件原理框图:寄存器A与R0,R3,EM通信寄存器W与R2,EM通信通用寄存器组R0,R1,R2与EM皆可通信(2)无符号除法算法流程图:使用余数恢复法。先用减测试进行测试若够减,则进行减法操作,不够减直接进行移位操作。硬件原理框图:3对应于以上算法如何分配使用COP2000实验仪中的硬件(初步分配,设计完成后再将准确的使用情况填写在此处)ST:减测试/位测试时需使用A/W:运算时使用

5、L/D/R:ROR/ROL时使用乘法R0:乘数R1:被乘数R2:中间结果/乘积除法R0:除数R1:被除数/余数R2:商R3:除法次数4在COP2000集成开发环境下设计全新的指令/微指令系统设计结果如表所示(可按需要增删表项)(1)新的指令集(如果针对乘除法设计了两个不同指令集要分别列表)助记符机器码1机器码2指令说明ROR对A寄存器的右移操作,不改变标志位ROL 对A寄存器的左移操作,不改变标志位SUBT A,#II减测试,将A减去#II改变标志位,但不改变A值TEST A,#II位测试,用A与II相与,但不改变A值MOV R?,#II将立即数II送入R?MOV A,#II将立即数II送入A

6、?MOV A,R?将寄存器R?的值取到A中MOV R?,A将寄存器A的值放到R?中ADD A,R?A与R?相加,结果存入A中SUB A,R?A与R?相减,结果存入A中JMP MM跳转到MM标注的位置JZ MM根据零标志跳转到MM位置JC MM根据进位标志跳转到MM位置PUSH A将A压栈POP A将A弹栈LOOP MM当寄存器R3的值不为0时,跳转至MM(2)新的微指令集其中减测试与位测试均占用5个节拍5用设计完成的新指令集编写实现无符号二进制乘法、除法功能的汇编语言程序(1)乘法4位乘法的算法流程图与汇编语言程序清单:将乘数放在R0,被乘数放在R1中MOV R0,#04H ;乘数MOV R1

7、,#0AH ;被乘数MUL: MOV R2,A ;将中间结果暂存入R2保护 MOV A,R1 ;得到被乘数 TEST A,#0FH ;被乘数为0? JZ END ;为0结束 TEST A,#01H ;被乘数末位为0? ROR ;右移,不产生标志 MOV R1,A ;将被乘数保存 MOV A,R2 ;得到乘数 JZ MUL1 ;此处为TEST A,#01H的判断结果 ADD A,R0 ;末位不为0,则加上乘数MUL1: ROL ;中间结果左移 JMP MUL ;循环END ENDS(2)除法 4位除法的算法流程图与汇编语言程序清单:采用余数恢复法MOV R0,#08H ;除数MOV R1,#36

8、H ;余数/被除数MOV R2,#00H ;商MOV R3,#05H ;移位次数MOV A,R1 ;判断被除数是否为0TEST A,#0FFH JZ OVERF ;为0则跳转至除法中断。置除数、商为0SUB A,R0 JC ENDS ;不够除MOV A,R0 ;将除数移位对阶ROLROLROLROL ;在这里看似使用4次移位麻烦,但若使用循环,来回挪动操作数MOV R0,A ;将更加麻烦MOV A,R1 ;看首位够不够减,若够减,商应大于4位,除法溢出,置除数商为SUBT A,R0 ;0FFHJC DIVJMP OVERDIV:MOV A,R1SUBT A,R0 ;测试是否够减 JC DIV1

9、SUB A,R0 ;够减则用被除数减去除数MOV R1,AMOV A,#1H ;这里使用简单减法将标志位清0,取消对移位的干扰SUB A,#0HMOV A,R0 ;将除数右移RORMOV R0,AMOV A,R2ROL ;将商左移,够减时商为1ADD A,#01HMOV R2,AMOV A,R3SUB A,#01H ;减少技术次数MOV R3,AJZ ENDSJMP DIVDIV1: ;不够减的情况,直接将除数右移MOV R1,AMOV A,#1HSUB A,#0H MOV A,R0RORMOV R0,AMOV A,R2ROLMOV R2,A ;将商左移,不够减时商为0MOV A,R3SUB

10、A,#01H ;减少计数次数MOV R3,AJZ ENDSJMP DIVOVERF:MOV R1,#0MOV R2,#0JMP ENDSOVER:MOV R1,#0FFHMOV R2,#0FFHJMP ENDSNOP6上述程序的运行情况(跟踪结果)按下表填写描述以上各程序运行情况的容。按每个程序一表进行。程序运行的过程乘法指令的运行过程,截取前几个循环(10*10 的乘法)除法运行结果(54/8)一个循环7设计结果说明调试运行程序时是否出现问题,是否有重新调整指令/微指令系统设计的情况出现?请在此做具体说明。运行程序时偶尔会发想忘记添加某种类型指令,但只要添加上即可,其它都是汇编程序上的调整。

11、还有就是有些情况可以用多条机器指令,或者将这些机器指令的功能都通过一条微程序实现五、本次课程设计的总结体会(不少于200字) 主要总结学到的具体知识、方法及设计中的切身体会;包括列出在设计的各个阶段出现的问题及解决方法。设计阶段:在起初设计时,准备设计单独的乘法、除法指令,即像8086/8088微机中的 MUL,DIV指令这种,通过提前规定好的寄存器存储其中一个运算数,在获取另一个进行运算。可是在仔细研读cop2000官方说明书,以及对模拟程序的摸索后,发现此模拟机中的微程序系统与教科书存在差异。其一为:微指令没有跳转方式和下指字段,也就是说,一条机器指令对应的微程序只能顺序执行,显然,这样不

12、可能完成乘除法的运算;其二为:其对寄存器的选择是通过机器指令中操作数部分的字符翻译为编码来进行的,如操作数为R?则进行寄存器选择、为#xx则从EM中读取。也就是说在一个微程序中无法选择通用寄存器,那么一条指令的最大可用空间为A,W,一个R,ST。还有一方面,就是由于不带进位的移位操作在此系统中不影响标志位,用01和00测试进行右移,结果一样。JZ不会跳转。因此只能用测试最后一位的方法得到其右移出的位。此外,在试验过程中还发现,堆栈寄存器只有一个字,因此不能像在高级语言中一直压栈弹栈,在TEST和SUBT中均使用了堆栈保护当前的A寄存器值,因此,在要使用两个操作的块不能嵌套使用堆栈操作。(以上红色字容为由设计者完成并填写。设计者如有需要可以增加该报告的容项目。)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1