寄存器移位指令请教

LD            I0.1
 EU
 SHRB      I0.2 , V20.0 ,5
 移位寄存器的最高位是V20.4。
 如果把N值变为-5 ,即
 LD            I0.1
 EU
 SHRB      I0.2 , V20.0 ,-5
 那么,移位寄存器的最高位是什么?移位寄存器的最低位是什么?如果V20.0的初始值为:2# 1111_1001。I0.2 为“1”。 程序的结果是什么?

最佳答案

定义移位寄存器的最高位不是由N值的正或负定义的,就是它的绝对值来定义的,也就是说你说的5和-5,它们指定移位寄存器的最高位和最低位都一样的。
 N值的正或负主要来定义移位寄存器的的位移的方向.
 在"移位减"(用长度(N)的负值表示)中,输入数据移入移位寄存器的最高位中,并移出最低位(S_BIT)。移出的数据被放置在溢出内存位(SM1.1)中。
 在"移位加"(用长度(N)的正值表示)中,输入数据(DATA)移入移位寄存器的最高位中(由S_BIT指定),并移出移位寄存器的最高位。移出的数据被放置在溢出内存位(SM1.1)中。
 移位寄存器的最大长度为64位(无论正负)。
 像你的例子,如果VB20的初始值为:2# 1111_1001。I0.2 为“1”。如果N=+5,则当I0.1 ON第一次时I0.2的值移入V20.0,VB20的值是:2#1111_0011,原来的V20.5的值移到SM1.1。如果N=-5, VB20的初始值为:2# 1111_1001。I0.2 为“1”,则当I0.1 ON第一次时I0.2的值移入V20.5中,VB20的值是:2#1111_1100,原来的V20.0的值移到SM1.1。

 
 

提问者对于答案的评价:
ok

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc358061.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月5日
下一篇 2021年7月5日

相关推荐

发表回复

登录后才能评论