压缩BCD编码浮点数:速度优化与资源管理

1 下载量 70 浏览量 更新于2024-08-30 收藏 56KB PDF 举报
本资源是一份针对单片机与DSP系统设计的浮点数转换为压缩BCD码的程序代码。该程序的主要目标是提高执行速度和减少程序代码量,适用于资源有限的环境。以下是关键知识点的详细说明: 1. **浮点数处理**: 浮点数被转换为压缩BCD(二进制编码十进制)码,这是一种将浮点数的整数部分和小数部分分开存储的方法。浮点数首先被判断其符号,正数位7:0为0,负数位7:0为1。接下来,位6:0表示小数点前的位数,而位5:0表示小数点后0的位数。这种编码方式使得有效位仅为7位,占用3个半字节(即2、3、4字节),其中最后一个字节通常废弃。 2. **程序资源使用**: 该程序使用了特定的寄存器和堆栈空间:PSW(程序状态字寄存器)、A、B、DPTR(数据指针)、R0-R7(通用寄存器)以及SP(堆栈指针)深度6。内存中RAM被预留了5个字节用于存储转换后的数据。 3. **编程语言与工具**: 代码是用C语言编写的,并通过Keil编译器实现。C51语言是程序的基础,作者陈远征在研究C51的不足后,开发了这个浮点数处理函数`ftod`,并利用了Keil的FPMUL子程序来加速计算。 4. **程序结构**: C语言版本的`ftod`函数接受一个浮点数`i`作为输入,将其转换后存储在`cyz`数组中。汇编版本的`_FTOD`函数则负责实际的浮点数到压缩BCD码的转换,它接收参数并通过R4-R7传递。程序流程包括判断数符、取绝对值、存储BCD码等步骤。 5. **时间背景**: 这个程序是在2003年5月8日发布,体现了当时作者对快速执行和紧凑代码的追求,以及对汇编语言和C51深入理解的背景。 6. **版权声明**: 作者强调了在转发或使用该程序时,应保留源代码和相关信息,以尊重原创性和知识产权。 综上,这个资源提供了一个实用的单片机与DSP系统中浮点数到压缩BCD编码的转换方案,对于需要高效处理浮点数应用的开发者来说,具有一定的参考价值。