现在您的位置:首页-技术中心-51浮点运算程序范例帮助

_CLOCK_
电子管感应加热设备
电子管高频焊管设备

电子管高频热处理设备

电子管超音频加热设备
电子管烤消加热设备
微机控制交流调压设备
焊管生产线常规流程
固态感应加热设备
IGBT超音频加热设备
IGBT中频加热设备
MOSFET高频加热设备
小功率高频加热设备
可控硅感应加热设备
可控硅中频熔炼设备
可控硅中频透热设备
可控硅中频淬火设备
电机调速设备
可控硅直流调速设备
欧陆直流调速设备
交流变频调速设备
设备水制冷循环系统
微机控制水制冷系统
水-水冷却系统
风-水冷却系统
其 他 产 品
微机控制定尺飞锯
高、中频淬火机床
微机控制稳压电源
技术中心
电子电路设计软件
单片机开发软件
单片机程序范例
电子管资料查询
集成电路资料查询
常用工具软件
技术文章
 
 
1、双字节定点操作数:用 [R0] 或 [R1] 来表示存放在由 R0 或 R1 指示的连续单元中的数据,地址小的单元存放高字节。如果 [R0]=1234H ,若 (R0)=30H ,则 (30H)=12H , (31H)=34H 。
 
 2、二进制浮点操作数:用三个字节表示,第一个字节的最高位为数符,其余七位为 阶码(补码形式),第二字节为尾数的高字节,第三字节为尾数的低字节,尾数用双字节 纯小数(原码)来表示。当尾数的最高位为1时,便称为规格化浮点数,简称操作数。在 程序说明中,也用 [R0] 或 [R1] 来表示 R0 或 R1 指示的浮点操作数,例如:当 [R0]=-6.000 时, 则二进制浮点数表示为 83C000H 。若 (R0)=30H ,则(30H)=83H,(31H)=0C0H,(32H)=00H 。
 
 3、十进制浮点操作数:用三个字节表示,第一个字节的最高位为数符,其余七位为 阶码(二进制补码形式),第二字节为尾数的高字节,第三字节为尾数的低字节,尾数用 双字节BCD码纯小数(原码)来表示。当十进制数的绝对值大于1时,阶码就等于整数 部分的位数,如 876.5 的阶码是 03H , -876.5 的阶码是 83H ;当十进制数的绝对值小于 1 时,阶码就等于 80H 减去小数点后面零的个数,例如 0.00382 的阶码是 7EH , -0.00382 的阶码是 0FEH 。在程序说明中,用 [R0] 或 [R1] 来表示 R0 或 R1 指示的十进制浮点操作数。例如有一个十进制浮点操作数存放在 30H 、 31H 、 32H 中,数值是 -0.07315 ,即 -0.7315 乘以 10 的 -1 次方,则 (30H)=0FFH , 31H=73H , (32H)=15H 。若用 [R0] 来指向它,则应使 (R0)=30H 。
 
 4、运算精度:单次定点运算精度为结果最低位的当量值;单次二进制浮点算术运算的精度优于十万分之三;单次二进制浮点超越函数运算的精度优于万分之一;BCD码浮点数本身的精度比较低(万分之一到千分之一),不宜作为运算的操作数,仅用于输入或输出时的数制转换。不管那种数据格式,随着连续运算的次数增加,精度都会下降。
 
 5、工作区:数据工作区固定在 A 、 B 、 R2 ~ R7 ,数符或标志工作区固定在 PSW 和 23H 单元 ( 位 1CH ~ 1FH) 。在浮点系统中, R2 、 R3 、 R4 和位 1FH 为第一工作区, R5 、 R6 、 R7 和位 1EH为第二工作区。用户只要不在工作区中存放无关的或非消耗性的信息,程序就具有较好的透明性。
 
 6、子程序调用范例:由于本程序库特别注意了各子程序接口的相容性,很容易采用积木方式(或流水线方式)完成一个公式的计算。以浮点运算为例:
计算 y = Ln √ | Sin (ab/c+d) |
已知: a=-123.4 ; b=0.7577 ; c=56.34 ; d=1.276 ; 它们分别存放在 30H 、 33H 、 36H 、 39H 开始的连续三个单元中。用BCD码浮点数表示时,分别为a=831234H;b=007577H;c=025634H;d=011276H 。
求解过程:通过调用BTOF子程序,将各变量转换成二进制浮点操作数,再进行各种运算,最后调用FTOB子程序,还原成十进制形式,供输出使用。程序如下:
TEST: MOV R0,#39H ;指向BCD码浮点操作数d
LCALL BTOF ;将其转换成二进制浮点操作数
MOV R0,#36H ;指向BCD码浮点操作数c
LCALL BTOF ;将其转换成二进制浮点操作数
MOV R0,#33H ;指向BCD码浮点操作数b
LCALL BTOF ;将其转换成二进制浮点操作数
MOV R0,#30H ;指向BCD码浮点操作数a
LCALL BTOF ;将其转换成二进制浮点操作数
MOV R1,#33H ;指向二进制浮点操作数b
LCALL FMUL ;进行浮点乘法运算
MOV R1,#36H ;指向二进制浮点操作数c
LCALL FDIV ;进行浮点除法运算
MOV R1,#39H ;指向二进制浮点操作数d
LCALL FADD ;进行浮点加法运算
LCALL FSIN ;进行浮点正弦运算
LCALL FABS ;进行浮点绝对值运算
LCALL FSQR ;进行浮点开平方运算
LCALL FLN ;进行浮点对数运算
LCALL FTOB ;将结果转换成BCD码浮点数
STOP: LJMP STOP
END
运行结果, [R0]=804915H ,即y =-0.4915 ,比较精确的结果应该是 -0.491437 。
 






 
 
 
 
首 页电子管类产品固态类产品可控硅中频设备交直流调速设备水冷却设备稳压电源其他产品技术中心
保定市汉浮电气设备有限公司
地址:保定市钻石街110号 邮编:071051
电话:0312-2260936 13803266367 传真:0312-3033993
邮箱:hanfugpw@vip.sina.com