COP2000实现原码数的排序.doc_第1页
COP2000实现原码数的排序.doc_第2页
COP2000实现原码数的排序.doc_第3页
COP2000实现原码数的排序.doc_第4页
COP2000实现原码数的排序.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

目目 录录 第第 1 章章 总体设计方案总体设计方案 1 1 1设计原理 1 1 2设计思路 1 1 3设计环境 1 第第 2 章章 详细设计方案详细设计方案 3 2 1 算法与程序的设计与实现 3 2 2 流程图的设计与实现 4 第第 3 章章 程序调试与结果测试程序调试与结果测试 9 3 1 程序调试 9 3 2 程序测试及结果分析 9 参考文献参考文献 11 附录 源代码 附录 源代码 12 沈阳航空航天大学课程设计报告 0 第 1 章 总体设计方案 1 1设计原理设计原理 本次课程设计是利用COP2000指令集进行编程 实现对给定内存单元00H 0FH中的16个8bit原码数从小到大排序的功能 首先 将内存单元00H 0FH中的数 据取出来 并利用冒泡排序法将内存中的16个原码数视为无符号数进行排序 排 序之后的结果存入内存单元0DH 0DFH 冒泡的原理是比较相邻的元素 如果第 一个比第二个大 就交换他们两个 对每一对相邻元素作同样的工作 从开始第 一对到结尾的最后一对 针对所有的元素重复以上的步骤 选出最大的沉底 然 后在剩下的数中依次重复上一步骤 最后利用统计16个数中正数的个数设计循环 将负数从新排序 将排序之后的新数列放到内存地址0EH 0EFH中 这样实现了 本次课设要求 1 2设计思设计思路路 本次课程设计是实现对于原码数的从小到大排序 首先 需要将给定内存单 元中的数取出来存入新的内存单元中 然后对新的内存单元中的数进行排序 排 序的方法是冒泡排序法 将有符号的原码数视为无符号数 采用冒泡排序对其进 行排序 将排完序的数重新统计 统计16个数中正数的个数 设计循环将负数按 照一定顺序放到所有正数之前 最后将所有的正数采用循环遍历方式依次插入到 负数之后剩下的位置 1 3设计环境设计环境 利用伟福 COP2000 型计算机组成原理实验仪软件和计算机 在 COP2000 试 验仪软件上编程实现原码数的排序 伟福 COP2000 试验仪软件的指令集分为如下大类 算术运算指令 逻辑运 算指令 移位指令 数据传输指令和跳转指令等 本程序用到的指令集为 沈阳航空航天大学课程设计报告 1 1 算术逻辑运算指令 SUB A II 从累加器中减去立即数后加入累加器 A 中 AND A II 累加器 A 与 立即数 II ADD A II 累加器 A 加立即数 II ADD A R 将寄存器中的数打入到累加器 A 中 2 数据传送指令 MOV R II 将立即数 II 送到寄存器 R 中 MOV MM A 将累加器 A 中的值送到存储器 MM 地址中 MOV A II 将立即数 II 送到累加器 A 中 MOV R A 将累加器 A 中的值送到寄存器 A 中 MOV A R 将寄存器 R 的值送到累加器 A 中 MOV A MM 将存储器 MM 地址中的值送到累加器 A 中 MOV R A 将累计器 A 的值送到间址存储器中 3 跳转指令 JZ MM 若零标志位置 1 跳转到 MM 地址 JC MM 若进位标志置 1 跳转到 MM 地址 JMP MM 跳转到 MM 地址 COP2000 计算机组成原理实验软件截图如图 1 1 所示 图 1 1COP2000 计算机组成原理软件 沈阳航空航天大学课程设计报告 2 第 2 章 详细设计方案 2 1 算法与程序的设计与实现算法与程序的设计与实现 本次课程设计采用伟福 COP2000 实验仪软件和计算机实现有符号数排序的 功能 利用伟福 COP2000 的指令集编程实现 算法具体描述 1 将十六个原码数存储到内存中 将 16 个原码数存入到内存中 数据存入到内存地址 0D0H 0D1H 0D2H 0D3H 0D4H 0D5H 0D6H 0D7H 0D8H 0D9H 0 DAH 0DBH 0DCH 0DDH 0DEH 0DFH 中 2 将十六个有符号数视为无符号数利用冒泡排序法排序 1 比较相邻的元素 如果第一个比第二个大 就交换他们两个 2 对每一对相邻元素作同样的工作 从开始第一对到结尾的最后一对 在这一 点 最后的元素应该会是最大的数 3 针对所有的元素重复以上的步骤 除了最后一个 4 持续每次对越来越少的元素重复上面的步骤 直到没有任何一对数字需要比 较 3 判断正数数量 首先设计程序判断有多少个正数 设此时有正数 N 个 将排序后的数先和 80H 相 与 再减去 80H 若此时为 0 则判断这个数为负数 若不为 0 则 判断这个数为正数 4 负数排序 从 0DFH 取数放到 0E0H 中 0DFH 向前 16 N 连续地址中存的数均为负数 再在其中设置一个循环程序 循环次数为 16 N 以此将 16 N 个负数依次放到以 0E0H 开头的地址中 然后 0DFH 地址减 1 新序列 0E0H 地址加 1 重复上述操 作 直到循环次数等于 0 运算结束 5 正数排序 沈阳航空航天大学课程设计报告 3 内存 0E0H 加 16 N 即为新序列第一个正数的地址 需要将剩余的正数依次放 入新的内存单元 0D0H 后续 N 个地址中存的数均为正数 在其中设置一个循环 程序 循环次数为 N 以此将 N 个正数数依次放到以 0E0H 加 16 N 开头的地址 中 然后 0D0H 地址加 1 新序列地址加 1 重复上述操作 直到 N 等于 0 此时 交换结束 完成所有排序操作 2 2 流程图的设计与实现流程图的设计与实现 1 将十六个原码数取出并存储到新的内存中 如图 2 2 1 所示 Y N 图 2 2 1 存数流程图 开始 取内存 00H 0FH 中的数据存入内存 0D0H 0DFH 并将冒泡排序次数存入 0C0H MOV R0 A 将数存入内存 0DXH 中 MM 地址 0FH 将数存入 0DXH 中 MM MM 地址 1 JMP LOOP2 跳转至 冒泡排序 结束 沈阳航空航天大学课程设计报告 4 2 将十六个原码数视为无符号数利用冒泡排序 如图 2 2 2 所示 把数据从 0D0H 0D1H 中取出并存到寄存器 R0 和 R1 中 将 0C0H 中的数据取出并放到寄存器 R3 比较 R0 R1 大小 Y 开始 R0 与 R1 内的数据交换 N R3 0 N N R0 与 R1 所指的地址加 1 R3 减 1 Y 结束 JMP LOOP4 统计正负数个 数 R0 R1 图 2 2 2 冒泡排序流程图 沈阳航空航天大学课程设计报告 5 3 统计十六个数中正数数量 N 如图 2 2 3 所示 Y N N Y 图 2 2 3 判断正数数量流程图 开始 MOV R0 0D0H MOV R1 10H MOV R2 00H MOV R3 0D0H 将 R0 中的数 与 80 结果减 80 R0 0 R2 加 1 并将 R2 的结 果存入 0FEH R0 加 1 R0 加 1 R1 减 1 R1 0 结束 沈阳航空航天大学课程设计报告 6 4 将十六个数中的负数重新排序如图 2 2 4 所示 N Y 图 2 2 4 负数排序流程图 开始 R0 10H R1 0E0H R3 10H 0FEH 即为负数个数 R0 0DFH R1 0E0H 将 R0 的值放入 R1 中 R0 R0 1 R1 R1 1 R0 地址减 1 R1 地址加 1 R3 R3 1 循环次数减 1 R3 0 JZ LOOP8 结束 沈阳航空航天大学课程设计报告 7 5 将十六个数中的正数重新排序如图 2 2 5 所示 N Y 图 2 2 5 正数排序流程图 开始 R0 0D0H R1 0E0H 0FFH R1 中为第一个正数起始地址 R3 0FEH 即 R3 中存放正数个数 将 R0 的值放入 R1 中 R3 0 R0 R0 1 R1 R1 1 R0 地址加 1 R1 地址加 1 R3 R3 1 循环次数减 1 JZ LOOP10 结束 沈阳航空航天大学课程设计报告 8 第 3 章 程序调试与结果测试 3 1 程序调试程序调试 问题 1 对于题目中给定内存的理解 需要将 00H 0FH 中的数据取出来 解决方法 由于程序编译之后 会在内存单元 00H 0FH 中产生地址码 所以可以 取这些数据作为验证数据 将数据取出来之后放入新的内存单元 0D0H 0DFH 问题 2 将排好序的数据存入 0E0H 0EFH 后 发现负数排序与结果相反 解决方法 统计排序之后负数的个数 将负数个数放入内存单元 0FFH 中 利用 这个数设计循环 将全部负数的顺序逐个调换 最终达到理想结果 问题 3 此程序存在缺陷 数据不能通过试验仪输入 解决方法 采用中断的方式实现从外部输入数据 将 COP2000 实验系统与实验 室操作台连接 以中断的方式实现 16 个原码数的输入 3 2 程序测试及结果分析程序测试及结果分析 软件测试用源程序 COP2000 软件 其输入采用立即数方法 测试数据 1 排序前原码数 00 7C 0F 88 C0 8C 00 8D D0 74 82 71 83 72 85 7C 0F 排序后原码数 E0 D0 C0 8D 8C 88 85 83 82 00 0F 0F 71 72 74 7C 7C 图 3 2 1 结果图 1 沈阳航空航天大学课程设计报告 9 2 排序前原码数 00 8C 01 8D 02 7C 0F 88 C0 8C 00 8D D0 74 82 71 83 排序后原码数 E0 D0 C0 8D 8D 8C 8C 88 83 82 00 01 02 0F 71 74 7C 图 3 2 2 结果图 2 3 排序前原码数 00 8C FE 8D 89 8E 06 8F 96 7C 0F 88 C0 8C 00 8D D0 排序后原码数 E0 FE DO C0 96 8F 8E 8D 8D 8C 8C 89 88 00 06 0F 7C 图 3 2 3 结果图 3 沈阳航空航天大学课程设计报告 10 参考文献 1 唐朔飞 计算机组成原理 第二版 M 北京 高等教育出版社 2008 2 王爱英 计算机组成与结构 第四版 M 北京 清华大学出版社 2006 3 白中英 计算机组成原理 第四版 M 北京 科学出版社 2008 4 王冠 VerilogHDL 与数字电路设计 M 北京 机械工业出版社 2005 5 江国强 EAD 技术习题与实验 M 北京 电子工业出版社 2005 6 杜建国 VerilogHDL 硬件描述语言 M 北京 国防工业出版社 2004 沈阳航空航天大学课程设计报告 11 附录 源代码 MOV A 0FH MOV 0C0H A LOOP 从内存 00H 0FH 中取数据 R MOV R0 00H MOV R1 0D0H S MOV A R0 MOV R2 A MOV A R1 MOV R3 A MOV A R2 MOV R1 A MOV A 0FH SUB A R0 JZ LOOP1 MOV A R0 ADD A 01H MOV R0 A MOV A R1 ADD A 01H MOV R1 A JMP S LOOP1 对原码数进行排序 冒泡排序法 MOV A 0C0H 沈阳航空航天大学课程设计报告 12 T1 MOV R3 A MOV R0 0D0H MOV R1 0D1H S1 MOV A R0 SUB A R1 JC LOOP2 MOV A R0 MOV R2 A MOV A R1 MOV R0 A MOV A R2 MOV R1 A LOOP2 MOV A R0 ADD A 01H MOV R0 A MOV A R1 ADD A 01H MOV R1 A MOV A R3 SUB A 01H MOV R3 A JZ LOOP3 JMP S1 LOOP3 MOV A 0C0H 沈阳航空航天大学课程设计报告 13 SUB A 01H MOV 0C0H A JZ LOOP41 JMP T1 LOOP41 MOV R0 0D0H MOV R1 10H MOV R2 00H MOV R3 0D0H LOOP4 判断正数的个数 并放入内存单元 0FEH 中 MOV A R0 AND A 80H SUB A 80H JZ NEXT MOV A R2 ADD A 01H MOV R2 A MOV 0FEH A NEXT MOV A R0 ADD A 01H MOV R0 A MOV A R1 SUB A 01H MOV R1 A JZ T2 JMP LOOP4 T2 沈阳航空航天大学课程设计报告 14 MOV R0 10H MOV R1 0E0H LOOP5 对所有负数进行交换 实现原码从小到大排序 MOV A 10H SUB A 0FEH MOV R3 A MOV 0FFH A 负数个数存入内存 0FFH LOOP6 MOV R0 0DFH MOV R1 0E0H LOOP7 对负数进行取数和排序操作 MOV A R0 MOV R1 A MOV A R0 SUB A 01H MOV R0 A MOV A R1 ADD A 01H MOV R1 A MOV A R3 SUB A 01H MOV R3 A JZ LOOP8 JMP LOOP7 LOOP8 MOV R0 0D0H MOV R1 0E0H MOV A R1 沈阳航空航天大学课程设计报告 15 ADD A 0FFH MOV R1 A MOV A 0FEH MOV R3 A LOOP9 对正数进行取数和排序操作 MOV A R0 MOV R1 A MOV A R0 ADD A 01H MOV R0 A MOV A R1 ADD A 01H MOV R1 A MOV A R3 SUB A 01H MO

温馨提示

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

评论

0/150

提交评论