注释:
1


移位指令包括左移位(Shift Left, SHL)和右移位(Shift Right, SHR)指令,其梯形图及语句表如表4-10所示。

移位指令是将输入IN中的各位数值向左或向右移动N位后,将结果送给输出OUT 中。移位指令对移出的位自动补0,如果移动的位数N大于或等于最大允许值(对于字节操作为8位,对于字操作为16位,对于双字操作为32),实际移动的位数为最大允许值。 如果移位次数大于0,则溢出标志位(SM1.1)中就是最后一次移出位的值;如果移位操作的结果为0,则零标志位(SM1.0)被置为1。

另外,字节操作是无符号的。对于字和双字操作,当使用符号数据类型时,符号位也被移位。



循环移位指令包括循环左移位(Rotate Left, ROL)和循环右移位(Rotate Right, ROR)指令,其梯形图及语句表如表4-11所示。

循环移位指令将输入值IN中的各位数向左或向右循环移动N位后,将结果送给输出 OUT中。循环移位是环形的,即被移出来的位将返回到另一端空出来的位置。如果移动的位 数N大于或等于最大允许值(对于字节操作为8位,对于字操作为16位,对于双字操作为32 ),执行循环移位之前先对N进行取模操作(例如对于字移位,将N除以16后取余数),从 而得到一个有效的移位位数。移位位数的取模操作结果,对于字节操作是0〜7,对于字操作 为0〜15,对于双字操作为0〜31。如果取模操作的结果为0,不进行循环移位操作。

如果循环移位指令被执行时,移出的最后一位的数值会被复制到溢出标志位(SM1.1) 中。如果实际移位次数为0时,零标志位(SM1.0)被置为1。

另外,字节操作是无符号的,对于字和双字操作,当使用有符号数据类型时,符号位也被移位。

【例4-3】移位和循环移位指令的应用(如图4-7所示)。

当I0.0接通时,将累加器AC0中的数据0100 0010 0001 1000向左移动2位变成0000 1000 0110 0000,同时将变量存在器VW100中的数据1101 1100 0011 0100向右循环移动3位变为 1001 1011 1000 0110

移位和循环移位指令的操作数范围如表4-12所示。





知识点词条:移位指令





学校名称:

答  题  人:
移位指令
关键字:移位指令