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

📄 flomul.asm

📁 PIC单片机的汇编源码合集,应用比较广泛,设计程序时可做子程序来用
💻 ASM
字号:
;********************FLOMUL********************
;本程序实现标准浮点数乘法。
;入口参数:原浮点数在ARGBH1:ARGBL1:EXP1和ARGBH2:ARGBL2:EXP2中。
;出口参数:结果在ARGBH1:ARGBL1:EXP1中。
;占用资源:W,STATUS,020H~02BH,三重堆栈。
;说    明: 1.加载本文件的同时也加载了另外2个文件"DUMUL.ASM","DUADD.ASM"
;            故用户在使用这2个子程序时可直接调用,不必重新加载.

           IFNDEF       FLOMUL1
            #DEFINE     FLOMUL1
    
            INCLUDE     "DUMUL.ASM"


FLOMUL      MOVLW       0C0H
            ANDWF       FPFLAGS,F
            MOVF        EXP1,W      ;检测是否有0
            BTFSS       STATUS,Z
            MOVF        EXP2,W
            BTFSC       STATUS,Z
            GOTO        RES024
MBNE0       MOVF        ARGBH1,W
            XORWF       ARGBH2,W
            MOVWF       SIGN        ;保存符号位
            MOVF        EXP1,W
            ADDWF       EXP2,F
            MOVLW       .127-1
            BTFSS       STATUS,C
            GOTO        MTUN
            SUBWF       EXP2,F
            BTFSC       STATUS,C
            GOTO        SETFOV      ;上溢标志
            GOTO        MOK
MTUN        SUBWF       EXP2,F
            BTFSS       STATUS,C
            GOTO        SETFUN
MOK         BSF         ARGBH1,MSB  ;最高位隐含的1
            BSF         ARGBH2,MSB
            CALL        DUMUL
            BTFSC       RLTH,MSB    ;检测是否需要规格化
            GOTO        MROUND
            RLF         SOUH,F
            RLF         RLT,F
            RLF         RLTH,F
            DECF        EXP2,F
MROUND      BTFSC       FPFLAGS,RND
            BTFSS       RLT,LSB
            GOTO        MULOK
            BTFSS       SOUH,MSB    ;如果保护位是1,则圆整
            GOTO        MULOK
            INCF        RLT,F
            BTFSC       STATUS,Z
            INCF        RLTH,F
            BTFSS       STATUS,Z    ;圆整导致进位?
            GOTO        MULOK
            RRF         ARGBH1,F    ;如果这样,则右移
            RRF         ARGBL1,F
            INCF        EXP2,F
            BTFSC       STATUS,Z    ;检测是否上溢
            GOTO        SETFOV  
MULOK       MOVF        RLT,W
            MOVWF       ARGBL1
            MOVF        RLTH,W
            MOVWF       ARGBH1
            MOVF        EXP2,W
            MOVWF       EXP1        ;调整出口
            BTFSS       SIGN,MSB
            BCF         ARGBH1,MSB  ;如果是正数则隐藏MSB
            RETLW       0
           ENDIF

⌨️ 快捷键说明

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