数据传送指令及操作数见表7-29。该类指令的功能是将源操作数中的数据,按照规定的要求,复制到目的操作数中去,可分为数据传送、位传送、数字传送、块传送及复制、寄存器交换等。
表7-29 数据传送指令及操作数

(续)

1.数据传送:F0(MV)、F1(DMV)、F2(MV/)、F3(DMV/)
例7-16 F0(MV)16位数据传送示例
F0(MV)是16位数的传送指令,其功能是将16位二进制常数或16位数据存储单元中的数据传送到另一个16位数据存储单元中,指令格式及操作数范围见表7-30。
表7-30 指令格式及操作数范围

例题说明:当控制触点X0闭合时,每个扫描周期都要重复将十六进制常数H2345传送到内部字寄存器DT0中。
F0(MV)指令对源操作数没有要求,而目的操作数不能是输入继电器WX和常数K、H,原因很明显:目的操作数是用来保存结果的,自然不能用输入继电器和常数。后面介绍的其他指令也有类似情况。
例7-17 F3(DMV/)32位数的求反传送示例
F3(DMV/)为32位数的求反传送指令,其功能是将32位二进制常数或32位数据存储单元中的数据取反后传送到另一个32位数据存储单元中,指令格式及操作数范围见表7-31。
表7-31 指令格式及操作数范围

(续)

例题说明:当触发信号X0闭合,仅在检测到X0闭合的上升沿时,执行内部继电器WR3、WR2中的数据求反并传送到数据寄存器DT1、DT0中一次。
与上例相比,该例有5点不同,下面加以详细说明。
1)在控制触点后,增加了微分指令DF,表示该指令仅在检测到控制触点X0闭合时执行一次;
2)F3(DMV/)指令助记符的第一个字符为“D”,表示该指令为双字操作,目的操作数为DT0寄存器,表示数据保存在寄存器DT1、DT0构成的32位单元中。在以后的双字操作指令中也遵循这一原则,即由相邻2个16位寄存器联合构成一个32位寄存器,默认指定的是低16位寄存器。如果低16位区已指定为(S、D),则高位自动指定为(S+1,D+1),本例中:
S+1(高位)=WR3,S(低位)=WR2
D+1(高位)=DT1,D(低位)=DT0
3)F3(DMV/)指令助记符的最后一个字符为“/”,表示在进行传送时,要对被传送的数据先进行取反,然后将结果送往目的寄存器区。
4)源操作数和目的操作数都用寄存器方式寻址,源操作数在执行指令后内容不变,目的操作数则被覆盖,相当于执行数据拷贝操作
5)与F0(MV)指令不同的是,S和D不能用IY寄存器。IX和IY除用作索引寄存器外,还可以用作通用寄存器。当用作通用16位寄存器时,二者可单独使用;当用作32位存储区时,二者联用,IX存低16位,IY存高16位,因此程序中只能引用IX,IY由系统自动引用,无论是S还是D均如此。这个规则对于所有的双字(32-bit)指令都适用。
2.位传输:F5(BTM)、F6(DGT)
例7-18 F5(BTM)16位二进制数的位传送示例
F5(BTM)为位传送指令,其功能是将一个16位二进制数的任意指定位,拷贝到另一个16位二进制数据中的任意指定位中去,源操作数和目的操作数所指定的地址,由n设定。指令格式及操作数范围见表7-32。
表7-32 指令格式及操作数范围

(续)

在F5(BTM)指令中,S为源操作数,是被传送的16位常数或寄存器中的数据;D为目的操作数,表示接收数据的16位目的寄存器;n是16位的操作数,又称传输控制码,它指明了源操作数中哪一位数据将被传送以及传送到目的操作数中的哪一位置。在n中,bit0~bit3用以指定源操作数中哪一位将被传送,bit8~bit11用以指定被传送数据放在目的操作数的什么位置,bit4~bit7、bit12~bit15这8位未用,可随便取值,不影响结果,为简便计,一般均取为0。因此,本例中源区位地址取为H5,目的区位地址取为HB。n的设置参见如图7-23所示。
(https://www.xing528.com)
图7-23 F5(BTM)指令的传输控制码定义
例题说明:当触发信号X0接通时,数据寄存器DT0中第4位数据被传送到DT1的第14位上。如图7-24所示。DT0中的数据由前面的程序赋值,DT1中的数据可能已经赋值,也可能没有赋值,但是执行完该指令后,DT1的第14位被赋值为1。

图7-24 例7-18中传递情况
例7-19 F6(DGT)16位十六进制数(digit)的位传送示例
F6(DGT)为十六进制数(digit)的传送指令,其功能是将一个16位常数或存储单元中的十六进制数的若干位(1~4位)传送到另一个16位存储单元的指定位中。每一个单元为4位十六进制数,地址为D3~D0,指令格式及操作数范围见表7-33。
表7-33 指令格式及操作数范围

对于F6(DGT),在n的定义上有所不同,一是数据操作的最小单位为十六进制的1位,即1digit,相当于二进制的4bits;二是要拷贝的数据不像F5那样只有1位,而是有效范围内的任意位,因此还需要指定参与操作的位数。n的设置可参考图7-25。

图7-25 F6(DGT)指令的传输控制码定义
由图中可见,n的bit12~bit15未用,以十六进制表示,即digit3未用。
为了能够表示数据段,采用的是“首地址+段长度”的表示方式,即由digit2表示目的区首地址、digit1表示要拷贝的数据段位数、digit0表示源区首地址,这样进行操作的数据区地址就可唯一确定。
例题说明:当触发信号X0接通时,源区数据寄存器DT0中4个十六进制位(digit0~digit3)拷贝到目的区WY0中的4个十六进制位(digit1~digit3,digit0),将n取值为H0130,其含义如图7-26所示,执行情况如图7-27所示。

图7-26 F6(DGT)指令的传输控制码示例

图7-27 F6(DGT)指令执行结果
3.块传输指令:F10(BKMV)、F11(COPY)
(1)F10(BKMV):区块传输指令。其功能为将指定的存储单元中的数据块(从源存储单元的首地址S1到末地址S2的数据)传送到另一个指定的存储单元开始的存储区中,要求S1和S2应为同一类型的寄存器,且S2≥S1。
(2)F11(COPY):块拷贝指令。其功能是将指定的一个常数或存储单元中的数据复制到另一个指定的存储单元开始的存储区中(从目的存储单元的首地址D1到末地址D2),要求D1和D2应为同一类型的寄存器,且D2≥D1。
例7-20 F10(BKMV)数据块传送示例
F10(BKMV)为数据块传送指令,指令格式及操作数范围见表7-34。
表7-34 指令格式及操作数范围

例题说明:当触发信号X1接通时,该指令将WR0~WR5的连续6个单元的数据块分别传送到DT6开始的6个单元(DT6~DT12)中。
4.数据交换指令:F15(XCH)、F16(DXCH)、F17(SWAP)
(1)F15(XCH):16位数据交换。其功能是将D1和D2寄存器中的16位数据互相交换。
(2)F16(DXCH):32位数据交换。其功能是将(D1+1,D1)寄存器中的32位数据与(D2+1,D2)中的32位数据互换。
(3)F17(SWAP):16位数据的高低字节互换。其功能是将D寄存器中的16位数据高8位和低8位互换。
例7-21 F17(SWAP)16位数据高/低字节互换示例
F17(SWAP)为16位数据高/低字节互换指令,其指令格式及操作数范围见表7-35所示。
表7-35 指令格式及操作数范围

例题说明:若DT5=H5678,当触发信号X1接通时,DT5中的高字节和低字节数据互相交换,即指令执行一次后,DT1=H7856。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
