首页 理论教育 单片机实用教程:数据传送

单片机实用教程:数据传送

时间:2023-11-16 理论教育 版权反馈
【摘要】:数据传送类指令的功能是将源操作数中的内容送到目的操作数中。3)以寄存器Ri间址单元为目的操作数的传送指令。表3-7 外部RAM与累加器A的数据传送指令3.ROM与累加器A的数据传送指令ROM与累加器A的数据传送指令又称查表指令,它的操作码助记符是“MOVC”。

单片机实用教程:数据传送

数据传送类指令的功能是将源操作数中的内容送到目的操作数中。数据传送类指令是使用最多的一类指令,它又可以分为五种:内部RAM的数据传送指令,外部RAM与累加器A的数据传送指令,ROM与累加器A的数据传送指令,数据交换指令和堆栈操作指令。

1.内部RAM数据传送指令

内部RAM数据传送指令的操作码助记符是“MOV”。

指令格式:MOV目的操作数,源操作数

指令的功能是将源操作数中的内容送到目的操作数中。指令执行后,源操作数内容不变,目的操作数内容与源操作数一致。

内部RAM数据传送指令又可以分为五种:

1)以累加器A为目的操作数的传送指令。

2)以寄存器Rn为目的操作数的传送指令。

3)以寄存器Ri间址单元为目的操作数的传送指令。

4)以直接地址direct为目的操作数的传送指令。

5)16位数据传送指令。

(1)以累加器A为目的操作数的传送指令

以累加器A为目的操作数的传送指令有4条,其形式和功能见表3-2。

表3-2 以累加器A为目的操作数的传送指令

978-7-111-43252-4-Chapter03-8.jpg

(续)

978-7-111-43252-4-Chapter03-9.jpg

注:#data表示8位数据(立即数),Rn表示工作寄存器组中的8个寄存器R0~R7(n=0~7),Ri表示工作寄存器中可间址寻址的2个寄存器R0~R1(i=0,1),@表示间址寻址,direct表示直接地址。

(2)以寄存器Rn为目的操作数的传送指令

以寄存器Rn为目的操作数的传送指令有3条,各条指令的形式和功能见表3-3。

表3-3 以寄存器Rn为目的操作数的传送指令

978-7-111-43252-4-Chapter03-10.jpg

(3)以寄存器Ri间址单元为目的操作数的传送指令

以寄存器Ri间址单元为目的操作数的传送指令有3条,各条指令的形式和功能见表3-4。

表3-4 以寄存器Ri间址单元为目的操作数的传送指令

978-7-111-43252-4-Chapter03-11.jpg

(4)以直接地址direct为目的操作数的传送指令

以直接地址direct为目的操作数的传送指令有4条,各条指令的形式和功能见表3-5。

(5)16位数据传送指令

16位数据传送指令只有1条,该条指令的形式和功能见表3-6。

表3-5 以直接地址direct为目的操作数的传送指令

978-7-111-43252-4-Chapter03-12.jpg

表3-6 16位数据传送指令

978-7-111-43252-4-Chapter03-13.jpg

2.外部RAM与累加器A的数据传送指令

外部RAM与累加器A的数据传送指令操作码助记符是“MOVX”。

指令格式:MOVX目的操作数,源操作数

指令的功能是将源操作数中的内容送到目的操作数中。指令执行后,源操作数内容不变,目的操作数内容与源操作数一致。

外部RAM与累加器A的数据传送指令有4条,各条指令的形式和功能见表3-7。(www.xing528.com)

由于DPTR是16位寄存器,它可以存储216(65536)种不同的地址编号,故表中的第1、2条指令可访问64KB的外部RAM空间;而Ri是8位寄存器,可以存储28(256)种不同的地址编号,所以表中的第3、4条指令可访问256B的外部RAM空间。

表3-7 外部RAM与累加器A的数据传送指令

978-7-111-43252-4-Chapter03-14.jpg

3.ROM与累加器A的数据传送指令

ROM与累加器A的数据传送指令又称查表指令,它的操作码助记符是“MOVC”。

指令格式:MOVC目的操作数,源操作数

指令的功能是将源操作数中的内容送到目的操作数中。指令执行后,源操作数内容不变,目的操作数内容与源操作数一致。

ROM与累加器A的数据传送指令有2条,各条指令的形式和功能见表3-8。

表3-8 ROM与累加器A的数据传送指令(查表指令)

978-7-111-43252-4-Chapter03-15.jpg

【例3-2】 将ROM中从1234H开始的十个连续地址中的数据传送到RAM中从30H开始的十个连续地址中。

解答:程序设计有如下要点:

1)将ROM中的数传递给RAM,考虑使用查表指令MOVC。

2)由于需要连续的十个地址,考虑使用加法自加1指令INC。

3)由于INC只能针对于地址中内容加一,而不能使地址加1,考虑使用间接寻址方式配合,如INC R0与MOV@R0,A配合使用,使得A的内容送到以R0内容位地址的RAM空间中。

流程图及程序设计如下:

978-7-111-43252-4-Chapter03-16.jpg

978-7-111-43252-4-Chapter03-17.jpg

4.数据交换指令

数据交换指令的操作码助记符有3个:“XCH”、“XCHD”和“SWAP”。

指令格式:数据交换指令操作码助记符目的操作数,源操作数

指令的功能是将源操作数中的内容与目的操作数交换。指令执行后,源操作数内容和目的操作数内容互换。

数据交换指令有5条,各条指令的形式和功能见表3-9。

表3-9 数据交换指令

978-7-111-43252-4-Chapter03-18.jpg

【例3-3】 如图3-6所示,使用交换指令实现LED0、LED1、LED2、LED3亮,LED4、LED5、LED6、LED7灭。

解答:全字节交换指令:MOV R0,#0F0H

XCH A,R0

MOV P1,A

半字节交换指令:MOV A,#0FH

SWAP A

MOV P1,A

5.堆栈操作指令

堆栈操作指令有两个:进栈指令“PUSH”和出栈指令“POP”。指令的形式和功能见表3-10。

表3-10 堆栈操作指令

978-7-111-43252-4-Chapter03-19.jpg

小提示

数据传送类指令执行后,不会影响PSW的CY、AC、OV等标志位,但涉及累加器A中的数据改变时,将会影响到PSW的奇偶校验位P。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈