微机原理实验报告冒泡法对数据排序_第1页
微机原理实验报告冒泡法对数据排序_第2页
微机原理实验报告冒泡法对数据排序_第3页
微机原理实验报告冒泡法对数据排序_第4页
微机原理实验报告冒泡法对数据排序_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

实验内容实验内容 用 冒泡 法对一组数300 250 280 240 260 按从小到大的顺序排 列 实验要求 实验要求 1 编制程序 对这组数进行排序 并输出原数据及排序后数据 2 利用DEBUG调试工具 用D0命令 查看排序前后 内存数据的变化 3 去掉最大和最小的两个值 求出其余值的平均值 并输出最大值 最小值和平 均值 4 用学过的压栈PUSH和出栈POP指令 将平均值按位逐个输出 即输出263 5 将平均值263转化为二进制串 并将这组二进制串输出 6 所有数据输出前要用字符串的输出指令 进行输出提示 如 zui da zhi shi 300等 所有数据结果能清晰地显示在屏幕上 程序代码程序代码 DATA SEGMENT 定义数据段 DT1 DW 300 250 280 240 260 DT2 DB what five data input is 0DH 0AH DT3 DB what after rank is 0DH 0AH DT4 DB The max is 0DH 0AH DT5 DB The min is 0DH 0AH DT6 DB The average is 0DH 0AH DT7 DB show you the average one by one 0DH 0AH DT8 DB show you the average in binary form 0DH 0AH DT9 DB 0DH 0AH DT0 DB B 0DH 0AH N EQU 5 DATA ENDS CODE SEGMENT ASSUME CS CODE DS DATA 说明代码段 数据段 STAT MOV AX DATA MOV DS AX LEA DX DT2 输出字符串 MOV AH 09H INT 21H CALL ZIXU 调用数据输出过程 对数据进行排序 MOV CX N 1 设置N 1轮比较次数 MOV DX 1 比较轮次技术 JM4 PUSH CX MOV CX N SUB CX DX LEA SI DT1 JM3 MOV AX SI CMP AX SI 2 JLE JM2 XCHG AX SI 2 XCHG AX SI JM2 ADD SI 2 LOOP JM3 POP CX INC DX LOOP JM4 输出排序后的顺序 LEA DX DT3 MOV AH 09H INT 21H CALL ZIXU 输出最大值 LEA DX DT4 MOV AH 09H INT 21H LEA SI DT1 8 排序后最后一个数就是最大值 MOV AX SI CALL ZIXU1 输出最小值 LEA DX DT5 MOV AH 09H INT 21H LEA SI DT1 排序后第一个数就是最小值 MOV AX SI CALL ZIXU1 输出平均值 LEA DX DT6 MOV AH 09H INT 21H LEA SI DT1 2 去掉最大最小后的数求和 MOV AX SI ADD AX SI 2 ADD AX SI 4 MOV BX 3 MOV DX 0 DIV BX 求其平均值 MOV CX AX CALL ZIXU1 调用输出程序输出 把平均值分三位输出 LEA DX DT7 MOV AH 09H INT 21H MOV AX CX MOV BX 100 MOV DX 0 DIV BX PUSH DX ADD AL 30H MOV DL AL 输出平均值的第一位 MOV AH 2 INT 21H LEA DX DT9 换行 MOV AH 09H INT 21H POP DX MOV AX DX MOV BX 10 MOV DX 0 DIV BX PUSH DX ADD AL 30H MOV DL AL 输出平均值的第二位 MOV AH 2 INT 21H LEA DX DT9 换行 MOV AH 09H INT 21H POP DX ADD DX 30H MOV AH 2 输出平均值的第三位 INT 21H LEA DX DT9 MOV AH 09H INT 21H 以二进制位输出平均值 LEA DX DT8 MOV AH 09H INT 21H MOV BX CX MOV CX 16 JM5 MOV DX 0 SAL BX 1 RCL DX 1 ADD DX 30H MOV AH 02H INT 21H DEC CX JNZ JM5 LEA DX DT0 MOV AH 09H INT 21H MOV AH 4CH 返回DOS INT 21H 数据序列的输出写成一个过程 ZIXU PROC MOV CX 5 LEA SI DT1 JM1 MOV AX SI MOV BX 100 MOV DX 0 DIV BX PUSH DX ADD AL 30H MOV DL AL MOV AH 2 INT 21H POP DX MOV AX DX MOV BX 10 MOV DX 0 DIV BX PUSH DX ADD AL 30H MOV DL AL MOV AH 2 INT 21H POP DX ADD DX 30H MOV AH 2 INT 21H LEA DX DT9 MOV AH 09H INT 21H ADD SI 2 LOOP JM1 RET ZIXU ENDP 当个数据输出过程 ZIXU1 PROC 将数据的输出写成一个过程 MOV BX 100 MOV DX 0 DIV BX PUSH DX ADD AL 30H MOV DL AL MOV AH 2 INT 21H POP DX MOV AX DX MOV BX 10 MOV DX 0 DIV BX PUSH DX ADD AL 30H MOV DL AL MOV AH 2 INT 21H POP DX ADD DX 30H MOV AH 2 INT 21H LEA DX DT9 MOV AH 09H INT 21H RET ZIXU1 ENDP CODE ENDS END STAT 调试中出现的一些问题调试中出现的一些问题 1 输入时不慎将字母O当数字0输入 结果导致了下面第5行提示的错误 2 由于大意将循环标号表错位置 使得出现无限输出的状态 3 在不该有标点的地方错误的点了标点符号 4 在写数据输出的程序时 存在逻辑错误 在最高位输出后 本应该将AH清零 将保存的余数送入AL后继续除 但我第一次恰巧相反 结果出现错误 下面是一些错误的提示下面是一些错误的提示 经过多次修改和调试 终于能够成功运行 下面是运行结果 实验总结实验总结 通过实验使得我对这门课有了更深层次的认识 也激发了我对这门课的兴 趣 通过编写程序 运行程序 不仅可以巩固以前学过的知识 而且学到了很 多在书本山没有的知识 以前对编程工具及其实验一点也不了解 通过两次的 实验课 我已经有了一定的掌握 我发现 要学好一门语言最好的方法是去用它 只有在使用的过程中

温馨提示

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

评论

0/150

提交评论