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

📄 mdcbtbcd.asm

📁 PIC单片机的汇编源码合集,应用比较广泛,设计程序时可做子程序来用
💻 ASM
字号:
;********************MDCBTBCD********************
;本程序实现多字节二进制小数转化为BCD码小数。
;入口参数:原二进制数地址在SADR中,字节数在CNT中,结果存放地址在DADR中,结果字
;          节数在W中。
;出口参数:结果在指定单元中,地址在SADR中,字节数在CNT中。
;占用资源:W,FSR,STATUS,020H,022H,023H,027H~02BH,两重堆栈。
;说    明: 程序执行后,原数据丢失。

           IFNDEF       MDCBTBCD1
            #DEFINE     MDCBTBCD1

MDCBTBCD    MOVWF       TEMP3       ;作为循环计数器
            MOVWF       RLTH        ;存放结果字节数
            ADDWF       DADR,F
            DECF        DADR,F      ;得到结果最高位地址
NEXT15      CALL        MUL10_2     ;乘10
            SWAPF       TEMP4,W     ;TEMP4为转化结果
            MOVWF       TEMP1       ;暂存到TEMP1
            CALL        MUL10_2
            MOVF        DADR,W
            MOVWF       FSR
            MOVF        TEMP4,W
            IORWF       TEMP1,W
            MOVWF       INDF
            DECF        DADR,F
            DECFSZ      TEMP3,F
            GOTO        NEXT15
            INCF        DADR,W
            MOVWF       SADR
            MOVF        RLTH,W
            MOVWF       CNT         ;恢复结果字节数
            RETURN
;******乘10子程序******
MUL10_2     MOVF        CNT,W
            MOVWF       TEMP2
            MOVF        SADR,W
            MOVWF       FSR
            CLRF        TEMP4
LOOP41      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        NOC9
            INCF        INDF,F
            BTFSC       STATUS,Z
            BSF         TEMP4,7     ;加1又产生进位
            BTFSS       STATUS,Z
NOC9        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        LOOP41      ;完成乘10的操作
            MOVLW       0F0H          
            ANDWF       TEMP4,F
            SWAPF	TEMP4,F
            BCF         STATUS,C
            RRF         TEMP4,F
            BTFSC	TEMP4,2
            INCF	TEMP4,F      
            BTFSC	STATUS,C
            INCF        TEMP4,F     ;得到该位BCD码
            RETURN
           ENDIF                  

⌨️ 快捷键说明

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