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

📄 mbtbcd.asm

📁 PIC单片机的汇编源码合集,应用比较广泛,设计程序时可做子程序来用
💻 ASM
字号:
;********************MBTBCD********************
;本程序实现多字节二进制数转化为压缩BCD码(小于10字节)。
;入口参数:原二进制数地址在SADR中,字节数在CNT中,CNT+2个字节的结果在DADR中。
;出口参数:结果在指定RAM单元中,地址在SADR中,字节数在CNT中。
;占用资源:W,STATUS,020H,021H,023H,027H,028H,029H,02AH,两重堆栈。
;说    明: 1.原数据将被冲掉.
;          2.加载本文件的同时也加载了另外一个文件"MSHL.ASM",
;            故用户在使用这个子程序时可直接调用,不必重新加载.

           IFNDEF       MBTBCD1
            #DEFINE     MBTBCD1
                        
MBTBCD      MOVF        CNT,W
            MOVWF       TEMP2
            MOVWF       TEMP4
            MOVF        DADR,W
            MOVWF       FSR
            INCF        TEMP4,F
            INCF        TEMP4,F     ;得到结果字节数
LOOP31      CLRF        INDF        ;结果清0
            INCF        FSR,F
            DECFSZ      TEMP4,F
            GOTO        LOOP31
            MOVF        SADR,W
            MOVWF       TEMP3       ;保护SADR
            BCF         STATUS,C
            RLF         TEMP2,F
            RLF         TEMP2,F
            RLF         TEMP2,F     ;得到循环次数
LOOPC2      MOVF        TEMP3,W
            MOVWF       SADR
            CALL        MSHL        ;原二进制数左移,移出位在C中
            MOVF        DADR,W
            MOVWF       SADR
            INCF        CNT,F
            INCF        CNT,F
            CALL        MSHL        ;结果左移
            DECF        CNT,F       
            DECF        CNT,F       ;恢复原字节数
            DECFSZ      TEMP2,F
            GOTO        ADJDEC2
            INCF        CNT,F
            INCF        CNT,F
            RETURN                  ;整个子程序结束
ADJDEC2     MOVF        DADR,W
            MOVWF       FSR
            INCF        CNT,W
            MOVWF       TEMP4
            INCF        TEMP4,F     ;结果字节数
LOOP32      CALL        ADJBCD2     ;调整结果
            INCF        FSR,F
            DECFSZ      TEMP4,F
            GOTO        LOOP32
            GOTO        LOOPC2
;********************调整BCD********************
ADJBCD2     MOVLW       03H
            ADDWF       INDF,W      ;低四位加3
            MOVWF       TEMP1       ;暂存
            BTFSC       TEMP1,3     ;结果大于7,
            MOVWF       INDF        ;则存起来
            MOVLW       30H
            ADDWF       INDF,W      ;高四位加3
            MOVWF       TEMP1              
            BTFSC       TEMP1,7     ;结果大于7,
            MOVWF       INDF        ;则存起来
            RETURN
            INCLUDE     "MSHL.ASM"
           ENDIF

⌨️ 快捷键说明

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