COP实现补码数的排序.docx
- 文档编号:8613048
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:10
- 大小:113.51KB
COP实现补码数的排序.docx
《COP实现补码数的排序.docx》由会员分享,可在线阅读,更多相关《COP实现补码数的排序.docx(10页珍藏版)》请在冰豆网上搜索。
COP实现补码数的排序
航空航天大学
课程设计报告
课程设计名称:
计算机组成原理课程设计
课程设计题目:
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章总体设计方案
1.1设计原理
本次课程设计利用的是COP2000指令集编程实现的,是对于给定存单元00H-0FH中的16个8bit补码数,完成从小到大的排序功能;首先利用冒泡排序法将存中的16个数进行排序,冒泡的原理是先将16个数逐一比较,选出最大的沉底,然后再在剩下的数中依次重复上一步骤,最后利用统计16个数中正数的个数设计循环将负数重新排序。
1.2设计思路
对于补码数,其数有正有负,对于此可以分成两部分,首先是根据数的个数确定循环次数,对于数一部分是将有符号的数视为无符号的数,对其进行冒泡排序,另一部分是统计16个数中的正数个数设计循环将负数重新排序。
1.3设计环境
利用伟福COP2000型计算机组成原理试验仪软件和计算机,在COP2000试验仪软件上编程实现补码的排序
伟福COP2000试验仪软件的指令集分为如下大类:
算术运算指令、逻辑运算指令、移位指令、数据传输指令、跳转指令、中断返回指令、输入输出指令。
该程序用到的指令集如下:
(1)算术逻辑运算指令
ADDA,#II——————累加器A加立即数II
ADDA,R?
——————将寄存器中的数打入到累加器A中
ANDA,#II——————累加器A与立即数II
SUBA,#II——————从累加器中减去立即数后加入累加器A中
(2)数据传输指令
MOVR?
#II——————将立即数II传送到寄存器R?
中
MOVMM,A——————将累加器A中的值传送到存储器MM地址中
MOVA,#II———————将立即数II送到累加器A中
MOVR?
A———————将累加器A中的值送到寄存器A中
MOVA,R?
———————将寄存器R?
的值送到累加器A中
MOVA,MM——————将寄存器MM地址中的值送到累加器A中
MOVR?
A——————将累加器A的值送到间址存储器中
(3)跳转指令
JZMM——————若零标志位置1,跳转到MM地址
JCMM——————若进位标志置1,跳转到MM地址
JMPMM——————跳转到MM
COP2000计算机组成原理试验软件截图如图1所示:
图1COP2000计算机组成原理软件
第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存数流程图
2.设置冒泡排序循环次数如图2.2.2所示:
图2.2.2设置循环次数流程图
3.将十六个数进行冒泡排序如图2.2.3所示:
N
Y
Y
N
图2.2.3冒泡排序流程图
第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运行结果图
参考文献
[1]王爱英:
计算机组成与结构(第四版)[M].:
清华大学,2006
[2]白中英:
计算机组成原理(第四版)[M].:
科学,2008
附录(源代码)
MOVA,#22H
MOV00H,A
MOVA,#16H
MOV01H,A
MOVA,#0AH
MOV02H,A
MOVA,#08H
MOV03H,A
MOVA,#12H
MOV04H,A
MOVA,#22H
MOV05H,A
MOVA,#3AH
MOV06H,A
MOVA,#45H
MOV07H,A
MOVA,#5CH
MOV08H,A
MOVA,#6FH
MOV09H,A
MOVA,#80H
MOV0AH,A
MOVA,#91H
MOV0BH,A
MOVA,#0A2H
MOV0CH,A
MOVA,#0BCH
MOV0DH,A
MOVA,#0BDH
MOV0EH,A
MOVA,#03H
MOV0FH,A输入数据
MOVA,#0FH
MOV0F0H,A循环次数
MOVR0,#0EFH结果存入末地址R0
LOOP1:
MOVR1,#00H判断首地址
MOVA,0F0H
MOV0F1H,A层循环次数
LOOP2:
MOVA,R1
MOVR2,A取出值存入R2
MOVA,R1
ADDA,#01存地址+1
MOVR1,A
MOVA,R2
SUBA,R1比较大小
JCS0
S1:
交换
MOVA,R1
MOV0F2H,A保存后一个存地址的值
MOVA,R1
SUBA,#01H
MOVR2,A保存前一个存地址
MOVA,R2
MOV0F3H,A保存前一个存地址的值
MOVA,0F2H
MOVR2,A后一个存地址的值存入前一个
MOVA,0F3H
MOVR1,A前一个存入后一个
S0:
MOVA,0F1H
SUBA,#01H层循环-1
MOV0F1H,A
SUBA,#00H
JZS2层循环结束
JMPLOOP2
S2:
MOVA,R1
MOVR0,A
OUT排序最后一位存入
MOVA,R0
SUBA,#01
MOVR0,A存数最后一位地址-1
MOVA,0F0H
SUBA,#01H外层循环-1
MOV0F0H,A
SUBA,#00H
JZLAST循环结束
JMPLOOP1
LAST:
MOVA,00H
MOV0E0H,A
OVER:
JMPOVER
课程设计总结:
通过这次课程设计,我学会了COP2000的使用及操作,以及对汇编语言有了一定的了解,学习到如何通过代码实现实验目的;这次课程设计让我深刻的知道了自己的编程能力,还是有一定的不足之处,尤其是缩减代码的过程中,自己写的代码过于繁琐而且很难读懂;虽然这次课程设计遇到了很多问题,但是在和老师同学的交流下最终得到解决,特此感老师的指导,这次课程设计收获颇丰,很满意能够完成这次课程设计。
指导教师评语:
指导教师(签字):
年月日
课程设计成绩
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- COP 实现 补码 排序