目录

一、作用

一、种类

1、ROR循环右移

2、ROL循环左移

3、SFTR位右移

4、SFTL位右移

三、实例

四、总结 


一、作用

        用于对位元件进行位移操作,将位元件的数据在位级上进行移动。位移指令包括循环右移(ROR)、循环左移(ROL)、位右移(SFTR)和位左移(SFTL)。

一、种类

1、ROR循环右移

A、作用:

        将位元件的数据在位级上向右循环移动指定的位数,移动后的位数从左侧重新进入右侧

B、指令形式:[ROR/DROR/RORP]

        [ROR Mn Kn] ROR是循环右移指令;Mn是软元件对象(组合位、数据寄存器等);Kn是每次移位个数。ROR是对16位数据进行移位;DROR是对32位数据进行移位;RORP是遇到上升沿才进行16位循环右移。

C、进位标志:M8022

        对移位对象的位数中最高位的数据放在这个特殊辅助继电器中。

D、实例:

循环右移数据移动流程:

2、ROL循环左移

A、作用

        将位元件的数据在位级上向左循环移动指定的位数,移动后的位数从右侧重新进入左侧。功能与循环右移相反。

B、指令形式:[ROL/DROL/ROLP]

        [ROL Mn Kn] ROL是循环左移指令;Mn是软元件对象(组合位、数据寄存器等);Kn是每次移位个数。ROL是对16位数据进行移位;DROL是对32位数据进行移位;ROLP是遇到上升沿才进行16位循环左移。

C、进位标志:M8022

        对移位对象的位数中最低位的数据放在这个特殊辅助继电器中。

D、实例:

3、SFTR位右移

A、作用:

        使指定位长度的位元件每次右移一定的位长度,移动后的空位用0填充

B、指令形式:[SFTR/SFTRP]

        [SFTR Mn Yn Kn1 Kn2]  SFTR是位右移指令;Mn需要移位的软元件;Yn需要被移位的软元件;Kn1指定Yn具有几位长度;Kn2指定Mn每次移位几位长度。SFTR是正常的位右移指令;SFTRP是遇到上升沿才进行位右移的指令。

C、实例:

SFTR位右移数据移动流程图:

4、SFTL位右移

A、作用:

        使指定位长度的位元件每次左移一定的位长度,移动后的空位用0填充。功能与位右移相反。

B、指令形式:[SFTL/SFTLP]

        [SFTL Mn Yn Kn1 Kn2]  SFTL是位左移指令;Mn需要移位的软元件;Yn需要被移位的软元件;Kn1指定Yn具有几位长度;Kn2指定Mn每次移位几位长度。SFTL是正常的位左移指令;SFTLP是遇到上升沿才进行位左移的指令。

C、实例:

三、实例

实例描述:用一个开关控制8个灯,每秒亮一个灯从右往左依次亮,然后从左往右再依次亮,不断重复以上循环直至按下按钮。

四、总结 

1、移位指令对于依次输出很方便(例如流水灯等程序的实现)。

2、弄清楚组合位中是哪些软元件进行移位动作。

3、组合位的使用看这篇文章什么是组合位?

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐