; by http://1wangxiaobo@163.com
DATAS SEGMENT
mess db 0dh,0ah,' please input 3 nums(0-9) if exit input: q ',0dh,0ah,'$'
mess1 db ' sort result :',0dh,0ah,'$'
mess2 db 0dh,0ah,0dh,0ah,0dh,0ah,' thanks your use welcome back ',0dh,0ah,'$'
x dw 3 dup(?)
z db ?
y db 3
w db ?
m db 1
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
xiaobo:
MOV AX,DATAS
MOV DS,AX
.while 1
mov ah,09h
mov dx,offset mess
int 21h
mov cl,0
lea si, x
xor bx,bx
.while 1
.break .if cl==3
mov ah,01h
int 21h
cmp al,'q'
jz exit
mov x[bx],ax
add bx,2h
inc cl
.endw
mov dl,0dh
mov ah,02h
int 21h
mov dl,0ah
mov ah,02h
int 21h
; test
; xor bx,bx
;.while 1
; .break .if bx==6
;mov dl,byte ptr x[bx]
; mov ah,02h
; int 21h
; add bx,2
; .endw
xor cl,cl
;****************************************************
;maopao suan fa
.while 1
.break .if cl==3
mov z,0h
mov bx,0h
.while 1
mov dl,y
sub dl,cl
.break .if z==dl
mov ax,x[bx+2]
cmp x[bx],ax
jng p
xchg x[bx],ax
mov x[bx+2],ax
p:add bx,2h
inc z
.endw
inc cl
.endw
;maopao suan fa
;****************************************************
xor bx,bx
mov ah,09h
mov dx,offset mess1
int 21h
.while 1
.break .if bx==6
mov dl,byte ptr x[bx]
mov ah,02h
int 21h
add bx,2
.endw
mov dl,0dh
mov ah,02h
int 21h
mov dl,0ah
mov ah,02h
int 21h
.endw
exit:
mov ah,09h
mov dx,offset mess2
int 21h
MOV AH,4CH
INT 21H
CODES ENDS
END xiaobo