8051子程序(七) MCS-51单片机实用子程序库(七) MCS-51单片机实用子程序库 (25) 标号: FTOD 功能:格式化浮点数转换成双字节定点数 入口条件:格式化浮点操作数在[R0]中。 出口信息:OV=1时溢出,OV=0时转换成功:定点数的绝对值在[R0]中(双字节),数符 在位1FH中,F0=1 时为整数,CY=1时为一字节整数一字节小数,否则为纯小数。 影响资源:PSW、A、B、R2、R3、R4、位1FH 堆栈需求: 6字节 FTOD: LCALL MVR0 ;将[R0]传送到第一工作区 MOV A,R2 JZ FTD4 ;阶码为零,纯小数 JB ACC.7,FTD4;阶码为负,纯小数 SETB C SUBB A,#10H JC FTD1 SETB OV ;阶码大于16,溢出 RET FTD1: SETB C MOV A,R2 SUBB A,#8 ;阶码大于8否? JC FTD3 FTD2: MOV B,#10H ;阶码大于8,按双字节整数转换 LCALL FTD8 SETB F0 ;设立双字节整数标志 CLR C CLR OV RET FTD3: MOV B,#8 ;按一字节整数一字节小数转换 LCALL FTD8 SETB C ;设立一字节整数一字节小数标志 CLR F0 CLR OV RET FTD4: MOV B,#0 ;按纯小数转换 LCALL FTD8 CLR OV ;设立纯小数标志 CLR F0 CLR C RET FTD8: MOV A,R2 ;按规定的整数位数进行右规 CJNE A,B,FTD9 MOV A,R3 ;将双字节结果传送到[R0]中 MOV @R0,A INC R0 MOV A,R4 MOV @R0,A DEC R0 RET FTD9: CLR C LCALL RR1 ;右规一次 SJMP FTD8 (26) 标号: BTOF 功能:……