签到有奖
消息提醒
运维工程师专区
官方商城
点击复制链接
关注该帖后,有多人参加探讨会对您通知与提示!
版主
帖子
精华
被关注
论坛等级:至圣
注册时间:2003-06-06
钻石 如何晋级?
发布于 2023-03-28 22:19:00
4楼
偶尔发现200Smart的左移右移指令SHL_B/SHR_B有个不容易发现的问题,如果指令的N参数和Out参数是同一个的话会出问题,具体看图:
第10段,SHL_B的N和Out都使用同一个累加器AC0,不能得到正确的结果。1左移2位本来应该得到4,当却是2。
调试了一段时间也没发现问题所在。偶然的把LAD转做STL,发现问题了:
原来200Smart的SHL_B是先把IN复制到Out,然后再使Out移位N个位。
并不是理解的先使IN移位N位,然后把结果送到Out。
太扯了,我还要一个个检查以前的程序。
你可能觉得有一个隐含的工作寄存器,其实没有。
VB500指令执行前后不产生变化,VB500不能作工作寄存器。
输出寄存器就成为必然的工作寄存器。
STL表示的过程,正好说明这一点。
请填写推广理由:
2026共启We来,驰骋工控路,领跑新征程
助你技有所长,论有所获
首次发帖探讨工控技术话题 立获新人礼包,100中奖哦! (包含周边、书籍、兑奖西币)
共有9019条技术帖
恭喜,你发布的帖子
快扫描右侧二维码晒一晒吧!
再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!
分享
只看 楼主
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!