COP实现补码数的排序

COP2000实现补码数的排序本文简介:沈阳航空航天大学课课程程设设计计报报告告课程设计名称计算机组成原理课程设计计算机组成原理课程设计课程设计题目COP2000实现补码数的排序实现补码数的排序院系专业班级学号姓名指导教师完成日期2016年1月15日沈阳航空航天大学课程设计报告目目录录第第1章章总体设计方案总体设计方案111设计原理112
COP2000实现补码数的排序本文内容:
沈阳航空航天大学
课课
程程
设设
计计
报报
告告
课程设计名称
计算机组成原理课程设计计算机组成原理课程设计
课程设计题目
COP2000
实现补码数的排序实现补码数的排序
院
系
专
业
班
级
学
号
姓
名
指导教师
完成日期
2016
年
1
月
15
日
沈阳航空航天大学课程设计报告
目目
录录
第第
1
章章
总体设计方案总体设计方案
1
1
1设计原理
1
1
2设计思路
1
1
3设计环境
1
第第
2
章章
详细设计方案详细设计方案
3
2
1
算法与程序的设计与实现
3
2
2
流程图的设计与实现
3
第第
3
章章
程序调试与结果测试程序调试与结果测试
5
3
1
程序调试
5
3
2
程序测试及结果分析
5
参考文献参考文献
6
沈阳航空航天大学课程设计报告
第
1
章
总体设计方案
0
第
1
章
总体设计方案
1
1设计原理设计原理
本次课程设计利用的是
COP2000
指令集编程实现的
是对于给定内存单元
00H
0FH
中的
16
个
8bit
补码数
完成从小到大的排序功能
首先利用冒泡排序
法将内存中的
16
个数进行排序
冒泡的原理是先将
16
个数逐一比较
选出最大
的沉底
然后再在剩下的数中依次重复上一步骤
最后利用统计
16
个数中正数
的个数设计循环将负数重新排序
1
2设计思设计思路路
对于补码数
其数有正有负
对于此可以分成两部分
首先是根据数的个数
确定循环次数
对于数一部分是将有符号的数视为无符号的数
对其进行冒泡排
序
另一部分是统计
16
个数中的正数个数设计循环将负数重新排序
1
3设计环境设计环境
利用伟福
COP2000
型计算机组成原理试验仪软件和计算机
在
COP2000
试
验仪软件上编程实现补码的排序
伟福
COP2000
试验仪软件的指令集分为如下大类
算术运算指令
逻辑运
算指令
移位指令
数据传输指令
跳转指令
中断返回指令
输入输出指令
该程序用到的指令集如下
1
算术逻辑运算指令
ADD
A
II
累加器
A
加立即数
II
ADD
A
R
将寄存器中的数打入到累加器
A
中
AND
A
II
累加器
A
与立即数
II
SUB
A
II
从累加器中减去立即数后加入累加器
A
中
沈阳航空航天大学课程设计报告
第
1
章
总体设计方案
1
2
数据传输指令
MOV
R
II
将立即数
II
传送到寄存器
R
中
MOV
MM
A
将累加器
A
中的值传送到存储器
MM
地址中
MOV
A
II
将立即数
II
送到累加器
A
中
MOV
R
A
将累加器
A
中的值送到寄存器
A
中
MOV
A
R
将寄存器
R
的值送到累加器
A
中
MOV
A
MM
将寄存器
MM
地址中的值送到累加器
A
中
MOV
R
A
将累加器
A
的值送到间址存储器中
3
跳转指令
JZ
MM
若零标志位置
1
跳转到
MM
地址
JC
MM
若进位标志置
1
跳转到
MM
地址
JMP
MM
跳转到
MM
COP2000
计算机组成原理试验软件截图如图
1
所示
沈阳航空航天大学课程设计报告
第
1
章
总体设计方案
2
图
1
COP2000
计算机组成原理软件
沈阳航空航天大学课程设计报告
附录
3
第
2
章
详细设计方案
2
1
算法与程序的设计与实现算法与程序的设计与实现
本课设采用伟福
COP2000
实验仪软件和计算机实现补码数排序功能
利用
伟福
COP2000
的指令集编程实现
算法描述
首先将
16
个补码数存入到内存中
数据存入内存地址
00H
01H
02H
03H
04H
05H
06H
07H
08H
09H
0AH
0BH
0CH
0DH
0EH
0FH
中
对十六个数进行冒泡排序法排序
冒泡排序法的运算如下
首先比较相邻的元素
如果第一个比第二个打
就交换它俩
然后对每一对
相邻元素进行同样的工作
从开始第一对到结尾最后一对
所以最后一个元素是
最大的数
针对所有的元素重复以上的步骤
除了最后一个
同理下一轮也是通
过相同的方法重复上面操作
到最后每次对越来越少的元素进行比较
直到没有
任何一对数字需要比较
2
2
流程图的设计与实现流程图的设计与实现
1
将十六个补码数存储到内存中如图
2
2
1
所示
图
2
2
1
存数流程图
开始
结束
将
16
个补码数存入到内存
00H
0FH
中
沈阳航空航天大学课程设计报告
附录
4
2
设置冒泡排序循环次数如图
2
2
2
所示
图
2
2
2
设置循环次数流程图
3
将十六个数进行冒泡排序如图
2
2
3
所示
N
Y
Y
N
图
2
2
3
冒泡排序流程图
R0
R1
R2
0
开始
结束
结束
开始
R2
减
1
R0
和
R1
所指的地址加
1
R0
和
R1
内的数据交换
比较
R0
和
R1
的大小
将数据从
00H
01H
中取出并存到寄存器
R0
和
R1
中
冒泡的次数为
15
次
沈阳航空航天大学课程设计报告
附录
5
第
3
章
程序调试与结果测试
3
1
程序调试程序调试
程序中指令出现错误
代码不能正常运行
对其进行反复检查修改以及调试
使其正常工作
3
2
程序测试及结果分析程序测试及结果分析
结果展示
需排序的补码数
22
16
0A
08
12
22
3A
45
5C
6F
80
91
A2
BC
BD
03
排序后的补码数
03
08
0A
12
16
22
22
3A
45
5C
6F
80
91
A2
BC
BD
图
3
2
1
运行结果图
沈阳航空航天大学课程设计报告
附录
6
参考文献
1
王爱英
计算机组成与结构
第四版
M
北京
清华大学出版社
2006
2
白中英
计算机组成原理
第四版
M
北京
科学出版社
2008
沈阳航空航天大学课程设计报告
附录
7
附附
录
源代码
录
源代码
MOV
A
22H
MOV
00H
A
MOV
A
16H
MOV
01H
A
MOV
A
0AH
MOV
02H
A
MOV
A
08H
MOV
03H
A
MOV
A
12H
MOV
04H
A
MOV
A
22H
MOV
05H
A
MOV
A
3AH
MOV
06H
A
MOV
A
45H
MOV
07H
A
MOV
A
5CH
MOV
08H
A
MOV
A
6FH
MOV
09H
A
MOV
A
80H
MOV
0AH
A
MOV
A
91H
MOV
0BH
A
MOV
A
0A2H
MOV
0CH
A
MOV
A
0BCH
MOV
0DH
A
MOV
A
0BDH
MOV
0EH
A
MOV
A
03H
MOV
0FH
A
输入数据
MOV
A
0FH
MOV
0F0H
A
循环次数
MOV
R0
0EFH
结果存入末地址R0
LOOP1
MOV
R1
00H
判断首地址
MOV
A
0F0H
MOV
0F1H
A
内层循环次数
LOOP2
沈阳航空航天大学课程设计报告
附录
8
MOV
A
R1
MOV
R2
A
取出值存入R2
MOV
A
R1
ADD
A
01
内存地址
1
MOV
R1
A
MOV
A
R2
SUB
A
R1
比较大小
JC
S0
S1
交换
MOV
A
R1
MOV
0F2H
A
保存后一个内存地址的值
MOV
A
R1
SUB
A
01H
MOV
R2
A
保存前一个内存地址
MOV
A
R2
MOV
0F3H
A
保存前一个内存地址的值
MOV
A
0F2H
MOV
R2
A
后一个内存地址的值存入前一个
MOV
A
0F3H
MOV
R1
A
前一个存入后一个
S0
MOV
A
0F1H
SUB
A
01H
内层循环
1
MOV
0F1H
A
SUB
A
00H
JZ
S2
内层循环结束
JMP
LOOP2
S2
MOV
A
R1
MOV
R0
A
OUT
排序最后一位存入
MOV
A
R0
SUB
A
01
MOV
R0
A
存数最后一位地址
1
MOV
A
0F0H
SUB
A
01H
外层循环
1
MOV
0F0H
A
SUB
A
00H
JZ
LAST
循环结束
JMP
LOOP1
LAST
MOV
A
00H
MOV
0E0H
A
沈阳航空航天大学课程设计报告
附录
9
OVER
JMP
OVER
沈阳航空航天大学课程设计报告
10
课程设计总结
课程设计总结
通过这次课程设计
我学会了
COP2000
的使用及操作
以及对汇编语言有
了一定的了解
学习到如何通过代码实现实验目的
这次课程设计让我深刻的
知道了自己的编程能力
还是有一定的不足之处
尤其是缩减代码的过程中
自己写的代码过于繁琐而且很难读懂
虽然这次课程设计遇到了很多问题
但
是在和老师同学的交流下最终得到解决
特此感谢老师的指导
这次课程设计
收获颇丰
很满意能够完成这次课程设计
指导教师评语
指导教师
签字*年*月*日
课程设计成绩
