数据传送类应用指令如下:
1.MOV和MVN指令格式:MOV(21) @MOV(21)S SD DMVN(22) @MVN(22)S SD D其中,操作数S为源通道,可以是IR、SR、hR、AR、LR、DM、*DM、#;操作数D为目的通道,可以是IR、SR、hR、AR、LR、DM、*DM。功能: MOV是数据传送指令。执行传送操作时将S中的数据送到D,S中的数据不变;MVN是数据求反传送指令。执行求反传送操作时将S中的数据求反送到D,S中的数据不变。
例4-1:下面的MVN指令在输入00000或00001为ON时执行求反操作,即将D361h=1101001101100001B按位取反,得2C9Eh。操作执行的结果为将目的通道200置2C9E。LD 00000OR 00001MVN(22)#D3612002.XFER指令格式:XFER(70) @ XFER(70)N NS SD D其中,操作数N为4位BCD码的传送通道数,可以是IR、SR、hR、AR、LR、DM、*DM、#;操作数S为源数据块的开始通道地址,操作数D为目的数据块的开始通道地址,它们可以是IR、SR、hR、AR、LR、DM、*DM。功能: 块传送指令。执行时将由S通道开始的N个连续数据传送到由D开始的对应通道中去。
例4-2:下面是一个传送20个数据的程序段。LD 00001OR 00002AND 00003XFER(70)#0020200hR003.BSET指令格式:BSET(71) @ BSET(71)S SST STE EC其中,操作数S为源数据,可以是IR、SR、hR、AR、LR、DM、*DM、#;操作数ST为开始通道地址,操作数E为结束通道地址,它们可以是IR、SR、hR、AR、LR、DM、*DM;ST不能大于E,且两者必须在同一区域内。功能: 块置数指令。执行块置数操作时,将由ST开始到E结束的所有通道都置为数据S。
例4-3:下面程序段在条件满足时执行块置数操作。操作结果是将由hR00到hR11之间的所有通道置为FFFF。LD 00000AND 00001@BSET(71)#FFFFhR00hR11思考题:程序段中BSET指令是改变了TIM000的当前值还是设定值?试比较MOV指令与BSET指令的区别。4.XChG指令格式:XChG(73) @XChG(73)E1 E1E2 E2其中,操作数E1为交换数据1,操作数E2为交换数据2,它们分别可以是IR、SR、hR、AR、LR、DM、*DM。功能: 数据交换指令。执行数据交换时,将E1和E2两个通道的数据进行交换。
例4-4:下面程序段在执行条件满足时,将两指定通道中的数据交换。LD 00000OR 00001@XChG(73)2002105.DIST指令格式:DIST(80) @DIST(80)S SDBs DBsC C其中,操作数S为源数据,可以是IR、SR、hR、AR、LR、DM、*DM、#;操作数DBs为目的基准通道,可以是IR、SR、hR、AR、LR、DM、*DM;操作数C为4位BCD码组成的控制字,可以是IR、SR、hR、AR、LR、DM、*DM、#。功能: 单字分配指令。当C中的BCD码最高位小于8时,DIST执行单字分配操作,将S的数据送到DBs+C所指定的通道中去。当C的BCD码最高位等于9时,DIST执行S的数据进栈操作,由C中BCD码的低三位指定堆栈的长度,用DBs作为堆栈指针。
例4-5:当下面程序段中的DIST指令执行条件满足时,执行进栈操作。设DM0000=0000,执行一次的结果置DM0000为0001、DM0001为FFFF;执行两次的结果置DM0000为0002、DM0002为FFFF。LD 00001AND 00002@DIST(80)#FFFFDM0000#90026.COLL指令格式:COLL(81) @COLL(81)SBs SBsC CD D其中,操作数SBs为源基准通道,操作数D为目的基准通道,它们分别可以是IR、SR、hR、AR、LR、DM、*DM;操作数C为4位BCD码组成的控制字,可以是IR、SR、hR、AR、LR、DM、*DM、#。功能: 数据调用指令。它是DIST指令的反操作指令。若C中的BCD码为0000~6655,指令执行条件满足时完成数据调用操作,将SBs+C中的内容送到D。若C中的BCD码为9000~9999,指令执行条件满足时完成先入先出的出栈操作。若C中的BCD码为8000~8999,指令执行条件满足时完成后入先出的出栈操作。出栈操作时,由C中BCD码的低三位指定堆栈的长度;用SBs的内容作为堆栈指针。
例4-6:当SBs=DM0000,C=#9007,D=200时,先入先出的出栈过程。思考题:1.设hR00中原数据为0,每过1min hR00中的内容加1。用DIST指令编写一个程序,将hR00前两次变化的内容压入堆栈,并画图说明进栈过程。2.用COLL指令编写一个程序,使堆栈(栈区为DM0011~DM0014,内容自定)中的数据按先入先出的顺序出栈,并画图说明出栈过程。
7.MOVB和MOVD指令格式:MOVB(82) @ MOVB(82)S SC CD D其中,操作数S为源数据,可以是IR、SR、hR、AR、LR、DM、*DM、#;操作数C为控制字,可以是IR、SR、hR、AR、LR、DM、*DM、#;操作数D为目的通道,可以是IR、SR、hR、AR、LR、DM、*DM。功能: MOVB为位传送指令。执行位传送时可以将S中指定的二进制位传送到D的指定位上。S和D中的位的指定由C来实现。
例4-7:下面程序段在00001变化的上升沿时执行位传送操作。操作的结果是将hR0115置ON。LD 00001@MOVB(82)#FF00#1515hR01格式:MOVD(83) @ MOVD(83)S SC CD D功能: MOVD为数字传送指令。执行数字传送时可以将S中指定的数位的内容复制到D的指定数位。少于等于四个数字可以一次性传输。S和D中的位的指定由C来实现。
思考题:1.用位传送指令将001通道中的第15位数据传传送到通道hR00的12位中。画出梯形图,写出语句表。2.用数字传送指令将001通道中的第12~15位的数据传送到通道hR00的12~15位中。画出梯形图,写出语句表。