移位指令可以可以将累加器1 的低字或整个累加器的内容进行左移或右移一定的位数。二进制数左移一位相当于将原数值乘以2。右移一位相当于将原数值除以2。
参数N 表示移位的次数。移出的空位根据不同的指令由0或符号位的状态填充。最后移出的位的状态同时被装入到状态字的CC1位,CC0和OV位被复位。
l SSI <number> 16位整数右移指令
l SSD <number> 32位整数右移指令
l SLW <number> 逻辑字左移指令
l SRW <number> 逻辑字右移指令
l SLD <number> 逻辑双字左移指令
l SRD <number> 逻辑双字右移指令
l 打开数据块
指令格式:OPN <data block>
说明:打开一个数据块作为shared数据块(DB)或者作为instance数据块(DI)。
可以同时打开一个shared数据块和一个instance数据块。
例 4.9.1: OPN DB 10 // 打开数据块DB 10作为shared数据块
L DB W35 // 将DB 10的数据字W35装入到累加器
1的低字。
T M W22 // 将累加器1的低字传输到M W22。
OPN DI 20 // 打开数据块DI 20作为instance数据块
L DI B12 // 将DI 20的数据字节B12装入到累加
器1的低字
T DB B37 // 将累加器1的低字传输到DB 10的字
节37中。
l 交换shared数据块和instance数据块
指令格式:CDB
说明:交换shared数据块和instance数据块。
shared数据块变成instance数据块,
instance数据块变成shared数据块。
l 装shared数据块的长度到累加器1
指令格式:L DBLG
说明:将shared数据块的长度装到累加器1。
l 装shared数据块的数目到累加器1
指令格式:L DBNO
说明:将shared数据块的数目装到累加器1。
l 装instance数据块的长度到累加器1
指令格式:L DILG
说明:将instance数据块的长度装到累加器1。
I堆栈中保存的内容有:
F 累加器及地址寄存器的内容;
F 数据块寄存器的内容;
F 局部数据堆栈,状态字,MCR寄存器和B堆栈指针。
如果新的OB块调用FB和FC,则每一个块的处理数据将被存储堆栈中(B堆栈)
B堆栈中保存的内容有:
F DB和DI寄存器;
F 临时数据(L堆栈)的指针;
F 块的号码及返回地址。
OB可以分为两类:执行周期性工作的OB(日时钟中断)和响应错误的OB(错误中断)。
执行周期性工作的OB(日时钟中断)
在特定的日期或时间执行
从一个编程事件开始一段特定延时后执行
按特定周期循环执行
响应错误的OB(错误中断)
当 CPU检测到一个过程/硬件错误时执行
当 CPU检测到一个不依赖于程序指令的错误时执行
当 CPU检测到一个与程序指令处理有关的错误时执行