MCS51单片机的排序程序(ASM源代码)

MCS51单片机的排序程序(ASM源代码)

;内部RAM数据排序程序(升序)
;入口    :R0(起始地址),N(数据个数)
;占用资源:ACC,B,R5,R6,R7
;堆栈需求:2字节
;出口    :R0

ISELSORT :MOV    R7,N
          DEC    R7
ISST1    :MOV    A,R7
          MOV    R6,A
          MOV    A,R0
          MOV    R1,A
          MOV    R2,A
          MOV    B,@R1
ISST2    :INC    R1
          MOV    A,@R1
          CLR    C
          SUBB   A,B
          JC     ISST3
          MOV    A,R1
          MOV    R2,A
          MOV    B,@R1
ISST3    :DJNZ   R6,ISST2
          MOV    A,B
          XCH    A,@R1
          MOV    B,R2
          MOV    R1,B
          MOV    @R1,A
          DJNZ   R7,ISST1
          RET

;外部RAM数据排序程序(升序)
;入口    :ADDPH,ADDPL(起始地址),N(数据个数)
;占用资源:ACC,B,R0,R1,R5,R7
;堆栈需求:2字节
;出口    :ADDPH-ADDPL

ESELSORT :MOV    R7,N
          DEC    R7
ESST1    :MOV    A,R7
          MOV    R6,A
          MOV    DPL,ADDPL
          MOV    R1,DPL
          MOV    DPH,ADDPH
          MOV    R0,DPH
          MOVX   A,@DPTR
          MOV    B,A
ESST2    :INC    DPTR
          MOVX   A,@DPTR
          CLR    C
          SUBB   A,B
          JC     ESST3
          MOV    R0,DPL
          MOV    R1,DPH
          MOVX   A,@DPTR
          MOV    B,A
ESST3    :DJNZ   R6,ESST2
          MOVX   A,@DPTR
          XCH    A,B
          MOVX   @DPTR,A
          MOV    DPL,R0
          MOV    DPH,R1
          MOV    A,B
          MOVX   @DPTR,A
          DJNZ   R7,ESST1
          RET

;外部RAM浮点数排序程序(升序)
;入口    :ADDPH,ADDPL(起始地址),N(数据个数)
;占用资源:ACC,B,R0,R1,R2,R3,R4,R5,R6,R7,NCNT
;堆栈需求:5字节
;出口    :ADDPH,ADDPL

FSORT    :MOV    A,N
          MOV    NCNT,A
          DEC    NCNT
FST1     :MOV    B,NCNT
          MOV    DPL,ADDPL
          MOV    R1,DPL
          MOV    DPH,ADDPH
          MOV    R0,DPH
          MOVX   A,@DPTR
          MOV    R2,A
          INC    DPTR
          MOVX   A,@DPTR
          MOV    R3,A
          INC    DPTR
          MOVX   A,@DPTR
          MOV    R4,A
FST2     :INC    DPTR
          MOVX   A,@DPTR
          MOV    R5,A
          INC    DPTR
          MOVX   A,@DPTR
          MOV    R6,A
          INC    DPTR
          MOVX   A,@DPTR
          MOV    R7,A
          PUSH   B
          LCALL  FCMP
          POP    B
          JNC    FST4
          MOV    A,DPL
          CLR    C
          SUBB   A,#02H
          MOV    R1,A
          MOV    R0,DPH
          JNC    FST3
          DEC    R0
FST3     :MOV    A,R5
          MOV    R2,A
          MOV    A,R6
          MOV    R3,A
          MOV    A,R7
          MOV    R4,A
FST4     :DJNZ   B,FST2
          MOV    A,DPL
          CLR    C
          SUBB   A,#02H
          MOV    DPL,A
          JNC    FST5
          DEC    DPH
FST5     :MOV    A,R2
          MOVX   @DPTR,A
          INC    DPTR
          MOV    A,R3
          MOVX   @DPTR,A
          INC    DPTR
          MOV    A,R4
          MOVX   @DPTR,A
          MOV    A,R0
          MOV    P2,A
          MOV    A,R5
          MOVX   @R1,A
          INC    R1
          MOV    A,R6
          MOVX   @R1,A
          INC    R1
          MOV    A,R7
          MOVX   @R1,A
          DJNZ   NCNT,FST1
          RET

通知公告
编辑观点
理事会
参考资料
版权声明

凡《网络安全与数据治理》(原《信息技术与网络安全》)录用的文章,如作者没有关于汇编权、翻译权、印刷权及电子版的复制权、信息网络传播权与发行权等版权的特殊声明,即视作该文章署名作者同意将该文章的汇编权、翻译权、印刷权及电子版的复制权、信息网络传播权与发行权授予本刊,本刊有权授权本刊合作数据库、合作媒体等合作伙伴使用。同时,本刊支付的稿酬已包含上述使用的费用,特此声明。

《网络安全与数据治理》(原《信息技术与网络安全》)编辑部