主题:谁帮忙修改个冒泡排序的程序
我做的是从键盘输入10个以内的2位数然后进行排序,最后输出的ASC码,还没来得及转换成十进制数.
这个程序在排序的地方有问题,不能进行从小到大的排序,谁能给帮忙改下,不胜感激
CRLF MACRO
MOV DL,0DH
MOV AH,02H
INT 21H
MOV DL,0AH
MOV AH,02H
INT 21H
ENDM
DATAS SEGMENT
ff dB 50 dup(?)
MESS DB 'ERROR!','$'
count db 10,10
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
first:
MOV SI,0
MOV CX,50
LEA SI,ff
MOV BX,1
MOV DX,0
INPUT:
MOV AH,01H
INT 21H
CMP AL,0dh
JZ paixu
CMP AL,30H
JB WRONG
XOR AH,AH
MOV CL,4
SHL DX,CL
ADD DX,AX
MOV AH,01H
INT 21H
CMP AL,0dh
JZ paixu
CMP AL,30H
JB WRONG
CMP AL,39H
JA WRONG
AND AL,0FH
XOR AH,AH
MOV CL,4
SHL DL,CL
ADD DL,AL
MOV [SI],DL
INC SI
CRLF
INC BX
LOOP INPUT
PAIXU:
MOV dL,1
LP1: CMP dL,0
JE L1
XOR dL,dL
MOV CL,COUNT
DEC CL
push cx
LEA DI,ff
LP2:MOV AL,[DI]
CMP AL,[DI+1]
JbE LP3
XCHG [DI+1],AL
MOV [DI],AL
MOV BL,1
LP3:INC DI
LOOP LP2
pop cx
mov count,cl
JMP LP1
L1:
CRLF
LEA SI,ff
MOV CX,10
DISPLAY:
MOV AH,02H
MOV DL,[SI]
INT 21H
INC SI
LOOP DISPLAY
MOV AH,4CH
INT 21H
WRONG:LEA DX,MESS
MOV AH,09H
INT 21H
CRLF
JMP INPUT
CODES ENDS
END START