回复:关于ASCII码转浮点数的讨论

四书五经

  • 帖子

    762
  • 精华

    58
  • 被关注

    30

论坛等级:侠圣

注册时间:2005-12-23

普通 普通 如何晋级?

发布于 2009-09-16 16:15:18

0楼

我用STL写了一个程序,调试通过了,以下为源代码,有简单的注释.
变量说明如下:
LD30---用做指针,做间接寻址,临时变量
Sum_int---整数部分值,临时变量
Sum_Fra---小数部分值,临时变量
Sign---符号值(1,-1),临时变量
N---小数部分的除数
Err---输出错误标志,输出值
Real_val---输出浮点值
OPN DB 1
L P#0.0
T LD 30
//正符号判断
L DBB [LD 30]
L '-'
==I
L -1
T #Sign
JC lop6
L DBB [LD 30]
L '+'
==I
L 1
T #Sign
JC lop6
lop4: SET //错误处理
= #Err
BEU
//赋初值
lop6: L 0
T #Sum_int
T #LoopCount
T #Sum_Fra
L 0.000000e+000
T #Real_Val
lop2: L #LoopCount
INC 1
T #LoopCount
L 4
>I
JC lop3 //超过字符串最大值,循环结束
L P#1.0
L LD 30
+D
T LD 30
L DBB [LD 30]
L '.'
==I
JC lop3 //找到小数点
L DBB [LD 30]
L '0'
JC lop4 //<于‘0’,出错
L DBB [LD 30]
L '9'
>I
JC lop4 //大于‘9’,出错
L DBB [LD 30]
L '0'
-I
L #Sum_int
+I
T #Sum_int
L 10
*I
T #Sum_int
JU lop2
lop3: L #LoopCount
L 4
>I
JC lop9 //没有小数点,转计算最后值
L P#1.0
L LD 30
+D
T LD 30
L #LoopCount
INC 1
T #LoopCount
L 1
T #N
lop7: L DBB [LD 30]
L '0'
-I
L #Sum_Fra
+I
T #Sum_Fra

L 10
*I
T #Sum_Fra
L #N
L 10
*I
T #N
L P#1.0
L LD 30
+D
T LD 30
L #LoopCount
INC 1
T #LoopCount
L 4
<=I
JC lop7
lop9: L #Sum_int
ITD
DTR
L 1.000000e+001
/R //前面计算多乘了10
T LD 12
L #Sum_Fra
ITD
DTR
L 1.000000e+001
/R //前面计算多乘了10

L #N
ITD
DTR
/R //除以N,得到小数
L LD 12
+R //小数+整数
L #Sign
ITD
DTR
*R //乘以符号位
T #Real_Val
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54616条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。