300系列的数据转换
112.95.251.214
发布于2014-04-14 18:11
51
0
标签:
有一块dp总线的数字显示表。表接受数据的区域是一个pqw,也就是在程序里往pqw里面输入一个十进制数据(这个是表的要求,而且显示模式是pqw里面是xxxxx时候,表就会显示xxx.xx,也就是说要显示7.23,必须输入723)但是表的数据是通过运算得过来的,得到的值只能是di或者real类型,都是32位的数据。但是pqw只能接受16位!该怎么办?可以用什么样的转换指令来完成?
佳答案
若是real:
1、先乘以100,
2、新的real取整(round取整为接近的整数,若恰好位于两个整数之间,取偶数,trunc截尾取整,ceil向上取整,floor向下取整,floor与trunc有相似的地方,差异在于负数,对于-12.1,floor为-13,而trunc为-12),取整结果均为双整数
3、双整数转换成bcd码,指令di_bcd
4、取bcd的低16位赋值给pqw*。即取高址区16位,如bcd码md100取md102,传送给pqw*
若是di
按照上述第三步开始。
指令本身可能出现溢出,但实际中会不会溢出,可以计算估计。