微机原理实验报告冒泡法对数据排序

精品文档

实验内容:

用“冒泡“法对一组数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

;说明代码段、数据段

1欢迎下载

精品文档

LEA DX,DT2 MOV AH,09H INT 21H

CALL ZIXU

对数据进行排序:

MOV CX,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

;输出字符串

;调用数据输出过程

;设置N-1轮比较次数 ;比较轮次技术

;排序后最后一个数就是最大值2欢迎下载。

精品文档

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

;排序后第一个数就是最小值

;去掉最大最小后的数求和

;求其平均值 ;调用输出程序输出

;输出平均值的第一位

;换行

3欢迎下载。

精品文档

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 I

NT 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

INT 21H

;数据序列的输出写成一个过程:;输出平均值的第二位

;换行

;输出平均值的第三位

;返回DOS

4欢迎下载。

精品文档

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

5欢迎下载。

; ;将数据的输出写成一个过程

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4