1. 以累加器为目的操作数的指令 MOV A,Rn ;(Rn)→A,n=0~7 MOV A,@Ri ;(R)→Ai=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 ;(7OH)→A,直接寻址 MOV A,#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为目的操作数的指令 MOV Rn,A ;(A)→Rn,n=0≈7 MOV Rn,direct ;(di rect).→Rn,n=0≈7 MOV Rn,#data ;#data→Rn,n=0~7 把源操作数送入当前寄存器区的R0R7中的某一寄存器。 3.以直接地址di rect为目的操作数的指令 MOV direct,A ;(A)→direct MOV direct,Rn ;(Rn)→direct,n=0~7 MOV direct1,direct2 (direct2)-direct1 MOV direct,@Ri ;((R)→direct,i=0,1 MOV direct,#data #data→direct 22
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 @R/,A ;(A)→((R)),=0,1 MOV @Ri,direct;(d i rect),→((R)),=0,1 MOV @R/,#data ;#data((R)),/=0,1 功能是把源操作数内容送入R0或R1指定的存储单元中。 5.16位数传送指令 MOV DPTR,#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对它具有其他寄存器所没有的操作指令。后面将要介绍 的加、减、乘、除指令都是以作为目的操作数。 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的OOH~7FH和特殊功能寄存器(地址范围8OH~FFH) 在间接地址中,用RO或R1作为内部RAM的地址指针,可访问 内部RAM的00H~7FH共128个单元。 6。堆栈操作指令 内部RAM中设定一个后进先出(LIF0,Last In First Out) 的区域,称为堆栈。在特殊功能寄存器中有一个堆栈指针 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