COP实现补码数的排序.docx

上传人:b****7 文档编号:9431740 上传时间:2023-02-04 格式:DOCX 页数:10 大小:112.95KB
下载 相关 举报
COP实现补码数的排序.docx_第1页
第1页 / 共10页
COP实现补码数的排序.docx_第2页
第2页 / 共10页
COP实现补码数的排序.docx_第3页
第3页 / 共10页
COP实现补码数的排序.docx_第4页
第4页 / 共10页
COP实现补码数的排序.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

COP实现补码数的排序.docx

《COP实现补码数的排序.docx》由会员分享,可在线阅读,更多相关《COP实现补码数的排序.docx(10页珍藏版)》请在冰豆网上搜索。

COP实现补码数的排序.docx

COP实现补码数的排序

某某航空航天大学

 

课程设计报告

 

课程设计名称:

计算机组成原理课程设计

课程设计题目:

COP2000实现补码数的排序

 

院〔系〕:

专业:

班级:

学号:

姓名:

指导教师:

完成日期:

2016年1月15日

 

第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.2.2所示:

 

3.将十六个数进展冒泡排序如图2.2.3所示:

 

N

 

Y

 

Y

 

N

 

第3章程序调试与结果测试

程序调试

程序中指令出现错误,代码不能正常运行,对其进展反复检查修改以与调试,使其正常工作。

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

 

参考文献

[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的使用与操作,以与对汇编语言有了一定的了解,学习到如何通过代码实现实验目的;这次课程设计让我深刻的知道了自己的编程能力,还是有一定的不足之处,尤其是缩减代码的过程中,自己写的代码过于繁琐而且很难读懂;虽然这次课程设计遇到了很多问题,但是在和教师同学的交流下最终得到解决,特此感谢教师的指导,这次课程设计收获颇丰,很满意能够完成这次课程设计。

指导教师评语:

 

指导教师(签字):

年月日

课程设计成绩

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1