格式:MOV A,Rn
代码: E8H~ EFH
操作:(A)←(Rn), n =0~ 7
说明:Rn在内部数据存储器中的地址由当前的工作寄存器区选择位RS1、RS0确定,可以是 00H~ 07H、08H~ 0FH、10H~ 17H或 18H~ 1FH。以后指令中对Rn不再重复说明。
格式:MOV Rn,A
代码: F8H~ FFH
操作:(Rn)←(A), n =0~ 7
说明:目的操作数采用寄存器寻址方式。
格式: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单元)。
格式:MOV @ Ri,A
代码: F6H~ F7H
操作:((Ri))←(A), i =0,1
格式:MOV A,#data
代码:
操作:(A)←#data
说明:代码的第二字节为立即数,它与指令的操作码一起放在程序存储器中,执行该指令时,与操作码一起取到CPU中。
格式:MOV A,direct
代码:
操作:(A)←(direct)
说明:代码的第二字节为直接地址,可以指向专用寄存器及内部RAM (0~ 127单元)。它与指令一起放在程序存储器中,执行该指令时,与操作码一起送到CPU,经地址译码访问指定单元。以后指令中对直接地址direct不再作解释。
格式:MOV direct,A
代码:
操作:(direct)←(A)
格式:MOV Rn,#data
代码:
操作:(Rn)←#data, n =0~ 7
格式:MOV @Ri,#data
代码:
操作:((Ri))←#data, i =0,1
格式:MOV direct,#data
代码:
操作:(direct)←#data
说明:这是一条 3字节指令,代码的第二字节为直接地址,第 3字节为立即数,在执行该指令时,它们与指令的操作码一起从程序存储器送到CPU。
格式:MOV direct,Rn
代码:
操作:(direct)←(Rn), n =0~ 7
格式:MOV Rn,direct
代码:
操作:(Rn)←(direct), n =0~ 7
格式:MOV direct,@Rn
代码:
操作:(direct)←((Rn)), i =0,1
格式:MOV @Ri,direct
代码:
操作:((Ri))←(direct), i =0,1
格式:MOV direct,direct
代码:
操作:(direct)←(direct), n =0~ 7
说明:这是一条 3字节指令,代码的第二、三字节分别为源操作数和目的绝对地址。指令的功能很强,它能实现内部RAM之间、专用寄存器之间或专用寄存器与内部RAM之间的直接数据传送。而执行时间为 2个机器周期。
格式:MOV DPTR,#data16
代码:
操作:(DPH)←#data 15~ data 8
(DPH)←#data 7~ data 0
说明:这是整个指令系统中唯一的一条 16位数据的传送指令,用来设置地址指针。
格式:MOVX A,@Ri
代码: E2H~ E3H
操作:(A)←((Ri)), i =0,1
说明:指令执行时,在P3.7引脚上出现 有效信号,用做外部数据存储器的读选通信号。P0口上分时输出由Ri指定的 8位地址信息及输入该单元的内容。
格式:MOVX @Ri,A
代码: F2H~ F3H
操作:((Ri))←(A), i =0,1
说明:指令执行时,在P3.6引脚上出现 有效信号,用做外部数据存储器的写选通信号。P0口上分时输出由Ri指定的 8位地址信息及输出到该单元的数据。
以上两条与外部数据存储器传送数据的指令可以访问 256B的存储空间。
格式:MOVX @DPTR,A
代码: F0H
操作:((DPTR))←(A)
说明:指令执行时,P3.6经脚上输出 有效信号,用做外部数据存储器的写选通信号。DPTR所包含的 16位地址信息由P0(低 8位)和P2(高 8位)输出,累加器的内容由P0输出,P0口作分时复用的总线。
格式:MOVX A,@DPTR
代码: E0H
说明:指令执行时,P3.7引脚上输出 有效信号,用做外部数据存储器的读选通信号。DPTR所包含的 16位地址信息由P0(低 8位)和(高 8位)输出,选中单元的数据由P0输入到累加器,P0口作为分时复用的总线。
以上两条与外部数据存储器间的数据传送指令可以访问 64KB的存储空间。
格式:MOVC A,@A+DPTR
代码: 93H
说明:指令首先执行 16位无符号数的加法操作,获得基址与变址之和,低 8位相加产生进位时,直接加到高位,并不影响标志。
格式:MOVC A,@A+PC
代码: 83H
说明:指令首先将PC修正到下一条指令的地址上,然后执行 16位无符号数的加法操作,获得基址与变址之和,低 8位相加产生进位时,直接加到高位,并不影响标志。
以上两条MOVC是 64KB存储空间内的查表指令,实现程序存储器到累加器的代码或常数传送,每次传送一个字节。源操作数采用基址加变址寻址方法,基址寄存器分别为 16位的DPTR或程序计数器PC,变址寄存器为累加器。
格式:XCH A,Rn
代码: C8H~ CFH
操作:(A) (Rn), n =0~ 7
格式:XCH A,@Ri
代码: C6H~ C7H
操作:(A) ((Ri)), i =0,1
格式:XCH A,direct
代码:
操作:(A) (direct)
格式:XCHD A,@Ri
代码: C6H~ C7H
操作:(A 3~0 ) ((Ri 3~0 )), i =0,1
格式:SWAP A
代码: C4H
操作:(A 3~0 ) (A 7~4 )
格式:POP direct
代码:
操作:(direct)←((SP))
(SP)←(SP)-1
说明:POP为堆栈操作指令,由堆栈指针SP所寻址的内部RAM单元的内容传送到指令中直接寻址的一个单元中去。然后,堆栈指针减 1。一般而言,执行此指令不影响标志,若目标操作数为PSW,则有可能使一些标志改变。这也是通过指令强行修改标志的一种方法。
格式:PUSH direct
代码:
操作:(SP)←(SP)+1
((SP))← direct
说明:PUSH也是堆栈操作指令,它把指令中直接寻址的一个字节压入到当前栈针加 1的单元中去。指令不影响标志。