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

📄 dsmul.asm

📁 PIC子程序大全
💻 ASM
字号:
;********************DSMUL********************
;本程序实现双字节有符号数乘法。
;入口参数:被乘数在SOUH:SOU中,乘数在RLTH:RLT中。
;出口参数:结果在RLTH:RLT:SOUH:SOU中。
;占用资源:W,STATUS,020H,023H~02BH,两重堆栈。
;说明:     加载本文件的同时也加载了另外三个文件"DUADD.ASM","DSNEG.ASM",
;          "MSNEG.ASM",故用户在使用这个子程序时可直接调用,不必重新加载.

           IFNDEF       DSMUL1
            #DEFINE     DSMUL1
                        
DSMUL       MOVLW       .16
            MOVWF       CNT
            MOVF        SOUH,W
            XORWF       RLTH,W
            MOVWF       SADR        ;暂存结果符号
            BTFSC       SOUH,7
            CALL        DSNEG       ;被乘数取绝对值
            MOVF        SOU,W
            MOVWF       TEMP3
            MOVF        SOUH,W
            MOVWF       TEMP4
            CLRF        SOU         ;用于暂
            CLRF        SOUH        ;存
            CLRF        TEMP1       ;结
            CLRF        TEMP2       ;果 
            BTFSS       RLTH,7
            GOTO        LOOP5
            COMF        RLT,F
            COMF        RLTH,F
            INCF        RLT,F
            BTFSC       STATUS,Z      
            INCF        RLTH,F      ;乘数取绝对值            
LOOP5       RRF         TEMP4,F
            RRF         TEMP3,F     ;将乘数的某一位送到C中
            BTFSC       STATUS,C
            CALL        DUADD       ;将SOUH:SOU中的被乘数加上
            RRF         SOUH,F
            RRF         SOU,F
            RRF         TEMP2,F
            RRF         TEMP1,F     ;被乘数右移
            DECFSZ      CNT,F
            GOTO        LOOP5
            MOVF        SOUH,W
            MOVWF       RLTH
            MOVF        SOU,W
            MOVWF       RLT
            MOVF        TEMP2,W     ;保存结果 
            MOVWF       SOUH
            MOVF	TEMP1,W
            MOVWF       SOU
            BTFSS       SADR,7
            RETURN
            MOVLW       SOU
            MOVWF       SADR
            MOVLW       4
            MOVWF       CNT
            CALL        MSNEG
            RETURN
            INCLUDE     "DUADD.ASM"
            INCLUDE     "DSNEG.ASM"
            INCLUDE     "MSNEG.ASM"
           ENDIF         

⌨️ 快捷键说明

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