第一范文网 - 专业文章范例文档资料分享平台

史上最牛最完整的汇编语言冒泡排序程序

来源:用户分享 时间:2025/5/29 20:18:30 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

;题目:编制一个完整的汇编语言程序,从键盘上读入若干个(可以超过十个)十进制数(正数),排序后在屏幕上输出。

;采用冒泡法排序,综合运用子程序和宏汇编,使程序模块化。 ;程序代码

M_DIRECT MACRO STRING ;定义一个宏,调用09号DOS功能在屏幕上显示一个字符串

MOV DX,OFFSET STRING MOV AH,09 INT 21H ENDM

DATA SEGMENT

DIR1 DB 'count of numbers to sort:$ ' ;提示输入要排序的数据的个数

DIR2 DB 'please input sorting numbers:$ ';提示输入要排序的数据

DIR3 DB 'sorting result:$ ' ;在屏幕上提示排好续的数据

DIR4 DB '*************************$ '

DIR5 DB 'please choose u(up)ord(down):$ ' DIR6 DB 'input error$ ' COUNT = 100 WTEMP DW ?

ARRAY DW COUNT DUP(?) ;用来保存输入的数据

CRLF DB 13,10,

'$ ' ;实现回车换行的功能,13→0DH,回车;10→0AH,换行

LEN DW ? ;保存实际输入的数据的个数

DATA ENDS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; CODE SEGMENT

MAIN PROC FAR

ASSUME CS:CODE,DS:DATA START:

PUSH DS SUB AX,AX ;置AX为0 PUSH AX

MOV

AX,DATA ;将数据段的地址送到DX中 MOV DS,AX

READ: M_DIRECT DIR1 ;宏调用,在屏幕上提示输入要输入的数据的个数

CALL

P_GETNEW ;调用子程序P-GETNEW,输入要输入的数据的个数

AH,09 21H

GETNUMBER: CALL 数据并保存到ARRAY中

SORT: CX,LEN COMPARE:MOV 'U' MOV CX,AX MOV LEN,AX LEA BX,ARRAY MOV

;调用09号功能,实现回车换行

LEA DX,CRLF INT

;屏幕提示输入要排序的数据 M_DIRECT DIR2 P_GETNEW

MOV [BX],AX ADD BX ,2

LOOP GETNUMBER ;排序程序部分 DEC CX

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

M_DIRECT DIR5

AH,01H

INT 21H

CMP ;判断是升序排序还是降序排序 JZ

;输入MOV AL, UP ;输入的字符是U或u跳转到升序排序程序 CMP AL, 'u'

JZ UP

CMP AL,

'D' ;输入的字符是D或d跳转到降叙排序程序 JZ DOWN CMP AL, 'd'

JZ DOWN UP: DI,CX MOV

LOOP1: MOV CMP JNGE XCHG MOV

CONTINUE1: ADD LOOP MOV LOOP JMP OUTPUT DOWN: DI,CX MOV

LOOP2: MOV CMP JGE XCHG MOV

CONTINUE2: ADD LOOP MOV LOOP JMP OUTPUT ;升序排序程序

BX,0 AX,ARRAY[BX]

AX,ARRAY[BX+2]

CONTINUE1 AX,ARRAY[BX+2] ARRAY[BX],AX BX,2

LOOP1 CX,DI UP

;排序完后跳转到输出程序部分 ;降序排序程序

BX,0 AX,ARRAY[BX]

AX,ARRAY[BX+2]

CONTINUE2 AX,ARRAY[BX+2] ARRAY[BX],AX BX,2

LOOP2 CX,DI

DOWN

;排序完后跳转到输出程序部分

MOV MOV OUTPUT: MOV

AH,09 ;回车换行

LEA DX,CRLF INT 21H

M_DIRECT DIR3

MOV

CX,LEN ;为输出程序设置好入口参数

MOV BX,OFFSET ARRAY

WRITE: MOV AX,[BX] 输出排好序的数据

MOV

WTEMP,AX

CALL P_OUTPUT

ADD BX,2 MOV

DL,20H 开

MOV AH,02H INT 21H LOOP WRITE

MOV

AH,09 LEA DX,CRLF INT 21H

M_DIRECT

MOV

AH,09 LEA DX,CRLF INT 21H LOOP READ RET MAIN ENDP ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;从键盘上输入一个数据的子程序 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

P_GETNEW PROC PUSH BX ; ;将入口参数存放到共享变量中 ;显示空格,将两个输出的数据分 ;隔离两次输入排序输出的作用 DIR4 ;实现循环输入数据并排序输出 ;出口参数:AX=

史上最牛最完整的汇编语言冒泡排序程序.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c51rem9wt5t6vudb8ceq7_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top