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

📄 mcobcdsub.asm

📁 PIC单片机的汇编源码合集,应用比较广泛,设计程序时可做子程序来用
💻 ASM
字号:
;********************MCOBCDSUB********************
;本程序实现多字节压缩BCD码减法。
;入口参数: 被减数首地址在SADR中,减数首地址在DADR中,字节数在CNT中。
;出口参数: 结果首地址在SADR中,字节数在CNT中,借位标志在STATUS:C中,'0'表示有借位。
;占用资源: W,STATUS,FSR,020H,022H,023H,028H,029H,02AH,一重堆栈。
;说    明: 被减数将被冲掉.     

           IFNDEF       MCOBCDSUB1
            #DEFINE     MCOBCDSUB1
MCOBCDSUB   CLRF        TEMP3       ;借位清零
            COMF        TEMP3,F     ;取反
            MOVF        SADR,W
            MOVWF       TEMP2       ;保存结果首地址
NEXT9       MOVF        DADR,W
            MOVWF       FSR
            MOVF        INDF,W
            MOVWF       TEMP1       ;暂存减数
            MOVF        SADR,W
            MOVWF       FSR
            MOVF        TEMP1,W
            SUBWF       INDF,F
            RLF         TEMP3,F     ;保存借位
            BTFSC       TEMP3,1     ;将低字节送来
            GOTO        NOCY2       ;的借位减去
            DECF        INDF,F      ;并判断
            INCF        INDF,W
            ANDLW       0FH
            BTFSC       STATUS,Z
            BCF         STATUS,DC   ;减借位是否产生了半借位
            INCF        INDF,W      ;减的过程中
            BTFSS       STATUS,Z    ;是否又产生了借位
            GOTO        NOCY2
            BCF         STATUS,DC   ;有借位,置半借位
            BCF         TEMP3,0     ;置借位
NOCY2       MOVLW       6
            BTFSC       STATUS,DC   ;判断是否有半借位
            ADDWF       INDF,F      ;没有,LSD不变
            SUBWF       INDF,F
            MOVLW       60H
            BTFSS       TEMP3,0     ;判断结果的MSD是否大于9
            SUBWF       INDF,F      ;减60H
            INCF        DADR,F
            INCF        SADR,F
            DECFSZ      CNT,F
            GOTO        NEXT9
            MOVF        TEMP2,W
            SUBWF       SADR,W
            MOVWF       CNT         ;恢复结果字节数
            SUBWF       SADR,F      ;恢复结果首址
            RRF         TEMP3,F     ;置借位标志
            RETURN
           ENDIF          

⌨️ 快捷键说明

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