1:以累加器为目的操作数的指令MOVA,Rn; (Rn)-A, n=0~7MOV@RiA,; ((Ri))-A i=0,1MOVA,direct;(direct)→AMOVA,#data#data→A:把源操作数内容送累加器A,源操作数有寄存器寻址、直接寻,例如:址、间接寻址和立即数寻址等方式,MOVR6寄存器寻址A,;(R6)→A,MOV@RO;((RO))一A,间接寻址A.MOV70H直接寻址A,;(70H)→A,MOVA,#78H;78H一A,立即数寻址21
21 1.以累加器为目的操作数的指令 MOV A,Rn ; (Rn)→A,n =0~7 MOV A,@ Ri ; ((Ri))→A i =0,1 MOV A,direct ; (direct)→A MOV A,#data ; #data→A 把源操作数内容送累加器A,源操作数有寄存器寻址、直接寻 址、间接寻址和立即数寻址等方式,例如: MOV A,R6 ;(R6)→A,寄存器寻址 MOV A,@R0 ;((R0))→A,间接寻址 MOV A,70H ;(70H)→A,直接寻址 MOV A,#78H ;78H→A,立即数寻址 21
2.以Rn为目的操作数的指令MOVRn,A(A)→Rn, n =0~7MOVRn, direct;(direct)→Rn ,n =0~7MOV#data→Rn,n=0~7Rn,#data把源操作数送入当前寄存器区的RO~R7中的某一寄存器3.以直接地址direct为目的操作数的指令MOV(A)→directdirect,AMOVdirect, Rn(Rn)→direct,n=0~7MOVdirect1,direct2;(direct2)→direct1MOV((Ri))→direct, i =0, 1direct, @RiMOVdirect, #data#data-direct22
22 2.以Rn为目的操作数的指令 MOV Rn,A ;(A)→Rn ,n =0~7 MOV Rn,direct ;(direct)→Rn ,n =0~7 MOV Rn,#data ;#data→Rn ,n =0~7 把源操作数送入当前寄存器区的R0~R7中的某一寄存器。 3.以直接地址direct为目的操作数的指令 MOV direct,A ; (A)→direct MOV direct,Rn ; (Rn)→direct,n =0~7 MOV direct1,direct2 ;(direct2)→direct1 MOV direct,@Ri ; ((Ri))→direct,i =0,1 MOV direct,#data ; #data→direct 22
把源操作数送入直接地址指定的存储单元。direct指的是内部RAM或SFR地址。4.以寄存器间接地址为目的操作数的指令MOV@Ri,A;(A)→((Ri)), i=0,1MOV@Ri, direct ; (direct)→((Ri)), i=O, 1MOV@Ri, #data;#data→((Ri)),i=0,1功能是把源操作数内容送入R0或R1指定的存储单元中。5.16位数传送指令MOVDPTR,#data16;#data16→DPTR功能是把16位立即数送入DPTR,用来设置数据存储器的地址指针。23
23 把源操作数送入直接地址指定的存储单元。direct指的是内 部RAM或SFR地址。 4.以寄存器间接地址为目的操作数的指令 MOV @Ri,A ;(A)→((Ri)), i=0,1 MOV @Ri,direct ;(direct)→((Ri)),i=0,1 MOV @Ri,#data ;#data→((Ri)), i=0,1 功能是把源操作数内容送入R0或R1指定的存储单元中。 5.16位数传送指令 MOV DPTR,#data16;#data16→DPTR 功能是把16位立即数送入DPTR,用来设置数据存储器的地址 指针。 23
AT89S52有两个DPTR,通过设置特殊功能寄存器AUXR1中的DPS位来选择。当DPS=1,则指令中的DPTR即为DPTR1,DPTRO被屏蔽,反之亦然。DPTR为16位的数据指针,分为DPH和DPL。操作十分灵活方便。设有两个DPTR后,就可避免频繁的出入堆栈操作。对于所有MOV类指令,累加器A是一个特别重要的8位寄存器,CPU对它具有其他寄存器所没有的操作指令。后面将要介绍的加、减、乘、除指令都是以A作为目的操作数24
24 AT89S52有两个DPTR,通过设置特殊功能寄存器AUXR1中的DPS 位来选择。当DPS=1,则指令中的DPTR即为DPTR1,DPTR0被 屏蔽,反之亦然。 DPTR为16位的数据指针,分为DPH和DPL。操作十分灵活方便。 设有两个DPTR后,就可避免频繁的出入堆栈操作。 对于所有MOV类指令,累加器A是一个特别重要的8位寄存器, CPU对它具有其他寄存器所没有的操作指令。后面将要介绍 的加、减、乘、除指令都是以A作为目的操作数
Rn为所选择的寄存器组中的RO~R7,直接地址direct为内部RAM的O00H~7FH和特殊功能寄存器(地址范围80H~FFH)在间接地址中,用RO或R1作为内部RAM的地址指针,可访问内部RAM的00H~7FH共128个单元。6.堆栈操作指令内部RAM中设定一个后进先出(LIFO,LastInFirstOut)的区域,称为堆栈。在特殊功能寄存器中有一个堆栈指针SP,指示堆栈的栈顶位置。堆栈操作有进栈和出栈两种因此,在指令系统中相应有两条堆栈操作指令。25
25 Rn为所选择的寄存器组中的R0~R7,直接地址direct为内部 RAM的00H~7FH和特殊功能寄存器(地址范围80H~FFH) 在间接地址中,用R0或R1作为内部RAM的地址指针,可访问 内部RAM的00H~7FH共128个单元。 6.堆栈操作指令 内部RAM中设定一个后进先出(LIFO,Last In First Out) 的区域,称为堆栈。在特殊功能寄存器中有一个堆栈指针 SP,指示堆栈的栈顶位置。堆栈操作有进栈和出栈两种, 因此,在指令系统中相应有两条堆栈操作指令。 25