欢迎来到天天文库
浏览记录
ID:6480123
大小:170.50 KB
页数:16页
时间:2018-01-15
《组成原理课程设计定点原码一位乘》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、沈阳航空航天大学课程设计报告课程设计名称:计算机组成原理课程设计课程设计题目:定点原码一位乘法器的设计院(系):计算机学院专业:计算机科学与技术班级:84010103学号:2008040101061姓名:李雪城指导教师:周大海完成日期:2011年01月14日沈阳航空航天大学课程设计报告目录第1章总体设计方案11.1设计原理11.2设计思路11.3设计环境1第2章详细设计方案32.1总体方案的设计与实现32.1.1总体方案的逻辑图42.1.2算法流程图52.2功能模块的设计与实现62.2.1数据输入模块的设计与实现62.2.2乘数末位判断模块的设计与实现62.2.3移位模块的设计与
2、实现72.2.4乘积结果显示的设计与实现8第3章程序调试与结果测试93.1程序调试93.2结果测试9参考文献11附录12-14-沈阳航空航天大学课程设计报告第1章总体设计方案1.1设计原理原码一位乘,即两个原码数相乘,其乘积的符号为相乘两数符号的异或值,数值则为两数绝对值之积。在计算时,用乘数寄存器的最低位来控制部分积是否与被乘数相加,然后右移部分积和乘数,同时乘数寄存器接收部分积右移出来的一位,完成运算后,部分积寄存器保存乘积的高位部分,乘数寄存器中保存乘积的低位部分。1.2设计思路被乘数与乘数都是4位,所以相乘的结果是8位。每个寄存器的范围是8位,所以乘积的结果用一个寄存器来
3、存储表示。实验开始时将实验数据从实验箱的开关输入到R0、R1、R2三个寄存器中,部分积存放在R0,4位被乘数放在R1,4位乘数放在R2。运算过程采用原码一位乘。在计算时,首先判断乘数末位上的值是1还是0,决定部分积是否与被乘数相加,然后判断部分积的末位,因为右移时部分积的末位会溢出,乘数右移时要接收由部分积溢出来的数,所以根据判断来决定乘数右移后的高位是1还是0。运算结束时8位乘积结果的高4位从R0调出,低4位从R1调出,两个数据组成最终结果,并在OUT寄存器中显示。1.3设计环境本实验采用COP2000实验箱和COP2000仿真软件。在COP2000试验仪上实现编程,所应用的编
4、程语言为汇编语言。在伟福试验仪中有相关的模型机指令集分为几大类:算术运算指令、逻辑运算指令、移位指令、数据传输指令、跳转指令、中断返回指令、输入输出指令。本程序所用到的相应的指令集(1)算术逻辑运算指令ADDA,R?------------将寄存器R?的值加入累加器A中-14-沈阳航空航天大学课程设计报告ADDA,#II----------立即数#II加入累加器A中SUBA,#II-----------从累加器中减去立即数后加入累加器A中ANDA,#II-----------累加器A“与”立即数II(2)数据传送指令MOVA,R?------------将寄存器R?的值送到累加器
5、A中MOVR?,#II------------将立即数II存放到寄存器R?中MOVR?,A------------将累加器A中的值送到寄存器A中(3)移位指令RRA----------------累加器A右移RLA----------------累加器A左移(4)跳转指令JZMM---------------若零标志位置1,跳转到MM地址JMPMM---------------跳转到MM(5)位运算ANDA,R?------------累加器A“与”寄存器R?的值(6)输入输出OUT--------------------将累加器A中数据输出到输出端口此为COP2000计算机组成
6、原理实验软件截图:图1.1COP2000计算机组成原理集成调试软件-14-沈阳航空航天大学课程设计报告第2章详细设计方案2.1总体方案的设计与实现(a)初始化以及输入乘数与被乘数首先是将部分积初始化送到寄存器R0中,乘数放入R1,被乘数放入R2。直接进行到地址LOOP部分。(b)运算过程首先从乘数最低位开始判断,将R1放于寄存器A中并和立即数#01H相与,此时可以判断乘数最低位是0或1。基于语句JZNEXT,当前面的判断结果是0,跳转到地址NEXT;否则顺序执行程序。跳转到NEXT,即当程序乘数最低位为0时,将R0不变;顺序执行程序,即当乘数最低位为1时,将R0与R2相加,所得到
7、的结果送到寄存器R0中。然后进行移位操作。在移位前需要考虑R0的最低位是0或1,因为部分积移到的数值也是结果的部分,就是保存在结果低位的部分,也就是寄存器R1中,所以要保留移掉部分,此时判断R0最低位。利用语句JZNEXT1,当前面的判断结果是0,标志位为1,跳转到地址NEXT1;否则顺序执行程序。当部分积最低位是1时,右移R0,右移R1加1000,进行保存;当部分积最低位是0时,右移R0、R1,进行保存。每次循环结束都要进入结果输出部分JZNEXT2。(c)显示乘积的结果最后循
此文档下载收益归作者所有