COP2000实现无符号数的排序_第1页
COP2000实现无符号数的排序_第2页
COP2000实现无符号数的排序_第3页
COP2000实现无符号数的排序_第4页
COP2000实现无符号数的排序_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课课 程程 设设 计计 课程设计名称:计算机组成原理课程设计计算机组成原理课程设计课程设计题目:COP2000 实现无符号数的排序院(系):专 业: 学 号:姓 名: 江汉大学组成原理课程设计 -I-目目 录录第第 1 章章 实验目的实验目的.11.1设计原理.11.2设计思路.11.3设计环境.1第第 2 章章 详细设计方案详细设计方案.32.1 算法与程序的设计与实现 .32.2 流程图的设计与实现 .3第第 3 章章 程序调试与结果测试程序调试与结果测试.63.1 程序调试 .6第第 4 章章 实验扩展实验扩展.124.1 原来的实验.124.2 改进后的实验.12第第 5 章章 结论心

2、得结论心得.15附附 录(源代码)录(源代码).16江汉大学组成原理课程设计-2-第 1 章 实验目的1.1设计原理设计原理本次课程设计的任务是利用COP2000指令集进行编程,实现对给定内存中的12个8bit无符号数,完成从小到大的排序。在机器字长为16位时,无符号数表示的范围是0到65535(补码表示),没有正负号之分。故可以利用冒泡排序法对内存中的12个无符号数进行排序;冒泡的原理是重复的走访要排序的无符号数,将十个数逐一比较,选出最大的沉底,然后在剩下的数中依次重复上一步骤。走访无符号数的工作时重复的进行直到排序结束。1.2设计思设计思路路 本次课程设计是对无符号数排序。可以分解成三部

3、分,分别是初始化,将无符号数进行冒泡排序,对排序进行判断并输出。1.3设计环境设计环境1.COP2000 实验环境介绍 利用 COP2000 模拟软件,在 COP2000 模拟软件上编程实现有符号数(补码形式)的排序。COP2000 试验仪软件的指令集分为如下大类:算术运算指令、逻辑运算指令、移位指令、数据传输指令、跳转指令、中断返回指令、输入输出指令。2.本程序用到的指令集为:(1) 算术逻辑运算指令SUB A,#01H-从累加器中减去立即数后放入累加器 A 中AND A, #01H -加上立即数 1 放入累加器 A 中SUB A,R2 -累加器 A 中的数减去 R2 所指的数SUB A,R

4、0 -累加器 A 中的数减去 R0 中的数,放入 A 中SUB A,R1 -累加器 A 中的数减去 R1 中的数,放入 A 中江汉大学组成原理课程设计-3-(2)数据传送指令MOV A,#70H;MOV R1,A -内存中十个数的起始地址放入 R1 中MOV A,#00H;MOV R0,A - 当前已对比的数的个数放入 R0 中MOV A,R1;MOV R2,A - 将 R1 存放的地址放入 R2 中 MOV A,R1; - R1 所指地址中的数放入 A 中 MOV A,R1;MOV R3,A;MOV A,R2;MOV R1,A;MOV A,R3;MOV R2,A;-将 R1 所指的数与 R2

5、 所指的数交换(3)跳转指令JZ result -若零标志位为 1,跳转到 result 程序JC revise -若进位标志置 1,跳转到 reviseJMP loop-跳转到 loop3.COP2000 计算机组成原理实验软件截图如图 1.1 所示: 图 1.1 COP2000 计算机组成原理软件江汉大学组成原理课程设计-4- 第 2 章 详细设计方案2.1 算法与程序的设计与实现算法与程序的设计与实现 本次课程设计采用伟福 COP2000 实验仪软件和计算机实现无符号数排序的功能,利用伟福 COP2000 的指令集编程实现。算法具体描述如下:1.将十二个 8bit 无符号数存储到内存中:

6、将 12 个无符号数存入到内存中,数据存入到内存地址70H,71H,72H,73H,74H,75H,,76H,77H,78H,79H,7AH,7BH 中。2.利用冒泡排序法将十二个无符号数排序: 冒泡排序的算法如下: (1)比较相邻的元素。如果第一个比第二个大,则交换。 (2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 (3)针对所有的元素重复以上的步骤,除了最后一个。 (4)持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 3.判断结束并输出结果: 每对比一对数,R1 所指的地址加 1,减去 7CH,零标志位为 1

7、,而 7CH 表示存的最后一个数地址的下一地址,则表示十二个无符号数比较结束,输出比较之后的按从小到大排序的十二个无符号数。运算结束。2.2 流程图的设计与实现流程图的设计与实现江汉大学组成原理课程设计-5-1.将十二个 8bit 无符号数存储到内存中。如图 2.2.1 所示。 图 2.2.1 存数流程图2.初始化冒泡排序循环次数。如图 2.2.2 所示。 图 2.2.2 设置循环次数流程图3.将十二个无符号数冒泡排序。如下图所示:将 12 个无符号数存入内存 结束循环需要对比的数的个数 开始 结束 开始江汉大学组成原理课程设计-6- N Y N Y 开始 cycle 起始地址放入 R1 中,

8、R0=0,80H=980H-1!=0 loopR1 存的地址加 1 放入R2JC (R1)-(R2)revise(R1)与(R2)交换R1 所指地址加 1 R0+180H-R0=0resultR1 所指地址加1(R1)+1)-7AH=0结束江汉大学组成原理课程设计-7- 第 3 章 程序调试与结果测试3.1 程序调试程序调试问题 1 : 将 12 个无符号数存储到 00 地址的内存中,运行出错解决方法:由于程序指令会占用一部分内存空间,所以将 12 个 8bit 无符号数存储到 70H 地址的内存中;这里也可以选中其它的存储位置,只要不使用到程序指令占用的位置。问题 2 : 程序执行完,输出的

9、结果不全是按从小到大排列。解决方法:在输出结果前,没有判断是否已经完成比较。每比较一次,R1 所指地 址加 1,直到 R1 所指地址加 1 后的地址减去 7CH 等于 0,而 7CH 表示所存无符号数的最后一个数地址的下一地址。运算结束并输出结果。3.2 程序测试及结果分析程序测试及结果分析 在 COP2000 中输入立即数,将需要排序的 12 个 8bit 无符号数放入内存 70H到 7BH 中调试,进行排序测试;测试数据:(1)需排序的无符号数:02,04,06,01,03,05,08,09,00,07, 12,11 排序后的无符号数:00,01,02,03,04,05,06,07,08,

10、09,11,12 内存中初始状态如图 3.2.1 所示。执行完成后内存中结果如图 3.2.2 所示。软件仿真结果如图 3.2.3 所示。江汉大学组成原理课程设计-8- 图 3.2.1 内存中初始状态江汉大学组成原理课程设计-9-图 3.2.2 执行完成后内存中状态 图 3.2.3 软件仿真结果图江汉大学组成原理课程设计-10-(2)需排序的无符号数:21,20,15,31,08,06,08,10,11,09,18,15 排序后的无符号数:06,08,08,09,10,11,15,15,18,20,21,31 内存中初始状态如图 3.2.4 所示。执行完成后内存中结果如图 3.2.5 所示。软件

11、仿真结果如图 3.2.6 所示。 图 3.2.4 内存中初始状态江汉大学组成原理课程设计-11- 图 3.2.5 内存中初始状态 图 3.2.6 软件仿真结果图(3)需排序的无符号数:29,0A,0B,A1,2B,3C,A1,A2,01,05,C1,0F 排序后的无符号数:01,05,0A,0B,0F,29,2B,3C,A1,A1,B2,C1 内存中初始状态如图 3.2.7 示。执行完成后内存中结果如图 3.2.8 示。软件仿真结果如图 3.2.9 示。江汉大学组成原理课程设计-12- 图 3.2.7 内存中初始状态 图 3.2.8 执行完成后内存中状态江汉大学组成原理课程设计-13- 图 3

12、.2.9 软件仿真结果图江汉大学组成原理课程设计-14-第 4 章 实验扩展4.1 原来的实验原来的实验原来的实验是借鉴了网上的实验,数据只能通过在 70H 到 7BH 中手动写入。感觉很不方便。我想到了学过的 IN 指令输入数据,并进行排序。由于在自己的电脑上无法进行模拟。所以这里我采用了数据输入的方法。4.2 改进后的实验改进后的实验 改进后的代码见 examnew.sam。改进的过程中又遇到了上面的问题 1。由于程序指令会占用一部分内存空间,所以将 12 个 8bit 无符号数存储到 80H 地址的内存中;这里也可以选中其它的存储位置,只要不使用到程序指令占用的位置。这个代码中是采取自动

13、输入 0C 到 01 这 12 个数。代码为start:MOV A,#0CH; MOV 91H,A; MOV A,#80H; MOV R3,A; MOV A,#0CH; MOV R2,A;这里是设置一个为 13 的值放在 91H 这个地址。将 R3 的值设为 80H,用来指向地址的。最后的 R2 是因为无法使用 IN 指令,我设置的一个输入的值,为 0Cinput:MOV A,R2 把 R2 写入 A,用来代替 INMOV R3,A MOV A,R3 ADD A,#01H MOV R3,A 将 R2 的值放入 80H,并将地址加 1MOV A,R2 SUB A,#01H MOV R2,A将 R

14、2 的值减 1,用于下次写入MOV A,R0; ADD A,#01H; MOV R0,A; MOV A,91H; SUB A,R0; JZ over;用来判断循环了几次。每一次循环加 1,一共循环 12 次。JMP input;需排序的无符号数:0C,0B,0A,09,08,07,06,05,04,03,02,01 排序后的无符号数:01,02,03,04,05,06,07,08,09,0A,0B,0C修改的程序测试结果如下自动生成内存中初始状态如图 4.2.1 示。执行完成后内存中结果如图 4.2.2 示。江汉大学组成原理课程设计-15- 图 4.2.1 自动生成内存中初始状态图 4.2.2

15、 执行完成后内存中状态江汉大学组成原理课程设计-16-第 5 章 结论心得本次课程设计我做的是使用 cop2000 模拟软件,实现对 12 个无符号的数进行排序。排序采用的是比较经典的冒泡排序,通过对每两个相邻的数进行比较。如果第一个大于第二个,就将第一个和第二个进行换位置。换位采用的 MOV A,R1; MOV R3,A; MOV A,R2; MOV R1,A; MOV A,R3; MOV R2,A; 以上几句代码就是将 R1 所指的数与 R2 所指的数交换。过程是首先将 R1 地址所指的数放到寄存器 A 中,然后将 A 的值放在 R3 中,再接着将 R2 地址所指的数放入 A,再将 A 的

16、值放入 R1 对应的地址位置,此时 R1 地址的值是 R2 地址对应的值。将刚刚存在 R3 中值打回寄存器 A 中,将 A 的值放入 R2 对应的地址中。到此完成R1 和 R2 对应地址的值的交换。在编写这个程序的时候通过网上查询,我找到了思路。网上是实现的 10 个数的排序,在编写的时候我是实现了 12 个数的排序。实现了 12 个数的排序我还是不满足。我就在想着能不能实现自己手动输入数值进行排序,我想到了 IN 指令。通过查阅资料,我知道了 IN 指令是将数打入寄存器 A 中,我就想将 A 的数放入#70H 中。但是在 cop2000 我没找到模拟的方法。这里我采用了给入一个数放在 R2

17、中每次将 1,用来代替 IN 输入。然后通过跳转,12 次循环。这里我又设置了控制循环的指令。一共实现了 12 次循环。这个循环变量放在 91H 中。在实现这个功能的时候又不得不把存储的值由 70H 移动到 80H 中。由于之前的组成原理的实验,学习过 cop2000。总的来书实验的难度不是很大。这个实验加深了对汇编的理解。有一次复习了 cop2000 的基本操作。课程设让我进一步理解了冒泡排序法,并在 cop2000 中运用成功。虽然这次课程设计我没有自己设计指令系统。但是我也复习了一下指令系统设计这一部分。加深了对指令系统的理解。 江汉大学组成原理课程设计-17-附 录(源代码)start

18、: MOV A,#0CH; MOV 91H,A; MOV A,#80H; MOV R3,A; MOV A,#0CH; MOV R2,A; input: MOV A,R2 MOV R3,A MOV A,R3 ADD A,#01H MOV R3,A MOV A,R2 SUB A,#01H MOV R2,A MOV A,R0; ADD A,#01H; MOV R0,A; MOV A,91H; SUB A,R0; JZ over; JMP input; over: MOV A,#0CH; MOV 90H,A;cycle: MOV A,#80H; MOV R1,A; MOV A,#00H; MOV R0,A; MOV A,90H; SUB A,#01H; JZ result; MOV 90H,A;LOOP: MOV A,R1; ADD A,#01H; MOV R2,A; MOV A,R1; SUB A,R2; JC revise; MOV A,R1; MOV R3,A; MOV A,R2; MOV R1,A; MOV A,R3; MOV R2,A; MOV A,R1; ADD A,#01H; MOV R1,A; MOV A,R0; ADD A,#01H; MOV R0,A; MOV A,90H; SUB A,R0; JZ cycle; JMP LOOP;revise: MOV A

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论