COP实现有符号数的排序DOC.docx

上传人:b****6 文档编号:4689810 上传时间:2022-12-07 格式:DOCX 页数:13 大小:109.99KB
下载 相关 举报
COP实现有符号数的排序DOC.docx_第1页
第1页 / 共13页
COP实现有符号数的排序DOC.docx_第2页
第2页 / 共13页
COP实现有符号数的排序DOC.docx_第3页
第3页 / 共13页
COP实现有符号数的排序DOC.docx_第4页
第4页 / 共13页
COP实现有符号数的排序DOC.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

COP实现有符号数的排序DOC.docx

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

COP实现有符号数的排序DOC.docx

COP实现有符号数的排序DOC

沈阳航空航天大学

 

课程设计报告

 

课程设计名称:

计算机组成原理课程设计

课程设计题目:

COP2000实现有符号数的排序

 

院(系):

计算机学院

专业:

计算机科学与技术

班级:

班级

学号:

学号

姓名:

姓名

指导教师:

老师

完成日期:

2015年01月16日

目录

第1章总体设计方案2

1.1设计原理2

1.2设计思路2

1.3设计环境2

第2章详细设计方案4

2.1算法与程序的设计与实现4

2.2流程图的设计与实现5

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

3.1程序调试7

3.2程序测试及结果分析7

参考文献9

附录(源代码)10

第1章总体设计方案

1.1设计原理

本次课程设计是利用COP2000指令集进行编程,实现对于内存中10个8bit有符号数(补码形式)的排序。

先将数已补码形式输入,后转化为移码,因为移码可以直接比较大小,后对10个数进行冒泡排序,小的数沉底,排序完成后再将移码转化为补码,排序完成。

1.2设计思路

本次课程设计是对于有符号数排序。

可以分解成三部分,第一部分将有符号数已补码形式输入,后加上80H转化为移码。

第二部分将10个数进行冒泡排序。

第三部分将10个移码形式的数再转化为补码形式。

1.3设计环境

利用伟福COP2000型计算机组成原理实验仪软件和计算机,在COP2000试验仪软件上编程实现有符号数(补码形式)的排序。

伟福COP2000试验仪软件的指令集分为如下大类:

算术运算指令、逻辑运算指令、移位指令、数据传输指令、跳转指令、中断返回指令、输入输出指令。

本程序用到的指令集为:

(1)算术逻辑运算指令

SUBA,#II-----------从累加器中减去立即数后加入累加器A中

ADDA,#II------------累加器A加立即数II

ADDA,R?

------------将寄存器中的数打入到累加器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中

MOV@R?

A-------------将累计器A的值送到间址存储器中

(3)跳转指令

JZMM---------------若零标志位置1,跳转到MM地址

JCMM---------------若进位标志置1,跳转到MM地址

JMPMM---------------跳转到MM

COP2000计算机组成原理实验软件截图如图1.1所示:

图1.1COP2000计算机组成原理软件

 

第2章详细设计方案

2.1算法与程序的设计与实现

本次课程设计采用伟福COP2000实验仪软件和计算机实现有符号数排序的功能,利用伟福COP2000的指令集编程实现。

算法具体描述:

(1)将十个有符号数存储到内存中:

将10个有符号数以补码形式存入到内存中,数据存入到内存地址0E0H,0E1H,0E2H,0E3H,0E4H,0E5H,0E6H,0E7H,0E8H,0E9H中。

(2)将补码形式转变为移码:

将每个数都加上80H,将补码转变为移码。

(3)将十个有符号数进行冒泡排序:

1.比较相邻的元素。

如果第一个比第二个大,就交换他们两个。

2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。

在这一点,最后的元素应该会是最大的数。

3.针对所有的元素重复以上的步骤,除了最后一个。

4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

(4)将排好的数转化为补码:

将每个数加上80H,将移码转化为补码。

2.2流程图的设计与实现

1.将十个有符号数存储到内存中如图2.2.1所示:

图2.2.1存数流程图

2.设置冒泡排序循环次数如图2.2.2所示

图2.2.2设置循环次数流程图

 

3.将十个移码形式的有符号数利用冒泡排序如图2.2.3所示:

图2.2.3冒泡排序流程图

 

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

3.1程序调试

问题1:

在将排好顺序的数据存储到00地址的内存中

解决方法:

由于程序一部分会占用00H地址的内存,所以将排好的数据存储到0E0H地址的内存中;

3.2程序测试及结果分析

(1)需排序的有符号数:

81,92,34,B2,00,21,A3,13,2B,17

排序后的有符号数:

81,92,A3,B2,00,13,17,21,2B,34

图3.2.1结果图1

 

(2)需排序的有符号数:

71,82,46,A3,00,25,B4,10,35,42

排序后的有符号数:

82,A3,B4,00,10,25,35,45,46,71

图3.2.2结果图2

 

(3)需排序的有符号数:

63,46,B2,A6,00,38,47,D4,56,88

排序后的有符号数:

88,A6,B2,D4,00,38,46,47,56,63

图3.2.3结果图3

参考文献

[1]唐朔飞.计算机组成原理(第二版)[M].北京:

高等教育出版社,2008

[2]王爱英.计算机组成与结构(第四版)[M].北京:

清华大学出版社,2006

[3]白中英.计算机组成原理(第四版)[M].北京:

科学出版社,2008

附录(源代码)

MOVA,#00H;A累加器赋初值0

MOVA,#81H;输入有符号数(补码形式)

ADDA,#80H;将补码转换为对应的移码

MOV0E0H,A

MOVA,#92H

ADDA,#80H

MOV0E1H,A

MOVA,#34H

ADDA,#80H

MOV0E2H,A

MOVA,#0B2H

ADDA,#80H

MOV0E3H,A

MOVA,#00H

ADDA,#80H

MOV0E4H,A

MOVA,#21H

ADDA,#80H

MOV0E5H,A

MOVA,#0A3H

ADDA,#80H

MOV0E6H,A

MOVA,#13H

ADDA,#80H

MOV0E7H,A

MOVA,#2BH

ADDA,#80H

MOV0E8H,A

MOVA,#17H

ADDA,#80H

MOV0E9H,A;将9个转换为移码形式的补码数存入存储器E0到E9中

MOVA,#9

MOV0F0H,A;将排序需要的循环次数存入存储器F0中

LOOP1:

;对移码进行冒泡排序

MOVA,0F0H

YY:

MOVR3,A;寄存器R3中为本次循环中需要比较的次数

MOVR0,#0E0H

MOVR1,#0E1H

YY:

MOVA,@R0

SUBA,@R1;实现间址存储器R0与R1中值相减

JCLOOP2;进位标志置1即R0中值小于R1中值,则跳至地址LOOP2

MOVA,@R0

MOVR2,A

MOVA,@R1

MOV@R0,A

MOVA,R2

MOV@R1,A;若R0中值不小于R1中值则交换R0,R1中值

LOOP2:

;一次比较完成后R0,R1值加1使下一次比较下一组数

MOVA,R0;R3值减1本次比较中需要比较的组数在减少

ADDA,#1

MOVR0,A

MOVA,R1

ADDA,#1

MOVR1,A

MOVA,R3

SUBA,#1

MOVR3,A

JZLOOP3;R3为0则一次循环结束跳至LOOP3

JMPDD

LOOP3:

MOVA,0F0H

SUBA,#1;每结束一次循环,下一次都减少一次比较

MOV0F0H,A

JZNEXT;直到F0存储器中所存数为0循环结束冒泡排序完成

JMPHH

NEXT:

MOVA,0E0H

ADDA,#80H

MOV0E0H,A;将存储器E0到E9中已排好序的移码形式的数转换为对应的补码

MOVA,0E1H

ADDA,#80H

MOV0E1H,A

MOVA,0E2H

ADDA,#80H

MOV0E2H,A

MOVA,0E3H

ADDA,#80H

MOV0E3H,A

MOVA,0E4H

ADDA,#80H

MOV0E4H,A

MOVA,0E5H

ADDA,#80H

MOV0E5H,A

MOVA,0E6H

ADDA,#80H

MOV0E6H,A

MOVA,0E7H

ADDA,#80H

MOV0E7H,A

MOVA,0E8H

ADDA,#80H

MOV0E8H,A

MOVA,0E9H

ADDA,#80H

MOV0E9H,A

FF:

JMPFF

课程设计总结:

主要从以下几方面总结:

1.通过这次课程设计,我学会了COP2000的使用方法和汇编语言的操作,了解了如何通过代码实现实验目的。

2.本次课程设计的题目较为简单,设计的思路很容易想,就是将补码形式转化为移码形式,这样就可以直接进行冒泡排序了,就是机器语言不太熟悉,编写之前要先熟悉一下语言。

3.通过这次课程设计深刻的知道了自己编程的能力,尤其是在减缩代码的过程中很苦恼。

4.本次课程设计中遇到的问题不是很多,因为思路清晰而且题目也不是很难,再加上这学期计算机组成原理学的还不错,所以完成的比较顺利。

特备感谢老师的指导,这次课程设计是我上大学以来收获最大的一次,非常开心能够独立完成这次课程设计

指导教师评语:

 

指导教师(签字):

      年月日

课程设计成绩

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

当前位置:首页 > 高中教育 > 理化生

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

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