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

📄 dcobcdmul.asm

📁 PIC单片机的汇编源码合集,应用比较广泛,设计程序时可做子程序来用
💻 ASM
字号:
;********************DCOBCDMUL********************
;本程序实现双字节压缩BCD码乘法。
;入口参数:被乘数在SOUH:SOU中,乘数在RLTH:RLT中。
;出口参数:结果在RLTH:RLT:SOUH:SOU中。
;占用资源:W,STATUS,FSR,020H,023H~02BH,三重堆栈。
;说    明: 1.加载本文件的同时也加载了另外2个文件"DCOBCDTB.ASM","DUMUL.ASM",
;           故用户在使用这2个子程序时可直接调用,不必重新加载.

           IFNDEF      DCOBCDMUL1
            #DEFINE    DCOBCDMUL1
                        
DCOBCDMUL      
            BANKSEL     SOU
            CALL        DCOBCDTB    ;被乘数转化为二进制数
            MOVF        RLT,W
            MOVWF       TEMP3
            MOVF        RLTH,W
            MOVWF       TEMP4       ;暂存乘数          
            MOVF        SOU,W
            MOVWF       RLT
            MOVF        SOUH,W
            MOVWF       RLTH        ;保存转化后的被乘数        
            MOVF        TEMP3,W
            MOVWF       SOU
            MOVF        TEMP4,W
            MOVWF       SOUH        ;待转化的乘数
            CALL        DCOBCDTB    ;乘数转化为二进制
            CALL        DUMUL       ;二进制乘法
;二进制结果转化为BCD码     
            CLRF        TEMP1
            CLRF        TEMP2
            CLRF        TEMP3
            CLRF        TEMP4
            BCF         STATUS,C
            MOVLW       .32
            MOVWF       CNT
LOOPC2      RLF         SOU,F
            RLF         SOUH,F
            RLF         RLT,F
            RLF         RLTH,F
            RLF         TEMP1,F
            RLF         TEMP2,F
            RLF         TEMP3,F
            RLF         TEMP4,F
            DECFSZ      CNT,F
            GOTO        ADJDEC3         
            MOVF        TEMP1,W
            MOVWF       SOU
            MOVF        TEMP2,W
            MOVWF       SOUH
            MOVF        TEMP3,W
            MOVWF       RLT
            MOVF        TEMP4,W
            MOVWF       RLTH        ;结果传递
            RETLW       0           ;整个子程序结束
ADJDEC3     MOVLW       TEMP1
            MOVWF       FSR
            CALL        ADJBCD3     ;调整TEMP1
            MOVLW       TEMP2
            MOVWF       FSR
            CALL        ADJBCD3     ;调整TEMP2
            MOVLW       TEMP3
            MOVWF       FSR
            CALL        ADJBCD3     ;调整TEMP3
            MOVLW       TEMP4
            MOVWF       FSR
            CALL        ADJBCD3     ;调整TEMP4
            GOTO        LOOPC2
;********************调整BCD********************
ADJBCD3     MOVLW       03H
            ADDWF       INDF,W      ;低四位加3
            MOVWF       SADR        ;暂存
            BTFSC       SADR,3      ;结果大于7,
            MOVWF       INDF        ;则存起来
            MOVLW       30H
            ADDWF       INDF,W      ;高四位加3
            MOVWF       SADR            
            BTFSC       SADR,7      ;结果大于7,
            MOVWF       INDF        ;则存起来                        
            RETLW       0
            INCLUDE     "DCOBCDTB.ASM"
            INCLUDE     "DUMUL.ASM"
           ENDIF
          

⌨️ 快捷键说明

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