大工19秋《汇编语言程序设计》大作业题目及要求--高东进.doc
大连理工大学远程与继续教育学院《汇编语言程序设计》课程设计
学习中心:冀中能源峰峰集团邯郸磁州煤业有限公司利贞煤矿安全技术培训中心奥鹏学习中心[39]
专业:计算机应用技术
年级:2018年秋季
学号:181624224437
学生:高东进
题目:题目二:冒泡排序算法
1.谈谈你对本课程学习过程中的心得体会与建议?
汇编语言本身是一门很重要的应用技术。首先由于汇编的操作由于跟硬件紧密相关,所以,很多硬件设施的嵌入式编程使用的都是使用的汇编语言,因为汇编语言更直接,更有效率!不过汇编程序给人感觉最烦的就是好多程序的结果不能直接通过运行EXE文件显示出来,而更多的是经过DEBUG单步调试才能看到其内在变化,看是否正确。在初次接触汇编的几个汇编工具时,有一种神奇的感觉,因为汇编程序不像其他的高级语言一样需要编译器,而是直接的就能在记事本上编写,然后进行汇编和连接就可以了。
通过这次课程设计让我们有机会锻炼我们的实践能力,设计的过程中每实现一个小功能都很有成就感,收益颇多,熟悉了汇编编程的BEGUG过程,了解掌握汇编程序设计的方法步骤,与此同时,也暴露出学习中的盲点,弥补了不足。
2.《汇编语言程序设计》课程设计,从以下5个题目中任选其一作答。
《汇编语言程序设计》课程设计
题目二:冒泡排序算法
一、算法思路
冒泡排序法是一种最简单的交换类排序方法,它是通过相邻数据元素的交换逐步将线性表变成有序。
冒泡排序法的基本过程如下:
首先,从表头开始往后扫描线性表,在扫描过程中逐次比较相邻两个元素的大小,若相邻两个元素中,前面的元素大于后面的元素,则将它们互换,称之为消去了一个逆序,显然,在扫描过程中,不断地将两个相邻元素中的大者往后移动,最后就将线性表中的最大者换到了表的最后;
然后,从后到前扫描剩下的线性表,同样,在扫描过程中逐次比较相邻两个元素的大小,若相邻两个元素中,后面的元素小于前面的元素,则将它们互换,这样就又消去了一个逆序,显然,在扫描过程中,不断地将两相邻元素中的小者往前移动,最后就将剩下线性表中的最小者换到了表的最前面;
对剩下的线性表重复上述过程,直到剩下的线性表变空为止,此时的线性表已经变为有序。
在上述排序过程中,对线性表的每一次来回扫描,都将其中的最大者放到了表的最后,最小者像气泡一样冒到表的开头,因此这种排序叫做冒泡排序。
二、算法程序框图
绘制从算法的开始到结束的程序框图如下:
Y
Y
Y
Y
Y
结束
(COUNT2)←(COUNT2)-1
(COUNT1)=0?
(COUNT1)←(COUNT1)-1
(COUNT2)=0?
开始
(COUNT1)←1
(COUNT2)←(COUNT1)
I←0
Y
AI=AI+1?
N
AI←→AI+1
I=I+1
三、主要函数代码
降一个首地址为A的N字数组,编制程序将该数组中的数据按照从大到小排序。函数源代码如下:
DATASEGMENT
NUMDW0008H
VAR1DW100AH,0A010H,010CH,02ACH,04BCH,0934H,0003H,3465H
BUFDB100DUP(?)
STRING1DBOriginalarray:,0DH,0AH,
STRING2DBThesortedarray:,0DH,0AH,
DATAENDS
STACKSEGMENTSTACKSTACK
DW100DUP(?)
TOPLABELWORD
STACKENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACK
START:
MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVAX,STACK
MOVSS,AX
LEADX,STRING1;显示人机交互提示
MOVAH