微机原理实验报告冒泡法对数据排序Word文档下载推荐.docx
《微机原理实验报告冒泡法对数据排序Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《微机原理实验报告冒泡法对数据排序Word文档下载推荐.docx(9页珍藏版)》请在冰豆网上搜索。
N定T义数据段
DT1DW300,250,280,240,260
DT2DB'
whatfivedatainputis'
0DH,0AH,'
$'
DT3DB'
whatafterrankis'
DT4DB'
Themaxis'
DT5DB'
Theminis'
DT6DB'
Theaverageis'
DT7DB'
showyoutheaverageonebyone'
DT8DB'
showyoutheaverageinbinaryform'
DT9DB0DH,0AH,'
DT0DB'
B'
NEQU5
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
D;
AT说A明代码段、数据段
STAT:
MOVAX,DATA
MOVDS,AX
LEADX,DT;
2输出字符串
MOVAH,09H
INT21H
CALLZIXU;
调用数据输出过程
对数据进行排序:
MOVCX,N-;
1设置N-1轮比较次数
MOVDX,;
1比较轮次技术
JM4:
PUSHCX
MOVCX,N
SUBCX,DX
LEASI,DT1
JM3:
MOVAX,[SI]
CMPAX,[SI+2]
JLEJM2
XCHGAX,[SI+2]
XCHGAX,[SI]
JM2:
ADDSI,2
LOOPJM3
POPCX
INCDX
LOOPJM4
输出排序后的顺序:
LEADX,DT3
CALLZIXU
输出最大值:
LEADX,DT4
LEASI,DT1+8;
排序后最后一个数就是最大值
CALLZIXU1
输出最小值:
LEADX,DT5
LEASI,DT1;
排序后第一个数就是最小值
输出平均值:
LEADX,DT6
LEASI,DT1+2;
去掉最大最小后的数求和
ADDAX,[SI+2]
ADDAX,[SI+4]
MOVBX,3
MOVDX,0
DIVBX;
求其平均值
MOVCX,AX
CALLZIXU1;
调用输出程序输出
把平均值分三位输出:
LEADX,DT7
MOVAX,CX
MOVBX,100
DIVBX
PUSHDX
ADDAL,30H
MOVDL,A;
L输出平均值的第一位
MOVAH,2
9换行
POPDX
MOVAX,DX
MOVBX,10
L输出平均值的第二位
ADDDX,30H
MOVAH,2输;
出平均值的第三位
LEADX,DT9
;
以二进制位输出平均值
LEADX,DT8
MOVBX,CX
MOVCX,16
JM5:
SALBX,1
RCLDX,1
MOVAH,02H
DECCX
JNZJM5
LEADX,DT0
MOVAH,4CH返;
回DOS
数据序列的输出写成一个过程:
ZIXUPROC
MOVCX,5
JM1:
MOVDL,AL
LOOPJM1
RET
ZIXUENDP
当个数据输出过程:
ZIXU1PRO;
C将数据的输出写成一个过程
ZIXU1ENDP
CODEENDS
ENDSTAT
调试中出现的一些问题:
1.输入时不慎将字母O当数字0输入,结果导致了下面第5行提示的错误。
2.由于大意将循环标号表错位置,使得出现无限输出的状态。
3.在不该有标点的地方错误的点了标点符号.
4.在写数据输出的程序时,存在逻辑错误,在最高位输出后,本应该将AH清
零,将保存的余数送入AL后继续除,但我第一次恰巧相反,结果出现错
面是一些错误的提示:
经过多次修改和调试,终于能够成功运行,下面是运行结果:
实验总结:
通过实验使得我对这门课有了更深层次的认识,也激发了我对这门课的兴趣,通过编写程序、运行程序,不仅可以巩固以前学过的知识,而且学到了很多在书本山没有的知识。
以前对编程工具及其实验一点也不了解,通过两次的实验课,我已经有了一定的掌握。
我发现,要学好一门语言最好的方法是去用它,只有在使用的过程中,那些苦涩生硬的指令以及语句才会变得鲜活起来,经过多次的使用后,我们不用再去刻意记那些指令的功能,就已经能够很好的掌握和应用了。
在实验过程中,相互讨论也是一大乐趣,大家可以提出自己的想法,然后相互讨论,在进行编程调试,再加上老师的指导,的确是一个相互提高的好方法,可以很快而且高效的提高自己的水平。