⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dsinc.asm

📁 PIC单片机的汇编源码合集,应用比较广泛,设计程序时可做子程序来用
💻 ASM
字号:
;********************DSINC********************
;本程序实现对双字节有符号数据块进行增序排列。
;入口参数:数据块首址在SADR中,数据个数在W中。
;出口参数:排好序的数据仍在原数据块中。
;占用资源:W,STATUS,FSR,020H,023H,028H,029H,02AH,02BH,一重堆栈。

           IFNDEF       DSINC1
            #DEFINE     DSINC1

DSINC       MOVWF       TEMP3       ;TEMP3暂存内循环计数值
            DECF        TEMP3,F     ;数据个数减1是比较次数
LOOP69      MOVF        TEMP3,W
            MOVWF       CNT         ;循环计数器减1
            BCF         TEMP1,0     ;TEMP1:0作为交换标志位
            MOVF        SADR,W
            MOVWF       FSR
            INCF        FSR,F
LOOP68      MOVF        INDF,W
            INCF        FSR,F
            INCF        FSR,F
            XORWF       INDF,W
            MOVWF       TEMP4       ;TEMP4:7存放符号异同标志
            XORWF       INDF,W      ;恢复W
            BTFSC       TEMP4,7
            GOTO        DIFF1       
            SUBWF       INDF,W
            BTFSC       STATUS,C
            GOTO        NEXT34
            SUBWF       INDF,W
SWITCH1     MOVWF       TEMP2       ;TEMP2暂存将要交换的数
            MOVF        INDF,W
            DECF        FSR,F
            DECF        FSR,F
            MOVWF       INDF
            MOVF        TEMP2,W
            INCF        FSR,F
            INCF        FSR,F
            MOVWF       INDF
SWLOW1      MOVLW       3
            SUBWF       FSR,F
            MOVF        INDF,W
            MOVWF       TEMP2
            INCF        FSR,F
            INCF        FSR,F
            MOVF        INDF,W
            DECF        FSR,F
            DECF        FSR,F
            MOVWF       INDF
            INCF        FSR,F
            INCF        FSR,F
            MOVF        TEMP2,W
            MOVWF       INDF        ;完成交换
            INCF        FSR,F
            BSF         TEMP1,0     ;置交换标志
NEXT35      DECFSZ      CNT,F
            GOTO        LOOP68
            BTFSS       TEMP1,0
            RETLW       0
            DECFSZ      TEMP3,F
            GOTO        LOOP69
            RETLW       0
NEXT34      BTFSS       STATUS,Z    ;判断高位是否相等
            GOTO        NEXT35
            MOVLW       3
            SUBWF       FSR,F
            MOVF        INDF,W
            INCF        FSR,F
            INCF        FSR,F
            SUBWF       INDF,W       ;高为相等的情况下判断低位是否相等
            INCF        FSR,F
            BTFSS       STATUS,C
            GOTO        SWLOW1       ;交换低位
            GOTO        NEXT35       ;完成一次内循环
DIFF1       BTFSC       INDF,7
            GOTO        SWITCH1
            GOTO        NEXT35
           ENDIF

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -