冒泡排序

来源:互联网 发布:淘宝抢红包软件被骗 编辑:程序博客网 时间:2024/06/05 07:10

冒泡排序:

代码如下:

EXTRN        LOAD:FAR,SAVE:FAR
N           EQU         20
STAC        SEGMENT    STACK
        DB        128 DUP (?)
STAC        ENDS
DATA        SEGMENT
SOURCE        DW        N DUP(?)        
RESULT        DW        N DUP(0)        
NAME0        DB        'INPUT1.DAT',0
NAME1        DB        'OUTPUT1.DAT',0
DATA        ENDS
CODE        SEGMENT
        ASSUME    CS:CODE, DS:DATA, SS:STAC
START         PROC        FAR
        PUSH        DS
        XOR         AX,AX
        PUSH        AX
        MOV        AX,DATA
        MOV        DS,AX

        LEA        DX,SOURCE        ;数据区起始地址
        LEA        SI,NAME0            ;原始数据文件名
        MOV        CX,N*2            ;字数
        CALL        LOAD            ;从'INPUT1.DAT'中读取数据
;    **** BEGIN ****
        LEA        SI,SOURCE        
        LEA        DI,RESULT        
        MOV        CX,N
NEXT0:        MOV        AX,[SI]
        MOV        [DI],AX
        ADD        SI,02H
        ADD             DI,02H
        LOOP        NEXT0
        CLD                       ;将DF置零,以便在后面用LODSW指令        
        MOV        BX,N-1
MAL1:        LEA        SI,RESULT
        MOV        CX,BX  
NEXT:        LODSW                      ;块传输入的指令,将SI所指向的数值传到累加器AX,然后SI增加2
        CMP        [SI],AX
        JAE        CONT        ;大于等于
        XCHG        [SI],AX  
        MOV        [SI-2],AX
CONT:        LOOP        NEXT   
          DEC             BX    ;自减1
          JNZ             MAL1
;    **** END ****
        LEA        DX,RESULT            ;结果数据区首址
        LEA        SI,NAME1            ;结果文件名
        MOV        CX,N*2            ;结果字数
        CALL        SAVE            ;保存结果到文件
        RET
START        ENDP
CODE        ENDS
        END        START


原创粉丝点击