汇编语言实现十个数的排序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DATAS SEGMENT
DATA0 DB'Please input a numbers (0-65535):','$' DATA1 DB' over flow input again:','$' DATA2 DB'The num you have put is:',0ah,0dh,'$' DATA3 DB'After exchange the num is:',0ah,0dh,'$' DATA4 DB' ','$'
DATA DW 10 DUP(?)
DATAS ENDS
STACKS SEGMENT
DW 256 DUP(?);此处输入堆栈段代码STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS ;/****************************************/ ;-----------程序开始------------
START:
MOV AX,DATAS
MOV DS,AX
MOV SI,0
MOV CX,10
;----------循环输入------------
L:
CALL INPUT
ADD SI,2
CALL NEWLINE
LOOP L
MOV DX,OFFSET DATA2
MOV AH,9
INT 21H
;-------输入后显示----------
MOV CX,10
MOV DI,0
AGAIN:
CALL PRINT
CALL SPACE
ADD DI,2
LOOP AGAIN
;----------排序-------------
MOV CX,9
MOV DI,0
LOOP0:
CALL SORT
ADD DI,2
LOOP LOOP0
CALL NEWLINE
MOV DX,OFFSET DATA3
MOV AH,9
INT 21H
;----------交换后显示-------------
MOV CX,10
MOV DI,0
AGAIN0:
CALL PRINT
CALL SPACE
ADD DI,2
LOOP AGAIN0
;----------返回系统--------------
EXIT:
MOV AH,4CH
INT 21H
;/**************************************/ ;------------输入函数--------
INPUT PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
;----------提示信息----------
MOV DX,OFFSET DATA0
MOV AH,9
INT 21H
MOV BX,0 ;BX存放十进制数
CLC
MOV DX,0
L0:
;----------输入数字----------
MOV AH,1
INT 21H
CMP AL,0DH
JE L1
SUB AL,30H
JL NEXT1
CMP AL,9
JG NEXT1
;---------转换成十进制数-------
MOV AH,0
XCHG AX,BX
MOV CX,10
MUL CX
ADD AX,BX
JC NEXT1
XCHG AX,BX
JMP L0
NEXT1:
MOV DX,0
MOV BX,0
CALL NEWLINE
CALL ERROR
JMP L0
L1:
CMP DX,0
JNZ NEXT1
MOV DATA[SI],BX
MOV DX,0
POP DX
POP CX
POP BX
POP AX
RET
INPUT ENDP
;/*****************************/ ;-------回车换行--------
NEWLINE PROC NEAR
PUSH AX
PUSH DX
MOV AH,2
INT 21H
MOV DL,0DH
MOV AH,2
INT 21H
POP DX
POP AX
RET
NEWLINE ENDP
;/*********************************/
;--------空格-------
SPACE PROC NEAR
PUSH AX
PUSH DX
MOV DX,OFFSET DATA4
MOV AH,9
INT 21H
POP DX
POP AX
RET
SPACE ENDP
;/**************************************/ ;----------错误提示----------------
ERROR PROC NEAR
PUSH AX
PUSH DX
MOV DX,OFFSET DATA1
MOV AH,9
INT 21H
POP DX
POP AX
RET
ERROR ENDP
;/************************************/ ;--------冒泡排序子程序-----------
SORT PROC NEAR
PUSH BX
PUSH DX