回 帖 发 新 帖 刷新版面

主题:谁帮忙修改个冒泡排序的程序


我做的是从键盘输入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

回复列表 (共1个回复)

沙发

好像有for语句和数组吧

我来回复

您尚未登录,请登录后再回复。点此登录或注册