彙編_ASM_選擇排序

PRINT MACRO     OPT;輸出十進制數字的宏

              MOV       AX,OPT
              MOV       BL,10
              DIV       BL          ;餘數在ah,商在al ,商爲十位,餘數爲個位
              MOV       DX,AX
              ADD       DH,30H
              ADD       DL,30H
              MOV       AH,02H
              INT       21H         ;輸出十位
              MOV       DL,DH
              MOV       AH,02H      ;輸出個位
              INT       21H
              MOV       DL,20H
              MOV       AH,02H
              INT       21H         ;輸出空格
              ENDM

;.....................................................................................................................

        DATA SEGMENT
       ARRAY DW        3,2,1
    MESSAGE1 DB        "ORIGINAL ARRAY:",13,10,'$'
    MESSAGE2 DB        13,10,"AFERT SELECTEDSORT:",13,10,'$'
        TEMP DW        0
       COUNT DW        3
        DATA ENDS
        CODE SEGMENT
              ASSUME    CS:CODE,DS:DATA

;.....................................................................................................................
        MAIN PROC      FAR
      START: MOV       AX,DATA
              MOV       DS,AX
              LEA       DX,MESSAGE1
              MOV       AH,09H
              INT       21H         ;提示輸出原始數組
              MOV       CX, COUNT
              LEA       SI,ARRAY
ORG_PRINT: PRINT     [SI]
              ADD       SI,2
              LOOP      ORG_PRINT
              MOV       DL,0
              MOV       AH,02H
              INT       21H

              CALL      SORT;調用排序子程序

              LEA       DX,MESSAGE2
              MOV       AH,09H
              INT       21H
              MOV       CX,COUNT
              LEA       SI,ARRAY
           SORTED_PRINT: PRINT     [SI]
              ADD       SI,2
              LOOP      SORTED_PRINT
              MOV       AH,4CH
              INT       21H
        MAIN ENDP

;................................................................................................................................

        SORT PROC      NEAR;選擇排序子程序
              MOV       CX,COUNT
              LEA       DI,ARRAY

       LOP1: MOV       DX,CX
              MOV       SI,DI

              MOV       BX,DI
              ADD       BX,2
       LOP2: MOV       AX,[SI]
              CMP       AX,[BX]
              JLE       CONTINUE
              MOV       SI,BX

   CONTINUE: ADD       BX,2
              LOOP      LOP2

              MOV       AX,[DI]
              XCHG      AX,[SI]
              MOV       [DI],AX
              ADD       DI ,2
              MOV       CX,DX
              LOOP      LOP1
              RET
        SORT ENDP
        CODE ENDS
              END       START


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章