课 程 设 计 报 告
课程设计名称:计算机组成原理课程设计
课程设计题目:COP2000 实现补码两位乘
院(系):计算机学院
专
班
学
姓
业:计算机科学与技术
级:
号:
名:
指导教师:
完成日期:
-I-
目
录
第 1 章 总体设计方案...................................................................................................1
1.1 设计原理.................................................................................................................1
1.2 设计思路.................................................................................................................1
1.3 设计环境.................................................................................................................1
第 2 章 详细设计方案...................................................................................................4
2.1 算法与程序的设计与实现...................................................................................4
2.2 流程图的设计与实现...........................................................................................5
第 3 章 程序调试与结果测试.......................................................................................9
3.1 程序调试...............................................................................................................9
列举出调试过程中存在的问题................................................................................... 9
3.2 程序测试及结果分析...........................................................................................9
参考文献.........................................................................................................................10
附 录(源代码).......................................................................................................11
-II-
第 1 章 总体设计方案
第 1 章 总体设计方案
1.1 设计原理
在计算机中,二进制的基本算术运算多是采用补码进行的。本次课设的补码两位乘是根
据补码一位乘推导出来,补码两位乘可以使用和补码一位乘类似的硬件,而计算速度接近补
码一位乘的两倍。本次课设需要构造补码两位乘规则表,计算中可以根据查表依次运算下去。
Yn+1YnYn-1
表 1 补码两位乘规则表
Yn+1+Yn-2Yn-1
000
001
010
011
100
101
110
111
0
-2
1
-1
1
-1
2
0
操作
部分积+0,右移 2 位
部分积加 2[-X]补,右移两位
部分积+[X]补,右移两位
部分积+[-X]补,右移两位
部分积+[X]补,右移两位
部分积+[-X]补,右移两位
部分积+2[X]补,右移两位
部分积+0,右移两位
1.2 设计思路
(1) 被乘数 X,乘数 Y 均以补码形式参加运算,乘法的每一步对乘数的两位进行,
即右移两位。
(2) 乘数[Y]在计算时采用两位符号位,初始附加位添一个 0。
(3) 被乘数[X]在计算时采用三位符号位。
(4) 部分积初始为 0,计算过程中采用三位符号位。
(5) 每一步计算,按照乘数的最低三位的值查找操作规则表 1,根据上一步的部分积
和规则表的操作,计算本步的部分积。
(6) 每步操作后,将部分积和乘数右移两位,乘数右移后,原来的最低两位被移除出
舍弃,其余各位位权依次下降。重复(4),但最后一步操作不右移。
1.3 设计环境
利用伟福 COP2000 型计算机组成原理实验仪软件和计算机,在 COP2000 实
验仪软件上编程实现补码两位乘。伟福 COP2000 实验仪软件的指令集分为如下大
类:算术运算指令、逻辑运算指令、移位指令、数据传输指令、跳转指令、中断
-1-
返回指令、输入输出指令。
第 1 章 总体设计方案
本程序所用到的相应的指令集如下:
(1)算术逻辑运算指令
ADD A, R?
ADD A,#II
SUB A,#II
A,R?
AND
OR
A,R?
将寄存器 R?的值加入到累加器 A 中
立即数#II 加入到累加器 A 中
从累加器中减去立即数后加入到累加器 A 中
累加器 A 与寄存器 R?的值
累加器 A 或寄存器 R?的值
(2)数据传送指令
MOV
MOV
MOV
MOV
MOV
RR
RL
A,R?
A,MM
MM,A
R?,A
R?#II
A
A
(3)跳转指令
MM
JC
MM
JZ
JMP MM
将寄存器 R?的值送到累加器 A 中
将存储器 MM 地址中的值送到累加器 A 中
将累加器 A 中的值送到存储器 MM 地址中
将累加器 A 中的值送到寄存器 A 中
将立即数 II 送到寄存器 R?中
累加器右移指令
累加器左移指令
若进位标志置 1,跳转到 MM 地址
若零标志位置 1,跳转到 MM 地址
跳转到 MM
如 下 为 COP2000 计 算 机 组 成 原 理 实 验 软 件 截 图 :
-2-
第 1 章 总体设计方案
图 2 COP2000 运行环境
-3-
沈阳航空航天大学课程设计报告
第 2 章 详细设计方案
第 2 章 详细设计方案
2.1 算法与程序的设计与实现
本课设采用伟福 COP2000 实验仪软件和计算机实现补码两位乘功能,利用
伟福 COP2000 的指令集编程实现。
算法具体描述:
(1) 计算复杂性包括:+[X]补,+2[X]补,+[-X]补,+2[-X]补;
(2) 进行初始化,并且设置计数单元与建立特殊表。因为每次计算需要进
行三次移位,所以用 MOV A,#03H 与 MOV 9AH,A 来将循环次数存入
内存单元。然后再进行初始化操作,将存储部分积的 R1 置零,再将
用来存储特殊表的 90H,97H 内存单元置零。接下来再通过输入的被
乘数判断其正负,如果被乘数是负,在前面两位加上 1,如果是整数
则无需操作,直接构造特殊表。
(3) 输入乘数后,将乘数移至最前端,执行 LOOP2,首先设置移位次数,
取出成熟后,判断乘数的后两位及附加位的值,根据所查的值访问特
殊表,进而确定加数,之后将部分积与加数相加得到新的部分积,得
到结果后,判断总循环是否结束,之后进行判断移位的操作,部分积
的最高位如果是 1,移位后仍然置 1。部分积最低位如果是 1,乘数右
移之后最高位置 1.
(4) 根据乘数后两位及附加位来确定 R3,并通过 R3 间接访问特殊表。将
访问的数据作为加数与部分积相加,然后判断两次循环是否结束,如
果两次运算循环结束,则结束运算,否则将部分积与乘数同时右移两
位再根据有效位来通过 R3 访问特殊表。相加移位运算结束后再将部
分积与乘数同时右移一位,将数据位置有效,输出数据。
-4-
沈阳航空航天大学课程设计报告
第 2 章 详细设计方案
2.2 流程图的设计与实现
本部分包含实现中主要部分的流程图
1. 构造规则表:
开始
输入被乘数 X
存入 R0
90H 存入 0,91H 存入[X]补
92H 存入[X]补,93H 存入 2[X]补
94H 存入 2[-X]补,95H 存入[-X]补
96H 存入[-X]补,97H 存入 0
结束
图 2.2.1 构造规则表流程图
-5-
沈阳航空航天大学课程设计报告
第 2 章 详细设计方案
2.乘数处理操作:
开始
输入乘数 Y
左移 两位 并
存入 R2
结束
图 2.2.2 乘数处理操作流程图
-6-