• «
  • 1
  • 2
  • »
  • Pages: 1/2     Go
小蜜蜂
你让我滚,我滚了。你让我回来,对不起,滚远了...
级别: 论坛先锋

精华主题: 0
发帖数量: 1402 个
工控威望: 1508 点
下载积分: 13268 分
在线时间: 2207(小时)
注册时间: 2008-03-19
最后登录: 2024-12-28
查看小蜜蜂的 主题 / 回贴
楼主  发表于: 2008-11-08 15:17
MUL   D10   K80   D20
DIV   D20   D30   D40
MOV  D40   D50

求助大家,第一行的乘法中D10乘以K80是生成D20还是D20  D21两个?第二行的要用DIV还是DDIV?第三行要用MOV还是DMOV呢?拜托大家了,谢谢!
zxc6688
工业自动化是我们的目标
级别: 略有小成
精华主题: 1 篇
发帖数量: 385 个
工控威望: 338 点
下载积分: 3994 分
在线时间: 174(小时)
注册时间: 2007-09-11
最后登录: 2024-01-05
查看zxc6688的 主题 / 回贴
1楼  发表于: 2008-11-08 15:22
那要看你D10里的数据。假如相乘后超过了16位,用MUL就得不到你想要的结果,就要用DMUL。
MUL  16位
DMUL 32位
其他一样。
http://zxc6688.ys168.com/
小蜜蜂
你让我滚,我滚了。你让我回来,对不起,滚远了...
级别: 论坛先锋

精华主题: 0
发帖数量: 1402 个
工控威望: 1508 点
下载积分: 13268 分
在线时间: 2207(小时)
注册时间: 2008-03-19
最后登录: 2024-12-28
查看小蜜蜂的 主题 / 回贴
2楼  发表于: 2008-11-08 15:39
但是我从手册上看到 MUL   D0    D2    D4,它是这样解释的 D0 16位的,D2 16位的,D4就是32位的(D5,D4),按手册上说的凡是两个16位的,不管大小,哪怕1乘以1等于1也要放到(D5  D4)中去,如果楼上的意思D0=1000  D2=1000,得100000,D0乘以D2就要用DMUL,这显然和书上的不同吗,因为D0和D2都是16位的!!
zwz579
这系虾米社会,七透的比打拼的钱卡多。
级别: 略有小成
精华主题: 0
发帖数量: 502 个
工控威望: 408 点
下载积分: 2895 分
在线时间: 226(小时)
注册时间: 2008-03-18
最后登录: 2019-07-21
查看zwz579的 主题 / 回贴
3楼  发表于: 2008-11-08 18:38
乘法的结果必定会要用两个
共同学习,共同进步。 www.xmohm.com
小蜜蜂
你让我滚,我滚了。你让我回来,对不起,滚远了...
级别: 论坛先锋

精华主题: 0
发帖数量: 1402 个
工控威望: 1508 点
下载积分: 13268 分
在线时间: 2207(小时)
注册时间: 2008-03-19
最后登录: 2024-12-28
查看小蜜蜂的 主题 / 回贴
4楼  发表于: 2008-11-08 18:51
哦,谢谢了,那第二行的除法运算D20就是(D20  D21)32位的,但是D30的是16位的,那么这个DIV前面要加D吗?还有就是除的结果D40是指(D40  D41  D42  D43)吗?还是只有(D40  D41)两个?还有第三行的MOV又是否要加D吗?
xiexiao
级别: 略有小成
精华主题: 0
发帖数量: 97 个
工控威望: 227 点
下载积分: 591 分
在线时间: 10(小时)
注册时间: 2008-10-18
最后登录: 2024-12-25
查看xiexiao的 主题 / 回贴
5楼  发表于: 2008-11-09 00:18

加D
dv0429
级别: 略有小成
精华主题: 0
发帖数量: 205 个
工控威望: 221 点
下载积分: 837 分
在线时间: 96(小时)
注册时间: 2008-02-27
最后登录: 2023-09-18
查看dv0429的 主题 / 回贴
6楼  发表于: 2008-11-09 07:27
如果结果大于32767要在前面加D,如果在32767范围内的就不加加D,32767是16位寄存器最大的值,什么时候用16位还是32位主要是看结果会不会大于这个值
小蜜蜂
你让我滚,我滚了。你让我回来,对不起,滚远了...
级别: 论坛先锋

精华主题: 0
发帖数量: 1402 个
工控威望: 1508 点
下载积分: 13268 分
在线时间: 2207(小时)
注册时间: 2008-03-19
最后登录: 2024-12-28
查看小蜜蜂的 主题 / 回贴
7楼  发表于: 2008-11-09 12:34
6楼的朋友,首先谢谢你,但是你讲的和指令手册上的不一样,MUL   D0    D2    D4,D0=16位的,D2=16位的,D4=32位的,照你这么说,这个乘法不是要用DMUL了,可是书上偏偏只用MUL,我是这样理解的:只要乘数和被乘数是16位的,只要用MUL,不管你的结果是多大,只要乘数和被乘数是32位的,就要用DMUL,不管你的结果是多大,现在在这论坛里有好多说法,不知道要相信哪个人。
tangyq
级别: 略有小成
精华主题: 0
发帖数量: 273 个
工控威望: 408 点
下载积分: 1797 分
在线时间: 374(小时)
注册时间: 2007-03-25
最后登录: 2022-04-06
查看tangyq的 主题 / 回贴
8楼  发表于: 2008-11-09 13:27
你自己的看法正确
小蜜蜂
你让我滚,我滚了。你让我回来,对不起,滚远了...
级别: 论坛先锋

精华主题: 0
发帖数量: 1402 个
工控威望: 1508 点
下载积分: 13268 分
在线时间: 2207(小时)
注册时间: 2008-03-19
最后登录: 2024-12-28
查看小蜜蜂的 主题 / 回贴
9楼  发表于: 2008-11-09 13:50
那如果用传送指令MOV,D40如果是32位的,那么我们应该这样写程序,DMOV   D40   D50,那么如果D40是64位的(D43  D42  D41  D40),那么我们的DMOV是不能用了?而要用成批传送指令BMOV   D40  D50  K4,把(D43  D42  D41  D40)传送到(D50  D51  D52  D53)?不知这样对不对啊?
小蜜蜂
你让我滚,我滚了。你让我回来,对不起,滚远了...
级别: 论坛先锋

精华主题: 0
发帖数量: 1402 个
工控威望: 1508 点
下载积分: 13268 分
在线时间: 2207(小时)
注册时间: 2008-03-19
最后登录: 2024-12-28
查看小蜜蜂的 主题 / 回贴
10楼  发表于: 2008-11-09 15:50
没人帮我看看吗?
kawasakilu
级别: 略有小成
精华主题: 0
发帖数量: 319 个
工控威望: 380 点
下载积分: 2265 分
在线时间: 90(小时)
注册时间: 2007-04-12
最后登录: 2024-06-29
查看kawasakilu的 主题 / 回贴
11楼  发表于: 2008-11-09 15:57
最好用DDIV。
  • «
  • 1
  • 2
  • »
  • Pages: 1/2     Go