84 可逆移位寄存器 SFTR ·SFTR SFTR/@SFTR(84) 根据控制数据(C)bit12~15的内容把D1~D2通道 C D1 D2 的数据进行左右移位。C通道内控制数据的内容:I12——移位方向(DR),0右移,1左移;I13——数据输入端(IN);I14——移位脉冲端(SP);I15—复位端(R)。 15 00 15 00 CY D2 D1 D1、D2 000~019、200~252 HR00~19、AR00~15 LR00~15 DM0000~1023 *DM0000~1023、 6144~6655 C:000~019、200~252 HR00~19、AR00~15 LR00~15 DM0000~1023、6144~6655 *DM0000~1023、 6144~66 IN(0或1) 15 00 15 00 D2 IN(0或1) 当移位信号输入继电器I14ON时D1~D2通道的数据进行左(右)移位,最高位(或最低位)移入进位位CY(25504);当复位输入继电器I15ON时,D1、D2通道领域有故障时,D1>D2时,出错标志25503ON,此时程序不执行该指令 D1 CY D1~D2通道的全部位和进位位CY(25504)全为“0”。55 16 字移位 WSFT/@WSFT(16) D1 D2 当执行条件ON时,每执行一次D1至D2通道中的数据以字为单位移位一次,而0000移进D1,D2的原数据溢出 当D1与D2CH不在同一区域、或区域出错、间接寻址通道不存在(非BCD码)时,出错标志位25503ON,此时该指令不执行 0000 D1 D2 D1、D2 000~019、200~252 HR00~19、AR00~15 LR00~15 DM0000~1023、 *DM0000~1023、 6144~6655 25 算ASL 术左移位 ASL/@ASL(25) D 把D通道的数据向左移一位,原最高位溢出至 CY(25504),最低位补0。当间接寻址DM不存在(非BCD码)时,25503ON,此时该程序不执行;当DCH的内容为0000时,相等标志位25506为ON D:000~019、200~252 HR00~19、AR00~15 LR00~15 DM0000~1023、 *DM)0000~1023、 6144~6655 CY D 26 算ASR 术右移位 ASR/@ASR(26) D 把D通道的数据向右移一位,原最低位溢出至CY(25504),最高位补0。当间接寻址DM不存在(非BCD码)时,25503ON,此时该程序不执行;当DCH的内容为0000时,相等标志位25506为ON D CY 26
27 循ROL 环左移指令 28 循ROR 环右移指令 74 一SLD 位数字左移 ROL/@ROL(27) D 把D通道的数据包括进位位CY(25504)循环左移。当间接寻址DM不存在(非BCD码)时,25503ON,此时该程序不执行;当DCH的内容为0000时,相等标志位25506为ON D ROR/@ROR(28) D CY D:000~019、200~252 HR00~19、AR00~15 把D通道的数据包括进位位CY(25504)循环右移。当间接寻址DM不存在(非BCD码)时,25503ON,此时该程序不执行;当DCHLR00~15 的内容为0000时,相等标志位25506为ON DM0000~1023、 *DM0000~1023、 CY SLD/@SLD(74) 以四位二进制码(桁)为单位将D1至D2CH的数据 D1 D2 左移,D2的最高位溢出丢失,D1的最低位填0。当D1、D2通道出错(不在同一区域或D2 FUN NO 指令 符号 助记符 操作功 能/相关标志 操作数 17 异ASFT 步移位寄存器 ASFT/@ASFT(17) 根据控制数据(C) bit13~15的内容,在D1~D2通道 C D1 D2 之间,将通道数据为0000的数据(上移或下移)与前后通道的数据相互替代. IC13----移位方向(为0时,下位CH 上位CH;为1时,上位CH 下位CH), IC14----移位允许位(为0时,不移位;为1时,移位) IC15—复位端(为1时复位) 根据控制数据,将寄存器D1~D2CH 中为0000的字与紧邻的高上(低下)地址 通道之间交换数据,执行数次后,所有 0000字可集中到寄存器的上(下)半部。 25503出错标志与其它移位指令相同。 C:000~019、200~252 HR00~16、AR00~15 LR00~15 DM0000~10236144~6655 *DM0000~10236144~6655 #常数 D1、D2: 000~019、200~252 HR00~16、AR00~15 LR00~15 DM0000~1023 *DM0000~10236144~6655 、、、数据移位指令详见P69~76页 八、数据传送指令 28 数 21 传送 MOV aMOV(21) MOV/○ 将源数据SCH的数据、常数送到目的通道DCH中去 S CH DCH 当间接寻址DM通道不存在时,出错标志位25503ON,该S:000~019、200~255 HR00~19、AR00~15、 LR00~15 T/C000~127 DM(及*DM)0000~1023、 6144~6655 #0000~FFFF S D 指令不执行;当执行该指令D:000~019、200~255 后DCH中的数据为0000时, HR00~19、AR00~15 相等标志位25506ON 将源数据SCH的数据反相后送到目的通道DCH中。 当间接寻址DM通道不存在时,出错标志位25503ON,该指令不执行;当执行该指令后DCH中的数据为0000时,相等标志位25506ON 将由SCH开始的N个连续通LR00~15 DM0000~1023、 *DM0000~1023、 6144~6655 22 取反传MVN 送 aMVN ○aMVN(22) MVN/○ S D 70 块传送指令 XFER aXFER ○aXFER(70) XFER/○N、S :000~019、200~255 N S D 道数据对应传送至DCH开始 HR00~19、AR00~15、 LR00~15 T/C000~127 的几个连续通道中去。 当N为非DCD码;S、S+N、DM(及*DM)0000~1023、 D、D+N不在同一数据区或间接寻址DM通道为非BCD码时,25503出错标志位ON,此时,该指令不执行 6144~6655 #0000~9999(BCD码) S S+1 D D+1 D:000~019、200~255 HR00~19、AR00~15、LR00~15 DM0000~1023 *DM0000~1023、6144~6655 S+N-1 D+N-10 71 块设置BSET 指令 aBSET ○aBSET(71) BSET/○将源数据SCH的数据传送到从D1CH开始~D2CH结束的所有通道。当D1、D2不在同一区域、D2 80 单字分配指令 aDIST DIST/○1、当控制数据C CH中之IC15~12≤8时,完成数据分配动作,即:注意此处非(D)非D的内容而是D本身+偏移数据 控制数据C中的内容 高位 低位 S:000~019、200~255 LR00~15 T/C000~127 DM(及*DM)0000~1023、 6144~6655 #0000~FFFF D:000~019、200~255 HR00~19、AR00~15、 LR00~15 T/C000~127 DM0000~1023 *DM0000~10236144~6655 、将SCH的内容传送到(D+偏移数据)CH通道中P79页图3.94 HR00~19、AR00~15、 a○DIST(80) 源数据S 目标基准通道DIST ≤8 D 控制数据 偏移数据 000~999 2、当控制数据C中之IC15~12=9时,将指定的数据(16位)传送堆栈 控制数据C中的内容 高位 低位 9 C C:000~019、200~255 HR00~19、AR00~15、 LR00~15 T/C000~127 DM0000~1023、 6144~6155 *DM0000~10236144~6655 、 堆栈长度 (000~999) ① D通道~(D本身+堆栈长度数据)通道成为堆栈区 ② D通道的数据(D内的数据)成为堆栈指针 ③ 将S通道数据存入D+堆栈指针+1通道内,同时堆栈指针+1。条件成立时每扫描一次就执行一次。 *DIST指令在每个扫描周期都执行一次,所以一般使用微分型式,以控制执行的次数。例见P79页图3。95 *在使用DIST进行堆栈操作之前一定要初始化堆栈指针 出错标志25503ON时该指令不执行:控制数据C中的偏移量(四位)或堆栈长度不是BCD码;IC15~12≤8时,D与D+C不在同一数据区,IC15~12=9时,D+IC11~00(低三位)与D不在同一数据区;堆栈指针+1的值超出堆栈长度;间接寻址DM通道不存在。 相等标志位25506在S通道的内容为0000时为ON 81 数据调用指令 COLL a○COLL COLL/a ○根据控制通道C的内容复制指定的数据 1、 当IC15~12=8或9时进行出栈操作 高位 C的内容 低位 8或9 S:000~019、200~255 HR00~19、AR00~15、 LR00~15、T/C000~127 DM0000~1023、 6144~6155 *DM0000~10236144~6655 、COLL(81) 源基准通道S 控制数据C 目的通道D 堆栈长度 (000~999) 8:后入先出 (1) (2) (3) 先将S通道~(S+堆栈长度)通道为止组成堆栈领域 S通道内的数据成为堆栈指针 有先入先出和后入先出两种动作 9:先入先出 C:000~019、200~255 HR00~19、AR00~15、 LR00~15、T/C000~127 DM0000~1023、 *DM0000~10236144~6655 *控制数据C的内容是0000~9999的BCD码 D:000~019、200~255 HR00~19、AR00~15、 、<先入先出>动作: S+1通道的内容存入D通道后,S通道的堆栈指针值-1,堆栈领域的内容以通道为单位上移一个地址。详见P80页图3.98 <后入先出动作>: S+堆栈指针通道的内容存入D通道,,其它通道数据不变,S通道的堆栈指针-1。详见P81页图3。99 30