求汇编语言冒泡排序程序,要简单的!

2025-04-28 17:55:08
推荐回答(1个)
回答1:

以下是冒泡排序子程序,可直接调用:
(请设置es与ds相同)

;===============================
; 字数组排序(有符号数冒泡排序)
    SORTWORD  PROC      NEAR
      ; 数组长度置入cx,数组首地址置入 si
              PUSH      AX
              PUSH      CX
              PUSH      DX
              PUSH      SI
              PUSH      DI
              PUSHF
              PUSH      CX
              POP       DX
              DEC       DX
   @SORTWL1:
              MOV       CX,DX
              MOV       DI,SI
   @SORTWL2:
              MOV       AX,[DI+2]
              CMP       AX,[DI]
              JL        @SORTWNEXT  ; 从大到小(无符号换成 JB)
              XCHG      AX,[DI]
              MOV       [DI+2],AX
 @SORTWNEXT:
              INC       DI
              INC       DI
              LOOP      @SORTWL2
              DEC       DX
              JNZ       @SORTWL1
              POPF
              POP       DI
              POP       SI
              POP       DX
              POP       CX
              POP       AX
              RET
    SORTWORD  ENDP
;===============================================
; 字节数组排序(有符号数冒泡排序)
    SORTBYTE  PROC      NEAR
      ; 数组长度置入cx,数组首地址置入 si
              PUSH      AX
              PUSH      CX
              PUSH      DX
              PUSH      SI
              PUSH      DI
              PUSHF
              PUSH      CX
              POP       DX
              DEC       DX
   @SORTBL1:
              MOV       CX,DX
              MOV       DI,SI
   @SORTBL2:
              MOV       AL,[DI+1]
              CMP       AL,[DI]
              JL        @SORTBNEXT  ; 从大到小(无符号换成 JB)
              XCHG      AL,[DI]
              MOV       [DI+1],AL
 @SORTBNEXT:
              INC       DI
              LOOP      @SORTBL2
              DEC       DX
              JNZ       @SORTBL1
              POPF
              POP       DI
              POP       SI
              POP       DX
              POP       CX
              POP       AX
              RET
    SORTBYTE  ENDP
;===============================================