7383|7

73

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

浮点库使用使用方法。 [复制链接]

几天以来一直在用浮点库做验证,感觉不错
现在把遇到的问题和使用时要注意的事情说一下
1. 你如果是二进制数字,比如说是从AD采样过来的数据直接用于计算的,应该先把二进制转换浮点形式,你可以调用CNV04.S43里面的子程序,把二进制转换做浮点形式。
2. 浮点数的存储形式是,高16位存在低地址里面,低16位存在高地址里面
比如说十进制浮点数1.5,用浮点库表示是80400000。你要保存这个数据的时候,比如要保存在
200--203h这四个字节里面。要把8040H存在200H和201H这个地址里面,把0000H存在202h和230H里面。因为浮点库传递的是地址,它只把存放浮点数高位16地址传递给子程序。即把200H传递给子程序。子程序会默认把存放浮点数的低16位地址当作200H+2=202H。千万不要把低16位浮点放在1FEH和1FFh里面,不然就错了
3. CNV04.S43是转换整型的程序。比如说你的浮点数80400000h,表示成十进制是1.5,用CNV04.S43中的子程序转换时,只能转换出来整数1,0.5没有办法转换
要想显示小数点以后的数字,可以放大,比如说×10000000,以后你得到的整数就可以包括很多小数部分了
另外一个方法是,你的浮点数转换成BCD码后,小数部分被省略,再把BCD转换成浮点,这样再做减法,得到的就是小数部分了,再转换BCD后就很好了


给个简单的减法例子
X-Y=Z
比如说X=84000000H(浮点形式)
Y=83121200H(浮点形式)
MOV #8400H,290H
MOV #0H,292H
MOV #8312H,296H
MOV #1200H,297H
CALL #F_SU

F_SU
CALL #FLT_S×× ; 寄存器全部压栈保护(略)
SUB #(ML/8)+1,SP ; C05CH
MOV #290H,RPRES ; 将290h存放的是浮点的MSB
MOV #296H,RPARG ; 将VAL2的高字地址给RPARG
CALL #FLT_SUB
MOV 0(SP),RESULT ; 将结果保存在RESULT中 C06AH
MOV 2(SP),(RESULT+2) ;
ADD #(ML/8)+1,SP ;
CALL #FLT_REC ; 寄存器全部出栈(略)
RET

最新回复

现在还有几个人用汇编写程序呀?一般不是都上操作系统嘛  详情 回复 发表于 2009-5-3 19:50
 
点赞 关注

回复
举报

81

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
希望能对使用汇编,需要使用浮点库的朋友能有点帮助
见笑了!
 
 

回复

99

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
顶!
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

4
 
谢谢版主
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

5
 
哇,很不错,我来逐一试一试,看看有没有更好解决之道。
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

6
 
在汇编中调用已问题不大,但在C中应该怎么调用浮点库呢,请版主为大家提供一下例程吧,那位高手指点指点吧??????刚刚用C
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

7
 
\(^o^)/YES!
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

8
 
现在还有几个人用汇编写程序呀?一般不是都上操作系统嘛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表