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

📄 mcobcdadd.asm

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

           IFNDEF       MCOBCDADD1
            #DEFINE     MCOBCDADD1

MCOBCDADD   CLRF        TEMP3       ;进位位清零
            MOVF        SADR,W
            MOVWF       TEMP2       ;保存结果首地址
NEXT3       MOVF        DADR,W
            MOVWF       FSR
            MOVF        INDF,W
            MOVWF       TEMP1       ;暂存加数
            MOVF        SADR,W
            MOVWF       FSR
            MOVF        TEMP1,W
            ADDWF       INDF,F
            RLF         TEMP3,F     ;保存进位
            BTFSS       TEMP3,1     ;将低字
            GOTO        NOCY1       ;节送来的
            INCF        INDF,F      ;进位加上
            BTFSC       STATUS,Z    ;并判断
            BSF         TEMP3,0     ;加的过程中
            MOVLW	0FH         ;是否又产生
            ANDWF	INDF,W      ;了进位
            BTFSC       STATUS,Z
            GOTO        ADJUST1
NOCY1       BTFSC       STATUS,DC   ;DC = 0 ?
            GOTO        ADJUST1     ;调整LSD
            MOVLW       6
            ADDWF       INDF,F      ;通过加6检测是否 LSD > 9 
            BTFSC       STATUS,C
            BSF         TEMP3,0
            BTFSS       STATUS,DC   ;检查半进位
            SUBWF       INDF,F      ; LSD < 9 ,恢复原值
            GOTO        OVER4
ADJUST1     MOVLW       6
            ADDWF       INDF,F
OVER4       MOVLW       60H         ;MSD加6
            ADDWF       INDF,F
            BTFSC       STATUS,C
            GOTO        OVER5
            BTFSS       TEMP3,0
            SUBWF       INDF,F
            GOTO        DONE2
OVER5       BSF         TEMP3,0
DONE2       INCF        DADR,F
            INCF        SADR,F
            DECFSZ      CNT,F
            GOTO        NEXT3
            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 + -