首页 理论教育 单片机数据传送指令详解

单片机数据传送指令详解

时间:2023-10-22 理论教育 版权反馈
【摘要】:数据传送指令共29条,可分为内部ram数据传送、外部ram数据传送、程序存储器数据传送、数据交换和堆栈操作5类。对标志位的影响:除以累加器a为目的操作数的数据传送指令对p标志位有影响外,其余均不影响标志位。

单片机数据传送指令详解

cpu在进行算术和逻辑操作时,绝大多数指令都有操作数,所以数据传送是一种最基本、最主要的操作。

数据传送指令共29条,可分为内部ram数据传送、外部ram数据传送、程序存储器数据传送、数据交换和堆栈操作5类。

寻址范围:累加器a、片内ram、sfr、片外ram。

功能:(目的地址)←(源地址),可表示为<dest>←<src>,源地址单元的内容不变。

对标志位的影响:除以累加器a为目的操作数的数据传送指令对p标志位有影响外,其余均不影响标志位。

1.内部ram数据传送指令(16条)格式:

978-7-111-46285-9-Chapter03-15.jpg

其中,<dest>表示目的操作数,<src>表示源操作数。

范围:源、目的操作数均在片内ram、sfr中。

指令形式:按目的操作数可将内部数据传送指令分为以下几类。

(1)以累加器a为目的操作数(4条)

978-7-111-46285-9-Chapter03-16.jpg

其中,<src>包括rn、@ri、direct、#data。(各个符号的意义见2.1.3节指令中的常用符号,以下同。)

只影响psw中的p标志位,不影响其他标志位。

(2)以工作寄存器rn为目的操作数(3条)

978-7-111-46285-9-Chapter03-17.jpg

其中,<src>包括a、direct、#data。

(3)以直接地址单元为目的操作数(5条)

978-7-111-46285-9-Chapter03-18.jpg

其中,<src>包括a、rn、@ri、direct、#data。

(4)以间址寄存器@ri为目的操作数(3条)

978-7-111-46285-9-Chapter03-19.jpg

其中,<src>包括a、direct、#data。

(5)16位数据传送指令(1条)

978-7-111-46285-9-Chapter03-20.jpg

注:上述(2)、(3)、(4)、(5)中的指令形式均不影响标志位。

内部数据传送指令的传送关系如图3-1所示。

978-7-111-46285-9-Chapter03-21.jpg

图3-1 内部数据传送指令的传送关系(www.xing528.com)

2.外部ram数据传送指令(4条)

cpu与外部数据存储器之间进行数据传送时,必须使用外部传送指令,只能通过累加器a,采用寄存器间接寻址(用r0,r1和dptr这3个间接寻址的寄存器)方式完成。指令格式:978-7-111-46285-9-Chapter03-22.jpg

其中,<src>、<dest>包括@dptr、@ri。ri(r0,r1)只能访问片外ram的低256个单元;dptr可以访问片外ram的全部64kb的空间。

对标志位的影响:“movx a,<src>”指令只影响psw中的p标志位,不影响其他标志位;“movx<dest>,a”指令不影响标志位。

3.程序存储器(rom)数据传送指令(查表指令)(2条)

程序存储器的数据传送是单向的,并且只能读到累加器a中。这类指令专门用于查表,又称为查表指令。指令格式:978-7-111-46285-9-Chapter03-23.jpg

两条指令的异同:其功能完全相同,但使用中存在着差异。

(1)查表的位置要求不同 采用dptr作为基地址寄存器,表可以放在64kb程序存储器空间的任何地址,使用方便,故称为远程查表。

采用pc作为基地址寄存器,具体的表在程序存储器中只能在查表指令后的256b的地址空间中,使用有限制,故称为近程查表。

(2)偏移量的计算方法不同 采用dptr作为基地址寄存器,查表地址为(a)+(dptr)。采用pc作为基地址寄存器,查表地址为(a)+(pc)+1。因此偏移量的计算方法不同。

采用dptr作为基地址寄存器,a为欲查数值距离表首地址的值;采用pc作为基地址寄存器,a的值必须预先设置为

a的值=表首地址-当前指令的pc值-1

4.数据交换指令(5条)

数据传输时,若需要保存目的操作数,则经常采用数据交换指令。

(1)半字节数据交换指令(2条)

指令格式:978-7-111-46285-9-Chapter03-24.jpg

(2)字节交换指令(3条)

指令格式:978-7-111-46285-9-Chapter03-25.jpg

其中,<src>包括rn、@ri、direct。

5.堆栈操作指令(2条)

指令格式:978-7-111-46285-9-Chapter03-26.jpg

特点:堆栈操作指令是一种特殊的数据传送指令,是根据栈指针sp中的栈顶地址进行数据操作。堆栈操作指令的实质是以栈指针sp为间址寄存器的间址寻址方式。堆栈区应避开使用的工作寄存器区和其他需要使用的数据区,系统复位后,sp的初始值为07h。为了避免重叠,一般初始化时要重新设置sp。

功能:实现将ram单元数据送入栈顶或由栈顶取出数据送至ram单元。

适用场合:用于执行中断、子程序调用、参数传递等程序的断点保护和现场保护。

书写方式:堆栈操作指令是直接寻址指令,直接地址不能是寄存器名,因此应注意指令的书写格式。

例如

978-7-111-46285-9-Chapter03-27.jpg

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

我要反馈