汇编课程设计排序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

汇编语言实验报告

学院名称:计算机科学与技术学院题目:汇编语言实现数组排序

专业班级:信息安全111

姓名:王丹

学号:1108060090

指导老师:王晓鹏

一、课程设计的性质和目的:

通过课程设计,进行程设计方法和技能的基本训练,巩固在课堂上学到的有关软件程序设计的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。

二、课程设计的要求:

1、遵循模块化、结构化的程序设计方法。

2、要求程序必须正确。

3、程序简明易懂,多运用输入输出提示,有出错信息及必要的注释。

4、要求程序结构合理,语句使用得当。

5、适当追求编程技巧和程序运行效率。

三、主要仪器设备及软件:

PC机、MASM汇编软件。

四、课程设计题目及要求:

题目:汇编数组排序(选用冒泡排序算法)

五、课题分析及设计思路:

冒泡排序:

依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2

个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两

个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。

冒泡排序可分为正向和逆向两种排序.通过主程序对子程序的调用来

完成输入输出,排序,循环,转化等功能。

六、程序主要流程图:

冒泡排序法实现整数排序

一、实验目的

掌握用汇编语言实现排序,选用冒泡排序算法。

二、实验内容

输入20个以内的不超过0-99的整数,进行排序后输出结果。

三、源程序

DATA SEGMENT

NOTE1 DB 0DH,0AH,'==================================================================',0D H,0AH

DB 'Please input 20 (or less) numbers (0~99):',0DH,0AH,'$'

NOTE2 DB 0DH,0AH,'==================================================================',0D H,0AH

DB 0DH,0AH,'The inputed numbers: ','$'

NOTE3 DB 0DH,0AH,'==================================================================',0D H,0AH

DB 0DH,0AH,'How many decimal integers? $'

NOTE4 DB 0DH,0AH,'The sorted result: ',0DH,0AH,'$'

ERR_STR DB 0DH,0AH,'******************************************************************',0DH,0AH

DB 'Input error!',0DH,0AH

CON_STR DB 0DH,0AH,'******************************************************************',0DH,0AH

DB 0DH,0AH,'Continue? Y or N?','$'

DEC_STR DB 200 ;用来存放输入的原始数据

DB ?

DB 150 DUP('$')

TOTAL DB 3 DUP('$') ;用来记录输入的数字个数

DEC_NUM DW 30 DUP(?) ;用来存放将输入的ASCII 码转换成2进制数以便比较的结果

OUT_STR DB 150 DUP('$') ;存放待输出的字符组信

DATA ENDS

STACK SEGMENT STACK

STT DB 100 DUP(?) ;堆栈STACK ENDS

CODE SEGMENT

MAIN PROC FAR

ASSUME CS:CODE,DS:DA TA,SS:STACK

START: MOV AX,STACK

MOV SS,AX

MOV AX,DA TA

MOV DS,AX

;---------------------------------- 输出提示信息

DISP0: LEA DX,NOTE1

MOV AH,09H

INT 21H

LEA DX,DEC_STR ;将原始数据存入该空间

MOV AH,0AH

INT 21H

MOV AL,BYTE PTR[DEC_STR+2] ;输入合法性的标志:开头是数字或者符号

CMP AL,'0'

JAE CMP1

CMP AL,'+'

JE DISP2

CMP AL,'-'

JE DISP2

JMP DISP1

CMP1: CMP AL,'9'

JBE DISP2

DISP1: LEA DX,ERR_STR

MOV AH,09H

INT 21H

CON_YN: MOV AH,01H ;程序结束处询问是否需要继续

INT 21H

CMP AL,'Y'

JE DISP0

相关文档
最新文档