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

MCS51单片机的排序程序(ASM源代码),第1张

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2464096.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-04
下一篇 2022-08-04

发表评论

登录后才能评论

评论列表(0条)

保存