(一)单一传送
◆ MOVB,字节传送指令
◆ BIR,传送字节立即读指令
◆ BIW,传送字节立即写指令
◆ MOVW,字传送指令
◆ MOVD,双字传送指令
◆ MOVR,实数传送指令
1、MOVB,字节传送指令
使能输入有效时,把一个单字节无符号数据由IN传送到OUT所指的字节存储单元。
IN的寻址范围:VB、IB、QB、MB、SB、SMB、LB、AC、*VD、*AC、*LD和常数。
VB、IB、QB、MB、SB、SMB、 LB、AC、*VD、*AC、*LD。
指令格式: MOVB IN1, OUT
图1 MOVB指令
例: MOVB VB0, QB0
2、BIR,传送字节立即读指令
使能输入有效时,立即读取单字节物理输入区数据IN,并传送到OUT所指的字节存储单元。
IN的寻址范围:IB
OUT的寻址范围:VB、IB、QB、MB、SB、SMB、LB、AC、*VD、*AC、*LD。
指令格式:BIR IN1, OUT
图2 BIR指令
例:BIR IB0, VB10
(二)块传送
◆ BMB,字节块传送指令
◆ BMW,字块传送指令
◆ BMD,双字块传送指令
指令可用来进行一次多个(最多255个)数据的传送,数据块类型可以是字节块、字块、双字块。
三条指令中N的寻址范围都是:VB、IB、QB、MB、SB、SMB、LB、AC、*VD、*AC、*LD和常数。
使ENO断开的出错条件:SM4.3(运行时间);0006(间接寻址);0091(数超界)。
图3 块数据传送指令
(一)左移和右移
1、字节左移和字节右移
SLB和SRB,字节左移和字节右移。使能输入有效时,把字节型输入数据IN左移或右移N位后,再将结果输出到OUT所指的字节存储单元。最大实际可移位次数为8。
图4 字节左移和字节右移
以字节左移指令为例,指令执行情况如表所示。
图5 字节左移指令
2、字左移和字右移,SLW和SRW
使能输入有效时,把字型输入数据IN左移或右移N位后,再将结果输出到OUT所指的字存储单元。最大实际可移位次数为16。
指令格式: SLW OUT, N (字左移);SRW OUT, N (字右移)
例: SLW MW0, 2;SRW LW0, 3
以字右移指令为例,指令执行情况如表所示。
图6 字右移指令
3、双字左移和双字右移,SLD和SRD
使能输入有效时,把双字型输入数据IN左移或右移N位后,再将结果输出到OUT所指的双字存储单元。最大实际可移位次数为32。
指令格式:SLD OUT, N (双字左移);SRD OUT, N (双字右移)
例: SLD MD0, 2;SRD LD0, 3
(二)循环左移、循环右移
循环左移和循环右移根据所循环移位的数的长度分别又可分为字节型、字型、双字型。
移位数据存储单元的移出端与另一端相连,同时又与SM1.1(溢出)相连,所以最后被移出的位被移到另一端的同时,也被放到SM1.1位存储单元。
例如在循环右移时,移位数据的最右端位移入最左端,同时又进入SM1.1。SM1.1始终存放最后一次被移出的位。
图7 循环左移、循环右移
循环移位的类型:
◆ 字节循环左移和字节循环右移
◆ 字循环左移和字循环右移
◆ 双字循环左移和双字循环右移
(三)寄存器移位
SHRB,寄存器移位指令:该指令在梯形图中有3个数据输入端:DATA为数值输入, 将该位的值移入移位寄存器;S_BIT为移位寄存器的最低位端;N指定移位寄存器的长度。每次使能输入有效时,整个移位寄存器移动1位。
移位寄存器长度在指令中指定,没有字节型、字型、双字型之分。可指定的最大长度为64位,可正也可负。
图11 移位寄存器
图12 指令SHRB执行结果
使能输入有效时,将字型输入数据IN的高字节和低字节进行交换。
本指令只对字型数据进行处理,指令的执行不影响的特殊存储器位。
使能流输出ENO断开的出错条件:SM4.3(运行时间);0006(间接寻址)。
指令格式: SWAP IN (字节交换)
图13 指令SWAP执行结果
使能输入有效时,用字型输入数据IN填充从输出OUT所指的单元开始的N个字存储单元。
填充指令只对字型数据进行处理,N值为字节型,可取从1~255的整数。www.ippipp.com指令的执行不影响的特殊存储器位。
使能流输出ENO断开的出错条件:SM4.3(运行时间);0006(间接寻址);0091(操作数超界)。
指令格式: FILL IN, OUT, N
图14 存储器填充指令