syking1234
级别: 略有小成
精华主题: 0
发帖数量: 185 个
工控威望: 415 点
下载积分: 879 分
在线时间: 182(小时)
注册时间: 2009-01-01
最后登录: 2024-08-03
查看syking1234的 主题 / 回贴
楼主  发表于: 2012-11-18 22:52



请教这个D7274为什么无法传送数据?
而同样的MIAN1里的D10014却可以

说明D8000、D8006、D5548均为十进制3位整数

这个数据运算我有点糊涂,也看过资料
D*好像保存结果的是4个16位软元件地址,DMOV只能传送32位,64位的高位地址怎么办???
我是用模拟器反复试验,允许没问题,RUN档



求解!!!!急1!!!!
老大,也进来帮我下,谢谢!!!
数学没学好啊,丢人啊

数据计算2.rar (12 K) 下载次数:28
[ 此帖被syking1234在2013-01-04 20:38重新编辑 ]
sjm213
有小知识,无大学问。
级别: 论坛版主

精华主题: 7 篇
发帖数量: 5212 个
工控威望: 7436 点
下载积分: 159003 分
在线时间: 3172(小时)
注册时间: 2007-11-21
最后登录: 2024-12-24
查看sjm213的 主题 / 回贴
1楼  发表于: 2012-11-19 13:42
红框中标出的32位乘法指令,其结果存储地址占用64位,故[D7275  D7274]都在该指令影响下将MOV得到的值覆盖掉。

sjm213
有小知识,无大学问。
级别: 论坛版主

精华主题: 7 篇
发帖数量: 5212 个
工控威望: 7436 点
下载积分: 159003 分
在线时间: 3172(小时)
注册时间: 2007-11-21
最后登录: 2024-12-24
查看sjm213的 主题 / 回贴
2楼  发表于: 2012-11-19 17:52
因为程序中D5844在D5842后面使用到,这样使用的效果就是D5550*K1000的结果,将D5548*K-10000的结果覆盖掉了,却成了你需要的结果,所以看起来是正常的。
你可以将D5550~D10012这两段程序写到D5548这一段程序上面。
就会发现虽然D10012的值虽然还是你要的正确的值,但D5844的值却是0(如果不是说明D5548的值太大,乘法运算之后超出32位储存范围,D5844内有储存的数据了)。
sjm213
有小知识,无大学问。
级别: 论坛版主

精华主题: 7 篇
发帖数量: 5212 个
工控威望: 7436 点
下载积分: 159003 分
在线时间: 3172(小时)
注册时间: 2007-11-21
最后登录: 2024-12-24
查看sjm213的 主题 / 回贴
3楼  发表于: 2012-11-20 22:06
掉换过后,D5844显示的数跟D5548   K-10000的数值有关。
但你放心,虽然显示的数据你看着有问题,但实际运算结果是不会错的。