汇编语言-冒泡排序(绝对给力)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DATAS SEGMENT
BUF DW 20 DUP(0);此处输入数据段代码
N DB 010d
MES2 DB'Please input ten numbers(number less than 100):','$' MES3 DB'The digital after sorted:','$'
a dw 0
DATAS ENDS
STACKS SEGMENT
STACK DW 200 DUP(0);此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT;此处为代码段
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
mov ax,stacks
mov ss,ax
mov sp,200
lea dx,mes2;显示输入请用户输入数组
mov ah,09
int 21h
call crl
xor ax,ax
mov ax,010d
mov n,al
xor cx,cx
mov cl,al
mov bx,0
input1:
call decibin
push dx
call crl
pop dx
mov buf[bx],dx
add bx,02h
loop input1
;*********************冒泡排序
xor cx,cx
mov cl,n
dec cl
LOOP1:
mov dx,cx
mov bx,0
LOOP2:
mov ax,buf[bx]
cmp ax,buf[bx+2]
jge loop3
xchg ax,buf[bx+2]
mov buf[bx],ax
LOOP3:
add bx,2
dec cx
jne loop2
mov cx,dx
loop loop1
lea dx,mes3
mov ah,9
int 21h
call crl
mov cl,n
mov si,0
OUTPUT1:
mov ax,buf[si]
call bindex
mov dl,2ch
mov ah,02h
int 21h
add si,02h
dec cl
jnz output1
mov ah,4ch
int 21h
BINDEX PROC NEAR;2->10输出push a
PX:
mov bx,10d
xor dx,dx
div bx
add dx,30h
push dx
cmp ax,0
jnz px
SHOW:
pop dx
cmp dx,a
jz exit
mov ah,02h
int 21h
jmp show
exit:ret
BINDEX ENDP
DECIBIN PROC NEAR;进制之间的转换mov dx,0
push cx
newchar:
mov ah,01h
int 21h
sub al,30h
jl exit1
cmp al,9d
jg exit1
cbw
xchg ax,dx
mov cl,10d
mul cl
xchg ax,dx
add dx,ax
jmp newchar
exit1:
pop cx
ret
DECIBIN ENDP
CRL PROC NEAR;*********换行回车函数mov dl,0dh
mov ah,02h
int 21h
mov dl,0ah
mov ah,02h
int 21h
ret
CRL endp
CODES ENDS
END START。