[应用相关] 用法区别

[复制链接]
 楼主| feiqi1 发表于 2018-9-16 17:41 | 显示全部楼层 |阅读模式
请教各位达人MSP430f5系列MPY32中
MPY与MAC这两个的用法区别
这两个在手册中的介绍真心没看懂
谢谢
androidbus 发表于 2018-9-16 17:46 | 显示全部楼层
可以参考数据手册中的解释如下:
16位乘法寄存器: MPY
16位有符号乘法寄存器:MPYS
16位乘法累加寄存器:MAC
16位有符号乘法累加寄存器:MACS
litengg 发表于 2018-9-16 17:47 | 显示全部楼层
其实简单说,MPY和MAC是两种不同的操作,
MPY是简单的做乘法,即c = a x b
MAC是做乘加,即 c = a x b + c
qiangweii 发表于 2018-9-16 17:50 | 显示全部楼层
一个乘法还搞模块,又不是除法,为何不直接用指令支持
shashaa 发表于 2018-9-16 17:51 | 显示全部楼层
无符号数相乘 result="n1"*n2。第一操作数n1(16位无符号)赋给MPY寄存器,第二操作数n2(16位无符号)赋给OP2寄存器,赋值完成后,结果result(32位无符号)就可以在RESLO(低16位)和RESHI(高165位)中读取。
代码如下:
   MPY = n1;                            // Load first operand -unsigned mult
   OP2 = n2;                                // Load second operand
   result = RESHI;                           // Load RESHI word result
   result = (result<<16)|RESLO;              // Shift RESHI left and concat with
xia00 发表于 2018-9-16 17:54 | 显示全部楼层
无符号数乘加操作 result="n1"*n2+n3*n4。第一操作数n1(16位无符号)赋给MPY寄存器,第二操作数n2(16位无符号)赋给OP2寄存器,第三操作数n3(16位无符号)赋给MAC寄存器,第四操作数n4(16位无符号)赋给OP2寄存器,结果result(32位无符号)就可以在RESLO(低16位)和RESHI(高165位)中读取。
hfdy01 发表于 2018-9-16 17:55 | 显示全部楼层
.有符号数相乘 result="n1"*n2。第一操作数n1(16位有符号)赋给MPYS寄存器,第二操作数n2(16位有符号)赋给OP2寄存器,赋值完成后,结果result(32位有符号)就可以在RESLO(低16位)、RESHI(高165位)和SUMEXT(符号)中读取。SUMEXT=0xffff则结果为负,SUMEXT=0则结果为正。
CallReceiver 发表于 2018-9-16 17:58 | 显示全部楼层
有符号乘加操作 result="n1"*n2+n3*n4。第一操作数n1(16位无符号)赋给MPY寄存器,第二操作数n2(16位无符号)赋给OP2寄存器,第三操作数n3(16位有符号)赋给MAC寄存器,第四操作数n4(16位有符号)赋给OP2寄存器,结果result(32位有符号)就可以在RESLO(低16位)和RESHI(高165位)中读取。SUMEXT寄存器中保存进位和正负标志。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

424

主题

1616

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

424

主题

1616

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部