购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.3 数据传送指令说明

1.寄存器内容送累加器

格式:MOV A,Rn

代码: E8H~ EFH

操作:(A)←(Rn), n =0~ 7

说明:Rn在内部数据存储器中的地址由当前的工作寄存器区选择位RS1、RS0确定,可以是 00H~ 07H、08H~ 0FH、10H~ 17H或 18H~ 1FH。以后指令中对Rn不再重复说明。

2.累加器内容送寄存器

格式:MOV Rn,A

代码: F8H~ FFH

操作:(Rn)←(A), n =0~ 7

说明:目的操作数采用寄存器寻址方式。

3.内部RAM内容送累加器

格式:MOV A,@ Ri

代码: E6H~ E7H

操作:(A)←((Ri)), i =0,1

说明:Ri在内部数据存储器中的地址由当前工作寄存器区选择位RS1、RS0确定,分别为 01H,02H,08H,09H,10H,11H和 18H,19H。以后的指令中对Ri不再重复解释。该指令可以访问整个内部RAM空间(0~ 255单元)。

4.累加器内容送内部RAM

格式:MOV @ Ri,A

代码: F6H~ F7H

操作:((Ri))←(A), i =0,1

5.立即数送累加器

格式:MOV A,#data

代码:

操作:(A)←#data

说明:代码的第二字节为立即数,它与指令的操作码一起放在程序存储器中,执行该指令时,与操作码一起取到CPU中。

6.内部RAM或专用寄存器内容送累加器

格式:MOV A,direct

代码:

操作:(A)←(direct)

说明:代码的第二字节为直接地址,可以指向专用寄存器及内部RAM (0~ 127单元)。它与指令一起放在程序存储器中,执行该指令时,与操作码一起送到CPU,经地址译码访问指定单元。以后指令中对直接地址direct不再作解释。

7.累加器内容送内部RAM或专用寄存器

格式:MOV direct,A

代码:

操作:(direct)←(A)

8.立即数送寄存器

格式:MOV Rn,#data

代码:

操作:(Rn)←#data, n =0~ 7

9.立即数送内部

格式:MOV @Ri,#data

代码:

操作:((Ri))←#data, i =0,1

10.立即数送内部RAM或专用寄存器

格式:MOV direct,#data

代码:

操作:(direct)←#data

说明:这是一条 3字节指令,代码的第二字节为直接地址,第 3字节为立即数,在执行该指令时,它们与指令的操作码一起从程序存储器送到CPU。

11.寄存器内容送内部RAM或专用寄存器

格式:MOV direct,Rn

代码:

操作:(direct)←(Rn), n =0~ 7

12.内部RAM或专用寄存器内容送寄存器

格式:MOV Rn,direct

代码:

操作:(Rn)←(direct), n =0~ 7

13.内部RAM内容送内部RAM或专用寄存器

格式:MOV direct,@Rn

代码:

操作:(direct)←((Rn)), i =0,1

14.内部RAM或专用寄存器内容送内部RAM

格式:MOV @Ri,direct

代码:

操作:((Ri))←(direct), i =0,1

15.内部RAM和专用寄存器之间的直接传送

格式:MOV direct,direct

代码:

操作:(direct)←(direct), n =0~ 7

说明:这是一条 3字节指令,代码的第二、三字节分别为源操作数和目的绝对地址。指令的功能很强,它能实现内部RAM之间、专用寄存器之间或专用寄存器与内部RAM之间的直接数据传送。而执行时间为 2个机器周期。

16.16位立即数送数据指针

格式:MOV DPTR,#data16

代码:

操作:(DPH)←#data 15~ data 8

(DPH)←#data 7~ data 0

说明:这是整个指令系统中唯一的一条 16位数据的传送指令,用来设置地址指针。

17.外部数据存储器内容送累加器

格式:MOVX A,@Ri

代码: E2H~ E3H

操作:(A)←((Ri)), i =0,1

说明:指令执行时,在P3.7引脚上出现 有效信号,用做外部数据存储器的读选通信号。P0口上分时输出由Ri指定的 8位地址信息及输入该单元的内容。

18.累加器内容送外部数据存储器

格式:MOVX @Ri,A

代码: F2H~ F3H

操作:((Ri))←(A), i =0,1

说明:指令执行时,在P3.6引脚上出现 有效信号,用做外部数据存储器的写选通信号。P0口上分时输出由Ri指定的 8位地址信息及输出到该单元的数据。

以上两条与外部数据存储器传送数据的指令可以访问 256B的存储空间。

19.累加器内容送外部数据存储器

格式:MOVX @DPTR,A

代码: F0H

操作:((DPTR))←(A)

说明:指令执行时,P3.6经脚上输出 有效信号,用做外部数据存储器的写选通信号。DPTR所包含的 16位地址信息由P0(低 8位)和P2(高 8位)输出,累加器的内容由P0输出,P0口作分时复用的总线。

20.外部数据存储器内容送累加器

格式:MOVX A,@DPTR

代码: E0H

说明:指令执行时,P3.7引脚上输出 有效信号,用做外部数据存储器的读选通信号。DPTR所包含的 16位地址信息由P0(低 8位)和(高 8位)输出,选中单元的数据由P0输入到累加器,P0口作为分时复用的总线。

以上两条与外部数据存储器间的数据传送指令可以访问 64KB的存储空间。

21.数据存储器内容送累加器

格式:MOVC A,@A+DPTR

代码: 93H

说明:指令首先执行 16位无符号数的加法操作,获得基址与变址之和,低 8位相加产生进位时,直接加到高位,并不影响标志。

22.程序存储器内容送累加器

格式:MOVC A,@A+PC

代码: 83H

说明:指令首先将PC修正到下一条指令的地址上,然后执行 16位无符号数的加法操作,获得基址与变址之和,低 8位相加产生进位时,直接加到高位,并不影响标志。

以上两条MOVC是 64KB存储空间内的查表指令,实现程序存储器到累加器的代码或常数传送,每次传送一个字节。源操作数采用基址加变址寻址方法,基址寄存器分别为 16位的DPTR或程序计数器PC,变址寄存器为累加器。

23.寄存器内容与累加器内容交换

格式:XCH A,Rn

代码: C8H~ CFH

操作:(A) (Rn), n =0~ 7

24.内部RAM内容与累加器内容交换

格式:XCH A,@Ri

代码: C6H~ C7H

操作:(A) ((Ri)), i =0,1

25.内部RAM或专用寄存器内容与累加器内容交换

格式:XCH A,direct

代码:

操作:(A) (direct)

26.内部RAM低 4位内容与累加器低 4位内容交换

格式:XCHD A,@Ri

代码: C6H~ C7H

操作:(A 3~0 ((Ri 3~0 )), i =0,1

27.累加器低 4位与高 4位交换

格式:SWAP A

代码: C4H

操作:(A 3~0 (A 7~4

28.栈顶内容送内部RAM或专用寄存器

格式:POP direct

代码:

操作:(direct)←((SP))

(SP)←(SP)-1

说明:POP为堆栈操作指令,由堆栈指针SP所寻址的内部RAM单元的内容传送到指令中直接寻址的一个单元中去。然后,堆栈指针减 1。一般而言,执行此指令不影响标志,若目标操作数为PSW,则有可能使一些标志改变。这也是通过指令强行修改标志的一种方法。

29.内部RAM或专用寄存器内容送栈顶

格式:PUSH direct

代码:

操作:(SP)←(SP)+1

((SP))← direct

说明:PUSH也是堆栈操作指令,它把指令中直接寻址的一个字节压入到当前栈针加 1的单元中去。指令不影响标志。 6FXMTY+SoVOcnKTGy7qlOT1oyNLaH0kmtnUtOcvaC0scffSO1+TXtfmPXYu9lSSh

点击中间区域
呼出菜单
上一章
目录
下一章
×