您的位置:首页单片机PIC单片机
内容搜索:
阅读内容
背景:#EDF0F5 #FAFBE6 #FFF2E2 #FDE6E0 #F3FFE1 #DAFAF3 #EAEAEF 默认  

PIC单片机子程序-单字节 双字节的乘法

[日期:2008-01-29 ] [来源:东哥开发网(www.picavr.com) 作者:佚名] [字体: (投递新闻)

;********************MUMUL********************
;本程序实现多字节无符号数乘法。
;入口参数:被乘数地址在SADR中,乘数地址在DADR中,字节数在CNT中(小于32字节),结果
;          地址在SADRH中。
;出口参数:结果在指定单元中,地址在SADR中,字节数在CNT中。
;占用资源:W,FSR,STATUS,020H~023H,025H~02BH,两重堆栈。
;说明:     1.结果与被乘数所占用的RAM单元不要重合
;          2.加载本文件的同时也加载了另外三个文件"MROR.ASM","MSHR.ASM",
;           "MUADD.ASM",故用户在使用这个子程序时可直接调用,不必重新加载.

           IFNDEF       MUMUL1
            #DEFINE     MUMUL1

MUMUL       MOVF        CNT,W
            MOVWF       TEMP4
            MOVWF       TEMP3       ;TEMP3作为计数器
            MOVF        SADR,W
            MOVWF       SOUH        ;SOUH保护被乘数地址
            MOVF        SADRH,W
            MOVWF       RLT         ;RLT存结果地址
            ADDWF       CNT,W
            MOVWF       SADRH       ;SADRH存储结果中间位地址
            MOVF        DADR,W
            MOVWF       RLTH        ;RLTH存储乘数地址
            BCF         STATUS,C
            RLF         TEMP3,F
            RLF         TEMP3,F
            RLF         TEMP3,F     ;字节数乘以8得到位数
            MOVF        SADRH,W
            MOVWF       FSR
LOOP19      CLRF        INDF        ;结果清0
            INCF        FSR,F
            DECFSZ      TEMP4,F
            GOTO        LOOP19
LOOP20      CALL        MROR        ;被乘数循环右移
            BTFSS       STATUS,C
            GOTO        NOC6
            MOVF        SADRH,W
            MOVWF       SADR
            MOVF        RLTH,W
            MOVWF       DADR
            CALL        MUADD       ;乘数加到结果中
NOC6        MOVF        RLT,W
            MOVWF       SADR
            RLF         TEMP4,F     ;
            BCF         STATUS,C
            RLF         CNT,F       ;
            RRF         TEMP4,F     ;得到结果字节数并保护C
            CALL        MSHR        ;结果非循环右移
            BCF         STATUS,C
            RRF         CNT,F       ;恢复字节数
            MOVF        SOUH,W
            MOVWF       SADR        ;恢复被乘数地址
            DECFSZ      TEMP3,F
            GOTO        LOOP20
            MOVF        RLT,W
            MOVWF       SADR
            RETURN
            INCLUDE     "MROR.ASM"
            INCLUDE     "MSHR.ASM"
            INCLUDE     "MUADD.ASM"
           ENDIF

上一页123456789..12下一页  GO
阅读:
录入:JETTA

推荐 】 【 打印
本文评论
      全部评论
发表评论


点评: 字数
姓名:
站长推荐