dcobcdtb.asm

来自「pic单片机常用的汇编程序,很有用的,分成各个小模块」· 汇编 代码 · 共 50 行

ASM
50
字号
;********************DCOBCDTB********************
;本程序实现双字节压缩BCD码转化为二进制数。
;入口参数:原BCD码数在SOUH:SOU中。
;出口参数:结果在SOUH:SOU中。
;占用资源:W,STATUS,024H,025H,028H,029H,02AH,两重堆栈。

           IFNDEF       DCOBCDTB1
            #DEFINE     DCOBCDTB1
                        
DCOBCDTB    CLRF        TEMP1       
            CLRF        TEMP2       ;暂存结果
            SWAPF       SOUH,W
            CALL        MUL10       ;结果=10*A
            MOVF        SOUH,W
            CALL        MUL10       ;10*(10*A+B)
            SWAPF       SOU,W
            CALL        MUL10       ;10*(10*(10*A+B)+C)
            MOVF        SOU,W
            ANDLW       0FH
            ADDWF       TEMP1,W
            MOVWF       SOU         ;出口
            BTFSC       STATUS,C
            INCF        TEMP2,F
            MOVF        TEMP2,W
            MOVWF       SOUH        ;出口
            RETLW       0   
;********************结果乘10子程序********************            
MUL10       ANDLW       0FH
            ADDWF       TEMP1,F     ;取出一个十进制位加到结果中
            BTFSC       STATUS,C
            INCF        TEMP2,F
            BCF         STATUS,C
            RLF         TEMP1,W     ;结果乘以2
            MOVWF       TEMP3
            RLF         TEMP2,W
            RLF         TEMP1,F
            RLF         TEMP2,F
            RLF         TEMP1,F
            RLF         TEMP2,F
            RLF         TEMP1,F       
            RLF         TEMP2,F     ;乘以8
            ADDWF       TEMP2,F
            MOVF        TEMP3,W
            ADDWF       TEMP1,F     ;完成乘10的操作
            BTFSC       STATUS,C
            INCF        TEMP2,F     ;本步操作不可能有进位
            RETLW       0
           ENDIF
                             

⌨️ 快捷键说明

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