300系列的數(shù)據(jù)轉(zhuǎn)換
112.95.251.214
發(fā)布于2014-04-14 18:11
51
0
標(biāo)簽:
有一塊dp總線的數(shù)字顯示表。表接受數(shù)據(jù)的區(qū)域是一個pqw,也就是在程序里往pqw里面輸入一個十進(jìn)制數(shù)據(jù)(這個是表的要求,而且顯示模式是pqw里面是xxxxx時候,表就會顯示xxx.xx,也就是說要顯示7.23,必須輸入723)但是表的數(shù)據(jù)是通過運(yùn)算得過來的,得到的值只能是di或者real類型,都是32位的數(shù)據(jù)。但是pqw只能接受16位!該怎么辦?可以用什么樣的轉(zhuǎn)換指令來完成?
佳答案
若是real:
1、先乘以100,
2、新的real取整(round取整為接近的整數(shù),若恰好位于兩個整數(shù)之間,取偶數(shù),trunc截尾取整,ceil向上取整,floor向下取整,floor與trunc有相似的地方,差異在于負(fù)數(shù),對于-12.1,floor為-13,而trunc為-12),取整結(jié)果均為雙整數(shù)
3、雙整數(shù)轉(zhuǎn)換成bcd碼,指令di_bcd
4、取bcd的低16位賦值給pqw*。即取高址區(qū)16位,如bcd碼md100取md102,傳送給pqw*
若是di
按照上述第三步開始。
指令本身可能出現(xiàn)溢出,但實(shí)際中會不會溢出,可以計算估計。