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

📄 mcobcdtb.asm

📁 PIC单片机的汇编源码合集,应用比较广泛,设计程序时可做子程序来用
💻 ASM
字号:
;********************MCOBCDTB********************
;本程序实现多字节压缩BCD码转化为二进制数。
;入口参数:原BCD码数地址在SADR中,字节数在CNT中,相同字节数的结果存放地址在DADR中。
;出口参数:结果在指定地址中,字节数在CNT中。
;占用资源:W,FSR,STATUS,020H,022H,023H,028H,029H,02AH,02BH,两重堆栈。

           IFNDEF       MCOBCDTB1
            #DEFINE     MCOBCDTB1                        
MCOBCDTB    MOVF        CNT,W
            MOVWF       TEMP3
            MOVF        DADR,W
            MOVWF       FSR         
LOOP23      CLRF        INDF        ;结果清0
            INCF        FSR,F
            DECFSZ      TEMP3,F
            GOTO        LOOP23
            MOVF        CNT,W
            MOVWF       TEMP3       ;重新找回字节数
            DECF        CNT,W
            ADDWF       SADR,F      ;得到高位字节地址
LOOP26      MOVF        SADR,W
            MOVWF       FSR
            SWAPF       INDF,W
            CALL        MUL_10       
            MOVF        SADR,W
            MOVWF       FSR
            MOVF        INDF,W
            CALL        MUL_10       
            DECF        SADR,F
            DECFSZ      TEMP3,F
            GOTO        LOOP26
            MOVF        DADR,W
            MOVWF       SADR        ;出口
            RETURN   
;********************结果乘10子程序********************            
MUL_10      MOVWF       TEMP1
            MOVLW       0FH
            ANDWF       TEMP1,F     ;得到一位十进制数
            MOVF        CNT,W
            MOVWF       TEMP2
            MOVF        DADR,W
            MOVWF       FSR
            CLRF        TEMP4
LOOP25      RLF         TEMP4,F     ;TEMP4作为移出位缓存区
            RLF         INDF,F
            RLF         TEMP4,F
            MOVF        INDF,W      ;结果乘以2暂存到W
            RLF         INDF,F
            RLF         TEMP4,F
            RLF         INDF,F
            RLF         TEMP4,F     ;乘以8
            BTFSS       STATUS,C    ;上次有无进位
            GOTO        NOC7
            INCF        INDF,F
            BTFSC       STATUS,Z
            BSF         TEMP4,7     ;加1又产生进位
            BTFSS       STATUS,Z
NOC7        BCF         TEMP4,7
            ADDWF       INDF,F
            RLF         TEMP4,F     
            BTFSC       STATUS,C
            BSF         TEMP4,0     ;保存进位
            SWAPF       TEMP4,F     ;有用位移到顶端
            INCF        FSR,F
            DECFSZ      TEMP2,F
            GOTO        LOOP25      ;完成乘10的操作
            MOVF        CNT,W
            MOVWF       TEMP2       ;TEMP2作为计数器
            MOVF        DADR,W
            MOVWF       FSR
            MOVF        TEMP1,W
            ADDWF       INDF,F      ;取出一个十进制位加到结果中
            INCF        FSR,F
            DECF        TEMP2,F
            MOVLW       1
LOOP24      BTFSC       STATUS,C
            ADDWF       INDF,F
            INCF        FSR,F
            DECFSZ      TEMP2,F
            GOTO        LOOP24
            RETURN
                             
           ENDIF

⌨️ 快捷键说明

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