cop实现有符号数排序.docx

上传人:b****1 文档编号:2097541 上传时间:2023-05-02 格式:DOCX 页数:17 大小:320.10KB
下载 相关 举报
cop实现有符号数排序.docx_第1页
第1页 / 共17页
cop实现有符号数排序.docx_第2页
第2页 / 共17页
cop实现有符号数排序.docx_第3页
第3页 / 共17页
cop实现有符号数排序.docx_第4页
第4页 / 共17页
cop实现有符号数排序.docx_第5页
第5页 / 共17页
cop实现有符号数排序.docx_第6页
第6页 / 共17页
cop实现有符号数排序.docx_第7页
第7页 / 共17页
cop实现有符号数排序.docx_第8页
第8页 / 共17页
cop实现有符号数排序.docx_第9页
第9页 / 共17页
cop实现有符号数排序.docx_第10页
第10页 / 共17页
cop实现有符号数排序.docx_第11页
第11页 / 共17页
cop实现有符号数排序.docx_第12页
第12页 / 共17页
cop实现有符号数排序.docx_第13页
第13页 / 共17页
cop实现有符号数排序.docx_第14页
第14页 / 共17页
cop实现有符号数排序.docx_第15页
第15页 / 共17页
cop实现有符号数排序.docx_第16页
第16页 / 共17页
cop实现有符号数排序.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

cop实现有符号数排序.docx

《cop实现有符号数排序.docx》由会员分享,可在线阅读,更多相关《cop实现有符号数排序.docx(17页珍藏版)》请在冰点文库上搜索。

cop实现有符号数排序.docx

cop实现有符号数排序

沈阳航空航天大学

 

课程设计报告

 

课程设计名称:

计算机组成原理课程设计

课程设计题目:

COP2000实现有符号数的排序

 

院(系):

计算机学院

专业:

计算机科学与技术

班级:

34010102

学号:

2013040101078

姓名:

葛轩

指导教师:

张德园

完成日期:

2016年01月14日

目录

第1章总体设计方案2

1.1设计原理2

1.2设计思路2

1.3设计环境2

第2章详细设计方案4

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

2.2流程图的设计与实现5

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

3.1程序调试9

列举出调试过程中存在的问题

3.2程序测试及结果分析9

参考文献11

附录(源代码)12

第1章总体设计方案

1.1设计原理

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

利用冒泡排序法先将内存中的10个有符号的数视为无符号数进行排序;冒泡的原理是先将十个数逐一比较,选出最大的沉底,然后在剩下的数中依次重复上一步骤。

然后利用统计十个数中正数的个数设计循环将负数从新排序。

1.2设计思路

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

可以分解成两部分,一部分是将有符号的数视为无符号的数,对其进行冒泡排序;另一部分是统计十个数中正数的个数设计循环将负数从新排序。

1.3设计环境

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

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

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

本程序用到的指令集为:

(1)算术逻辑运算指令

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

ANDA,#II-----------累加器A“与”立即数II

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个有符号数存入到内存中,数据存入到内存地址0B0H,0B1H,0B2H,0B3H,0B4H,0B5H,0B6H,0B7H,0B8H,0B9H中。

(2)将十个有符号数视为无符号数利用冒泡排序法排序:

首先将10个有符号数视作无符号数进行冒泡排序。

冒泡排序算法的运作如下:

1.比较相邻的元素。

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

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

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

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

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

(3)判断正数数量n:

首先设计程序判断有多少个正数,设此时有正数n个。

将排序后的数先和80H相与,再减去80H,若此时为0,则判断这个数为负数,若不为0,则判断这个数为正数。

(4)正负数排序:

从0BnH取数放到0C0H中,0BnH后继连续地址中存的数均为负数。

再在其中设置一个循环程序,循环次数为10-n,以此将10-n个负数依次放到以0C0H开头的地址中。

从0B0H开头的地址取出正数放到负数的后面。

运算结束。

2.2流程图的设计与实现

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

图2.2.1存数流程图

 

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

图2.2.2设置循环次数流程图

 

3.将十个有符号数视为无符号数利用冒泡排序如图2.2.3所示:

图2.2.3冒泡排序流程图

 

4.统计十个数中正数数量n如图2.2.4所示:

图2.2.4判断正数数量流程图

5.将是个数中正负数从新排序如图2.2.5所示:

图2.2.5正负数排序流程图

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

3.1程序调试

问题1:

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

解决方法:

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

问题2:

在10个数排序过程后,会出现14个数;

解决方法:

由于程序排序过程中设定的循环次数大于十个数中的正数的个数,所以将排序过程中后面的循环次数设定为与正数的个数相等;

问题3:

此汇编程序具有局限性,只能适应四个负数;

解决方法:

统计十个数中正数的个数将其保存到内存中,然后设计循环从新排序。

3.2程序测试及结果分析

软件测试用源程序,COP2000软件,其输入采用立即数方法;

测试数据:

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

5,85,84,4,62,89,96,54,46,23

排序后的有符号数:

84,85,89,96,4,5,23,46,54,62

图3.2.1结果图1

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

98,1,41,32,88,72,66,87,80,5

排序后的有符号数:

80,87,88,98,1,5,32,41,66,72

图3.2.2结果图2

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

81,82,83,84,85,86,87,88,89,90

排序后的有符号数:

81,82,83,84,85,86,87,88,89,90

图3.2.3结果图3

参考文献

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

高等教育出版社,2008

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

清华大学出版社,2006

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

科学出版社,2008

附录(源代码)

 

mova,#20h

mov0b0h,a

mova,#87h

mov0b1h,a

mova,#25h

mov0b2h,a

mova,#21h

mov0b3h,a

mova,#95h

mov0b4h,a

mova,#41h

mov0b5h,a

mova,#46h

mov0b6h,a

mova,#51h

mov0b7h,a

mova,#63h

mov0b8h,a

mova,#93h

mov0b9h,a

mova,#9h

mov0d0h,a

mova,#0bah

movr1,a

lun:

mova,#0b0h

movr2,a

mova,#0b1h

movr3,a

qushu:

mova,@r2

movr0,a

mova,@r3

subca,r0

jcjh

dizhi:

mova,r2

adda,#1

movr2,a

mova,r3

adda,#1

movr3,a

subca,r1

jzover

jmpqushu

jh:

mova,@r2

movr0,a

mova,@r3

mov@r2,a

mova,r0

mov@r3,a

jmpdizhi

panduancishu:

mova,r1

suba,#1

movr1,a

mova,#0d0h

movr0,a

mova,@r0

suba,#1

mov@r0,a

subca,#0

jzxianshi

jmplun

over:

jmppanduancishu

xianshi:

mova,#0b0h

show:

movr0,a

mova,@r0

out

mova,r0

adda,#1

movr0,a

suba,#0bah

jzk

jmpshow

 

k:

mova,#0b0h

movr0,a

mova,#0b9h

movr1,a

mova,#0e0h

movr2,a

mova,#0f0h

movr3,a

mova,#00h

mov0eeh,a

mov0efh,a

 

loop1:

mova,@r0

anda,#80h

jzloop2

jmploop3

loop2:

mova,0eeh

adda,#01h

mov0eeh,a

mova,@r0

mov@r2,a

mova,r2

adda,#01h

movr2,a

mova,r0

suba,r1

jzloop4

mova,r0

adda,#01h

movr0,a

jmploop1

loop3:

mova,0efh

adda,#01h

mov0efh,a

mova,@r0

mov@r3,a

mova,r3

adda,#01h

movr3,a

mova,r0

suba,r1

jzloop4

mova,r0

adda,#01h

movr0,a

jmploop1

loop4:

mova,#00h

movr0,a

movr1,a

movr2,a

movr3,a

loop5:

jmploop5

 

课程设计总结:

主要从以下几方面总结:

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

2.本次课程设计中达到了关于课题的基本要求,开始编辑的时候使用了机器所占的内存的范围,经过后来的多次询问和修改,才慢慢的调试出结果,虽然自己还有很多地方有所不足,但是还是很骄傲。

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

4.本次课程设计中遇到了很多问题,开始并不想改动,最后静下心来慢慢改,最后成功了。

这次课程设计让我明白做事情应该有耐心。

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

指导教师评语:

 

指导教师(签字):

      年月日

课程设计成绩

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2