flonrm.asm

来自「微芯公司的PIC子程序库及运算平台」· 汇编 代码 · 共 35 行

ASM
35
字号
;********************FLONRM********************
;本程序实现非标准浮点数左规格式化。
;入口参数:原浮点数在ARGBH1:ARGBL1:EXP1中。
;出口参数:结果在ARGBH1:ARGBL1:EXP1中。
;占用资源:W,STATUS,020H,021H,023H,024H,025H,029H,一重堆栈。

           IFNDEF       FLONRM1 
            #DEFINE     FLONRM1

FLONRM      MOVLW       0C0H
            ANDWF       FPFLAGS,F
            CLRF        TEMP2       ;指数减少量清0
            MOVF        ARGBH1,W    
            BTFSS       STATUS,Z    ;尾数高字节为0吗?
            GOTO        NORM2424
            MOVF        ARGBL1,W    ;左移8位
            MOVWF       ARGBH1
            BTFSC       STATUS,Z    ;结果为0吗?
            GOTO        RES024
            CLRF        ARGBL1
            BSF         TEMP2,3
NORM2424    MOVF        TEMP2,W
            SUBWF       EXP1,F
            BTFSS       STATUS,Z
            BTFSS       STATUS,C
            GOTO        SETFUN
            BCF         STATUS,C    ;清除进位位
NORM2424A   BTFSC       ARGBH1,MSB  ;如果MSB=1,格式化完成
            GOTO        FIXSIGN24
            RLF         ARGBL1,F    ;否则,尾数左移,指数减1
            RLF         ARGBH1,F    
            DECFSZ      EXP1,F
            GOTO        NORM2424A
            GOTO        SETFUN      ;如果EXP1=0,则发生下溢
           ENDIF

⌨️ 快捷键说明

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