chenhong
PLC+组态+VB
级别: 略有小成
精华主题: 0
发帖数量: 128 个
工控威望: 316 点
下载积分: 785 分
在线时间: 38(小时)
注册时间: 2014-03-11
最后登录: 2023-08-10
查看chenhong的 主题 / 回贴
楼主  发表于: 2015-07-03 08:25
[attachment=136950]
chenhong
PLC+组态+VB
级别: 略有小成
精华主题: 0
发帖数量: 128 个
工控威望: 316 点
下载积分: 785 分
在线时间: 38(小时)
注册时间: 2014-03-11
最后登录: 2023-08-10
查看chenhong的 主题 / 回贴
1楼  发表于: 2015-07-03 08:25
难道是数据超过上限了吗
chenhong
PLC+组态+VB
级别: 略有小成
精华主题: 0
发帖数量: 128 个
工控威望: 316 点
下载积分: 785 分
在线时间: 38(小时)
注册时间: 2014-03-11
最后登录: 2023-08-10
查看chenhong的 主题 / 回贴
2楼  发表于: 2015-07-03 08:31
改成32位的用DDIV后
、D7里面的数据又变了 [attachment=136951]
chenhong
PLC+组态+VB
级别: 略有小成
精华主题: 0
发帖数量: 128 个
工控威望: 316 点
下载积分: 785 分
在线时间: 38(小时)
注册时间: 2014-03-11
最后登录: 2023-08-10
查看chenhong的 主题 / 回贴
3楼  发表于: 2015-07-03 08:32
是D6不是D7
说错了
b1226397886
o傲雪狂风o
级别: 论坛先锋
精华主题: 0
发帖数量: 140 个
工控威望: 1679 点
下载积分: 6804 分
在线时间: 146(小时)
注册时间: 2013-03-14
最后登录: 2024-04-13
查看b1226397886的 主题 / 回贴
4楼  发表于: 2015-07-03 09:53
如果你要改32位,第一行的MUL也要改成DMUL,否则它会出错。

要么全是16位,要么全是32位。
mfjsx
专业非标自动化设备工程开发
级别: 家园常客
精华主题: 0
发帖数量: 799 个
工控威望: 746 点
下载积分: 934 分
在线时间: 180(小时)
注册时间: 2008-04-25
最后登录: 2024-04-12
查看mfjsx的 主题 / 回贴
5楼  发表于: 2015-07-03 10:54
请注意,
如果改为32位,
DDIV中的 D6这个数据是D6、D7两个作为1 个32位数据存贮。
为了我们能够继续有饭吃,一起努力的去探讨
ykykkhor
Best Regards,YK
级别: 略有小成
精华主题: 0
发帖数量: 259 个
工控威望: 308 点
下载积分: 135954 分
在线时间: 554(小时)
注册时间: 2009-07-30
最后登录: 2024-05-14
查看ykykkhor的 主题 / 回贴
6楼  发表于: 2015-07-03 11:18
32位与16位数据混合使用的逻辑问题

1) MUL D7 K1000 D106
  D7, K1000 是 16位元,  D106 是 32 位元

  (12500 x 1000 = 12,500,000)

2) DIV D106 D6 D201
  D106, D6 是 16位元,  D201 是 32 位元
  把D106换成 16位元, 仅剩下 -17376
[原本是 12,500,000 => Hex BEBC20, 换成 16位元仅剩下 Hex BC20 => -16376]

  (-17376 / 25 = -695)

3) MUL D6 K500 D7
  D6, K500 是 16位元,  D7 是 32 位元

  ( 25 x 500 = 12,500)
本帖最近评分记录:
  • 下载积分:+2(chenhong) 真诚感谢!
    东华数字
    级别: 家园常客
    精华主题: 0
    发帖数量: 347 个
    工控威望: 531 点
    下载积分: 8811 分
    在线时间: 238(小时)
    注册时间: 2015-05-07
    最后登录: 2018-06-11
    查看东华数字的 主题 / 回贴
    7楼  发表于: 2015-07-03 13:37
    一般我寫程式的習慣都會跳一個暫存器,譬如D1,3,5,7,9可以避免溢位發生