移位指令可以可以将累加器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。
(1) **检测位()
状态字的位0称为**检测位。若位的状态为0,则表明一个梯形逻辑网络的开始,或指令为逻辑串的**条指令。CPU对逻辑串**条指令的检测(称为**检测)产生的结果直接保存在状态字的RLO位中,经过**检测存放在RLO中的0或1被称为**检测结果。位在逻辑串的开始时总是0,在逻辑串指令执行过程中位为1,输出指令或与逻辑运算有关的转移指令(表示一个逻辑串结束的指令)将清0。
(2) 逻辑操作结果(RLO)
状态字的位1称为逻辑操作结果RLO(Result of Logic Operation)。该位存储逻辑指令或算术比较指令的结果。在逻辑串中,RLO位的状态能够表示有关信号流的信息。RLO的状态为1,表示有信号流(通);为0,表示无信号流(断)。可用RLO触发跳转指令。
(3) 状态位(STA)
状态字的位2称为状态位。状态位不能用指令检测,它只是在程序测试中被CPU解释并使用。如果一条指令是对存储区操作的位逻辑指令,则无论是对该位的读或写操作,STA总是与该位的值取得一致;对不访问存储区的位逻辑指令来说,STA位没有意义,此时它总被置为1。
(4) 或位(OR)
状态字的位3称为或位(OR)。在先逻辑“与”后逻辑“或”的逻辑串中,OR位暂存逻辑“与”的操作结果,以便进行后面的逻辑“或”运算。其它指令将OR位清0。
(5) 溢出位(OV)
状态字的位4称为溢出位。溢出位被置1,表明一个算术运算或浮点数比较指令执行时出现错误(错误:溢出、非法操作、不规范格式)。后面的算术运算或浮点数比较指令执行结果正常的话OV位就被清0。
(6) 溢出状态保持位(OS)
状态字的位5称为溢出状态保持位(或称为存储溢出位)。OV被置1时OS也被置1;OV被清0时OS仍保持。所以它保存了OV位,可用于指明在先前的一些指令执行中是否产生过错误。只有下面的指令才能复位OS位:JOS(OS=1时跳转);块调用指令和块结束指令。
(7) 条件码1(CC1)和条件码0(CC0)
状态字的位7和位6称为条件码1和条件码0。这两位结合起来用于表示在累加器1中产生的算术运算或逻辑运算结果与0的大小关系;比较指令的执行结果或移位指令的移出位状态。