组原课设加减交替法的原码一位除doc.docx
- 文档编号:9590904
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:17
- 大小:110.19KB
组原课设加减交替法的原码一位除doc.docx
《组原课设加减交替法的原码一位除doc.docx》由会员分享,可在线阅读,更多相关《组原课设加减交替法的原码一位除doc.docx(17页珍藏版)》请在冰豆网上搜索。
组原课设加减交替法的原码一位除doc
沈阳航空航天大学
课程设计报告
课程设计名称:
计算机组成原理课程设计
课程设计题目:
加减交替法的原码一位除
说明:
结论(优秀、良好、中等、及格、不及格)作为相关教环节考核必要依据;格式不符合要求;数据不实,不予通过。
报告和电子数据必须作为实验现象重复的关键依据。
学术诚信声明
本人声明:
所呈交的报告(含电子版及数据文件)是我个人在导师指导下独立进行设计工作及取得的研究结果。
尽我所知,除了文中特别加以标注或致谢中所罗列的内容以外,报告中不包含其他人己经发表或撰写过的研究结果,也不包含其它教育机构使用过的材料。
与我一同工作的同学对本研究所做的任何贡献均己在报告中做了明确的说明并表示了谢意。
报告资料及实验数据若有不实之处,本人愿意接受本教学环节“不及格”和“重修或重做”的评分结论并承担相关一切后果。
本人签名:
日期:
年月日
第1章总体设计方案
1.1设计原理
原码一位除,即两个原码数相除,商的符号为除数和被除数的符号异或值。
采用汇编语言实现定点原码一位除法器,定点除法运算有两种不同的实现方法,一种是恢复余数法,即在运算过程中,必须先算减法,若余数为正,才知道够减,若余数为负,则知道不够减,不够减时必须恢复原来的余数,以便再继续往下运算。
另一种是不恢复余数法,又称加减交替法,此次设计即是采用加减交替法来实现四位二进制数的定点原码一位除法。
定点原码的除法要求小数除以大数才能这么算。
1.2设计思路
实验开始时将实验数据从实验箱的开关输入到R0,R1,R2三个寄存器中,R2为被除数,R1为除数,R0为商。
最后结果在OUT寄存器中显示。
加减交替法的实现是对恢复余数法的一种修正,当某一次求得的余数差值为负时,不恢复它,继续求下一位的商,但用加上除数加上[—Y]补(即相当于减去Y的绝对值)的办法来取代(-Y)的操作,其他操作依然不变。
开始第一步即加上[—Y]补,在开始判断余数正负:
(1)当余数为正时,商上“1”,求下一位商的办法是余数左移一位,再减去除数;
(2)当余数为负数时,商上“0”,求下一位商的办法是余数左移一位,再加上除数。
(3)这种方法不用恢复余数,但若最后一次上商
为“0”,而又需要得到正确的余数,则在这最后一次仍需恢复余数
例如:
X的值为0.1011,Y的值为0.1101,求
被除数操作说明
00101100000
+110011+[-Y]补
11111000000不够减,商上0
11110000000左移
+001101+Y
00100100001够减,商上1
01001000010左移
+110011+[-Y]补
00010100011够减,商上1
00101000110左移
+110011+[-Y]补
11110100110不够减,商上0
11101001100左移
+001101+Y
00011101101够减,商上1
余数商
1.3设计环境
伟福COP2000实验环境介绍
COP2000计算机组成原理实验系统由实验平台、开关电源、软件三大部分组成。
COP2000模型机包括了一个标准CPU所具备所有部件,这些部件包括:
运算器ALU、累加器A、工作寄存器W、左移门L、直通门D、右移门R、寄存器组R0-R3、程序计数器PC、地址寄存器MAR、堆栈寄存器ST、中断向量寄存器IA、输入端口IN、输出端口寄存器OUT、程序存储器EM、指令寄存器IR、微程序计数器uPC、微程序存储器uM,以及中断控制电路、跳转控制电路。
其中运算器和中断控制电路以及跳转控制电路用CPLD来实现,其它电路都是用离散的数字电路组成。
硬件图如图1.3cop2000硬件图所示:
图1.3cop2000硬件图
微程序控制部分也可以用组合逻辑控制来代替COP2000集成调试软件(即仿真测试软件)共分为6部分:
1、主菜单区实现实验仪的各项功能的菜单,包括[文件][编辑][汇编][运行][帮助]五大项,各项线面做详细介绍。
快捷图标区快速实现各项功能按键
2、源程序/机器码区在此区域有源程序窗口,反汇编窗口,EM程序代码窗口。
源程序用于输入,显示,编辑汇编源程序:
反汇编窗口显示程序编译后的机器码及反汇编的程序;EM程序代码窗口用数据方式机器码。
3、机构图/逻辑波形区结构图能结构化显示模型机的各部件,以及运行时数据走向寄存器值;逻辑波形图能显示模型机运行时所有信号的程序。
4、微程序/跟踪区微程序表格用来显示程序运行时微程序的时序,及每个时钟脉冲各控制位的状态,跟踪表用来记录显示程序及微程序执行的轨迹,指令系统可以帮助你设计新的指令系统。
5、寄存器状态区用来显示程序执行时各内部寄存器的值。
模型机的指令码为8位,根据指令类型的不同,可以有0到2个操作数。
指令码的最低两位用来选择R0-R3寄存器,在微程序控制方式中,用指令码做为微地址来寻址微程序存储器,找到执行该指令的微程序。
而在组合逻辑控制方式中,按时序用指令码产生相应的控制位。
在本模型机中,一条指令最多分四个状态周期,一个状态周期为一个时钟脉冲,每个状态周期产生不同的控制逻辑,实现模型机的各种功能。
可以在.ASM中输入要编写的程序,写完之后保存成.ASM文件,就可以正常执行了。
汇编之后点反汇编能找到反汇编之后的代码便于查找错误以及检查地址是否正确。
用到的核心指令介绍:
ADDA,R?
------------将寄存器R?
的值加入累加器A中
ADDA,#II----------立即数#II加入累加器A中
SUBA,#II-----------从累加器中减去立即数后加入累加器A中
ANDA,#II-----------累加器A“与”立即数II
(2)数据传送指令
MOVA,R?
------------将寄存器R?
的值送到累加器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?
的值
第2章详细设计方案
2.1算法与程序的设计与实现
本次课程设计采用伟福COP2000实验仪软件,利用伟福COP2000的指令集编程实现。
定点原码一位除,算法为加减交替法,当余数为负时,需加上除数,将其恢复城原来的余数。
商值的确定是通过比较被除数和除数的绝对值的大小,即x”-y”实现的,而计算机内只设加法器,所以需要将x”-y”操作变为|x|补+|y|补得操作。
开始第一步即加上[—Y]补,在开始判断余数正负,当余数为正时,商上“1”,求下一位商的办法是余数左移一位,再减去除数;当余数为负数时,商上“0”,求下一位商的办法是余数左移一位,再加上除数。
这种方法不用恢复余数,但若最后一次上商
为“0”,而又需要得到正确的余数,则在这最后一次仍需恢复余数。
上边所说的是我们在课堂上学习的定点原码一位除加减交替法,课程设计的要求是用Cop2000编程实现定点原码除法,就是将上述的过程转化成程序通过汇编来实现。
编写程序区域如图2.1所示:
图2.1程序区
2.2流程图的设计与实现
图2.2总流程图
R0、R1、R2均是8位的寄存器。
R0是商,R1是除数,R2为被除数。
商的结果在OUT中输出。
商的符号由寄存器r3表示,R3是00则表示商的结果是正数,若为01则为负数,流程图如图2.2所示。
除法开始前,R0寄存器被清0,准备接收商,被除数的原码放在R2寄存器中,除数的原码放在R1寄存器中,计数器R3中存放需要移位的次数。
除法开始后,用被除数减去除数即是加上[—Y]补,若运算结果大于0,商上1。
若结果小于0,商上0。
然后被除数左移一位,计数器减1。
当计数器R3内容为0时,结束运算。
跳出循环。
最后在判断一次余数正负只上商不移位。
对应的硬件图:
图2.2硬件图
第3章程序调试与结果测试
3.1程序调试
编写程序的时候遇到了不少的问题,因为每一条指令所占据的地址是不同的,有的指令占绝两个地址,有的占据一个地址,在编写指令的时候会并不知道要指令要跳转的地址,所以要一条条写,写完后反汇编,看地址是否正确。
将程序写完输入到cop2000当中,保存。
运行提示无法读取,后来经过上网查找资料发现保存的格式不正确文件的后缀名需要改成需要改成.ASM。
在刚开始也发现了程序中不少的小错误,进行单步调试的时候一一的都检查出来了。
有一次运行会提示第几行错误,发现是jz跳转的地址不对,查看反汇编,逐一进行地址的核对,最终找到了错误,改正后,程序可以正常运行。
图3.1反汇编程序
3.2程序测试及结果分析
程序能正常运行了,下面要进行的是对程序进行测试,看程序的算法是否会出现问题以及算出来的数是否会错误。
测试的时候我用了两组数进行测试需要注意的是定点原码一位除的时候要求是要用小数除以大数即R2中的被除数要小于R1中的除数。
测试一:
被除数R2=0BH除数R1=0DH
图3.2测试结果一
商的结果为0D,正数;余数07;结果正确
测试二:
被除数R2=19H除数R1=0bH
图3.3测试结果二
商的结果为0D,负数(因为R3是01为负);余数01;结果正确
经过测试该程序正确。
测试三:
被除数R2=09H除数R1=0bH
图3.4测试结果三
商的结果为0D,正数(因为R3是00为负);余数01;结果正确
经过测试该程序正确。
测试四:
被除数R2=0BH除数R1=1DH
图3.5测试结果四
商的结果为0D,负数(因为R3是01为负);余数07;结果正确
经过测试该程序正确。
参考文献
[1]周大海.计算机组成原理实验与课程设计[M].北京航空航天大学出版社,2015
[2]王爱英.计算机组成与结构(第四版)[M].北京:
清华大学出版社2006
[3]唐朔飞.计算机组成原理(第二版)[M].北京:
高等教育出版社,2008
[4]曹昕燕.EDA技术实验与课程设计[M].北京:
清华大学出版社,2006
[5]江国强.EAD技术习题与实验[M].北京:
电子工业出版社,2005
[6]李景华.可编程程逻辑器件与EDA技术[M].北京:
东北大学出版社,2001
[7]范延滨.微型计算机系统原理、接口与EDA设计技术[M].北京:
北京邮电大学出版社,2006
附录
序号
代码
机器码
注释
00
MovR2#?
H
8E19
初始化被除数放r2
02
MovR1#?
H
8D0B
初始化除数放r1
04
MovA,R2
72
R2放A中
05
MOV9FH,A
889F
将A中的被除数
存到9F
07
MOVA,R1
71
R1放A中
08
MOV9EH,A
889E
将A中的除数
存到9E
0A
MOVR0,#00H
8C00
将商R0全部置0
0C
MOVA,R1
71
R1放A中
0D
ANDA,#0FH
5C0F
求出除数Y*的补码
0F
MOV9CH,A
889C
将补码存到9CH中
11
MOVR1,A
81
A放R1
12
MOVA,R1
71
R1放A中
13
CPLA
E4
取反
14
ADDA,#01H
1C01
加一
16
ANDA,#1FH
5C1F
18
MOVR1,A
81
将[-Y*]存到R1
19
MOVA,R2
72
取出被除数
1A
ANDA,#0FH
5C0F
求绝对值
1C
MOVR2,A
82
取A存入R2
1D
MOVA,R2
72
A取R2
1E
ADDA,R1
11
被除数加上[-Y*]
1F
MOVR2,A
82
加上的结果R2
20
MOVR3,#05H
8F05
R3的初值为05H
22
MOVA,R3
73
23
SUBA,#01H
3C01
次数减一
25
MOVR3,A
83
存回R3
26
ANDA,#0FH
5C0F
判断次数是否为0
28
JZ48H
A448
为0跳到48H那条地址的指令
2A
MOVA,R2
72
取R2
2B
ANDA,#10H
5C10
判断R2即余数
的正负
2D
JZ3BH
A438
跳到3Bh
2F
MOVA,R0
70
若余数为负数
30
ANDA,#07H
5C07
上商0
32
RLA
D4
商左移一位
33
MOVR0,A
80
存入R0
34
MOVA,R2
72
取余数
35
RLA
D4
余数左移一位
36
ADDA,9CH
189C
加上Y*
38
MOVR2,A
82
将新的余数存到R2
39
JMP22H
AC22
跳到22H
3B
MOVA,R0
70
若余数为正数
3C
ORA,#01H
6C01
上商1
3E
RLA
D4
商左移一位
3F
MOVR0,A
80
存回
40
MOVA,R2
72
取余数
41
RLA
D4
余数左移一位
42
MOVR2,A
82
存回R2
43
MOVA,R2
72
取出
44
ADDA,R1
11
加上[-Y*]
45
MOVR2,A
82
存回
46
JMP22H
Ac22
跳到22H
48
MOVA,R2
72
取R2
49
ANDA,#10H
5C10
判断余数R2符号位
4B
JZ50H
A450
跳到50h
4D
MOVR0,A
80
如果为负数上商0
4E
JMP54H
AC54
跳到指令54H行
50
MOVA,R0
70
取R0
51
ORA,#01H
5C01
如果为正数上商1
53
MOVR0,A
80
存回
54
MOVA,9FH
789F
取被除数的符号位
存到r1
56
RrA
D0
右移
57
RrA
D0
右移
58
RrA
D0
右移
59
RrA
D0
右移
5A
MOVR1,A
81
存入
5B
MOVA,9EH
789E
取除数符号位存到r3
5D
RrA
D0
右移
5E
RrA
D0
右移
5F
RrA
D0
右移
60
RrA
D0
右移
61
MOVR3,A
83
存回
62
ADDA,R1
11
两符号位异或得
到商的符号位
63
ANDA,#01H
5C01
65
MOVR3,A
83
存到R3
66
MOVA,R0
70
将R0用OUT输出
67
out
C4
68
movA,R2
72
取R2
69
ANDA,#0fH
5C0F
判断余数符号
6B
movR2,A
82
存回
end
结束
课程设计总结:
本次计算机组成原理课程设计让我获益匪浅,刚开始拿到课程设计题目,不知道如何去实现该设计,感觉题目并不是特别难,但又有一种无从下手的感觉,不知该从哪做起,先干什么,在干什么。
通过老师讲解,我对这次课程设计要求有了更深的了解,知道了具体应该怎样操作,知道了如何将上课学习的原码一位除用加减交替法实现的算法用Cop2000实验箱编码来实现。
完成这个课程设计,必须要有自己的设计思路以及设计的流程。
如果设计流程颠倒,或者说根本没有自己的设计思路,那么,虽然花了大量的时间,也设计不出想要的结果,甚至有可能根本设计不出来。
我一拿到题目,就有了明确的思路,然后一步一步按照我的思路走下去,直到这个课程设计完成。
这些明确的设计思路归功于我平时在课堂上认真听讲,以及认真地对待每一次实验。
本次实验让我们更加了解数据通路以及cpu内部的运算,并不在是做实验时候的粗略了解,而是熟练的操作Cop2000实验箱.同时也复习巩固上课学习的内容。
自己动手实践永远是学习的最好方法,本次课设让我学到了好多好多,同时也得感谢老师的帮助,不厌其烦的为我们解决一个个想起来都很幼稚的问题,很感谢你的付出。
希望以后多一些有趣的,能亲自动手的课程设计让我们能学到更多东西。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 组原课设 加减 交替 一位 doc