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

📄 flotds.asm

📁 PIC单片机的汇编源码合集,应用比较广泛,设计程序时可做子程序来用
💻 ASM
字号:
;********************FLOTDS********************
;本程序实现规格化浮点数转化为双字节有符号二进制整数。
;入口参数:原浮点数在ARGBH1:ARGBL1:EXP1中。
;出口参数:补码结果在SOUH:SOU中。
;占用资源:W,STATUS,020H,021H,023H,024H,025H,一重堆栈。

           IFNDEF       FLOTDS1
            #DEFINE     FLOTDS1
FLOTDS      MOVLW       0C0H
            ANDWF       FPFLAGS,F
            MOVF        ARGBH1,W    ;保存符号位
            MOVWF       SIGN
            BSF         ARGBH1,MSB  ;最高位隐含的"1"
            MOVLW       .127+.15    ;从指数中去掉偏移量
            SUBWF       EXP1,F
            BTFSC       STATUS,C
            GOTO        SETIOV
            COMF        EXP1,F
            INCF        EXP1,F
            MOVLW       8           ;若EXP1 >= 8,则右移一个字节
            SUBWF       EXP1,W
            BTFSS       STATUS,C
            GOTO        TSHIFT
            MOVWF       EXP1
            RLF         ARGBL1,F    ;得到保护位
            MOVF        ARGBH1,W
            MOVWF       ARGBL1
            CLRF        ARGBH1
            MOVLW       8           ;若仍有EXP1>=8,再右移一个字节
            SUBWF       EXP1,W
            BTFSS       STATUS,C
            GOTO        TSHIFT
            MOVWF       EXP1
            RLF         ARGBL1,F    ;得到保护位
            CLRF        ARGBL1
            MOVF        EXP1,W
            BTFSS       STATUS,Z
            BCF         STATUS,C
            GOTO        SHIFTK
TSHIFT      MOVF        EXP1,W      ;若EXP1 = 0,则移位结束
            BTFSC       STATUS,Z
            GOTO        SHIFTK
SHIFT       BCF         STATUS,C
            RRF         ARGBH1,F    ;右移EXP1位
            RRF         ARGBL1,F
            DECFSZ      EXP1,F
            GOTO        SHIFT
SHIFTK      BTFSC       FPFLAGS,RND
            BTFSS       ARGBL1,LSB
            GOTO        INTK
            BTFSS       STATUS,C    ;若保护位为1,则结果加1
            GOTO        INTK
            INCF        ARGBL1,F
            BTFSC       STATUS,Z
            INCF        ARGBH1,F
            BTFSC       ARGBH1,MSB  ;检测是否上溢
            GOTO        SETIOV
INTK        BTFSS       SIGN,MSB    ;负数取反
            RETLW       0
            COMF        ARGBL1,F
            COMF        ARGBH1,F
            INCF        ARGBL1,F
            BTFSC       STATUS,Z
            INCF        ARGBH1,F
            RETLW       0

          ENDIF

⌨️ 快捷键说明

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