资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,51系列单片机指令系统,51系列单片机指令系统有111条指令,其中有49条单字节、45条双字节、17条三字节,有64条单周期、45条双周期、2条四周期,按功能可分为,数据传送类指令,算术运算类指令,逻辑运算类指令,位操作类指令,控制转移类指令,51系列单片机指令系统51系列单片机指令系统有111条指令,1,指令寻址方式,51系列单片机指令系统有七种寻址方式,立即寻址方式,直接寻址方式,寄存器寻址方式,寄存器间接寻址方式,基址加变址寻址方式,相对寻址方式,位寻址方式,指令寻址方式51系列单片机指令系统有七种寻址方式,2,立即寻址方式,立即寻址方式在指令中直接给出操作数,表示立即数时前面加 #,立即数可以用,二进制数 (B),十六进制数 (H),十进制数,例:,MOV A,#23H MOV DPTR,#2040H,立即寻址方式立即寻址方式在指令中直接给出操作数,3,直接寻址方式,直接寻址方式指令中给出操作数地址,直接寻址方式可寻址,内部128字节RAM,特殊功能寄存器SFR,特殊功能寄存器只能使用直接寻址方式,可以用其名称表示直接地址,例:,MOV 90H,A MOV P1,A,直接寻址方式直接寻址方式指令中给出操作数地址,4,寄存器寻址方式,寄存器寻址方式指令中给出寄存器编号,寄存器编号为 R0 - R7,其对应单元位置由 RS1、RS0,决定,例,INC R0,ADD A,R2,寄存器寻址方式寄存器寻址方式指令中给出寄存器编号,5,寄存器间接寻址方式,寄存器间接寻址在指令中给出存放操作数地址的寄存器,可用于间接寻址方式的寄存器有,R0、R1,用于寻址内部128字节RAM,DPTR 用于寻址外扩数据存储器( R0、R1),寻址外扩数据存储器,只能用寄存器间接寻址方式,例:,MOV A,R0 MOVX DPTR,A,寄存器间接寻址方式寄存器间接寻址在指令中给出存放操作数地址的,6,基址加变址寻址方式,基址加变址寻址方式是以累加器A中内容加上基址寄存器的值形成操作数地址,可用做基址寄存器的是,DPTR 或 PC,基址加变址寻址方式只用于读取程序存储器中数据,例:,MOVC A,A+DPTR,MOVC A,A+PC,基址加变址寻址方式基址加变址寻址方式是以累加器A中内容加上基,7,相对寻址方式,相对寻址方式仅用于转移指令,相对转移的基准是PC当前值,相对转移的范围为 -128 +127,所有的条件转移都采用相对寻址方式,例:,JNZ rel,rel,可为一指令标号,其位置应在相对转移的范围内,相对寻址方式相对寻址方式仅用于转移指令,8,位寻址方式,对片内RAM中20H-2FH单元的各位和SFR中单元地址能被8整除的各位进行位操作。,位地址空间为:00H-0FFH,位地址采用直接地址形式,与字节直接寻址的区别:,传送指令由另一操作数判断,专用位操作指令,位寻址方式对片内RAM中20H-2FH单元的各位和SFR中单,9,数据传送类指令,数据传送类指令有29条,分为5类,内部RAM及SFR间传送 MOV,读写外部数据存储器 MOVX,读程序存储器 MOVC,数据交换 XCH XCHD SWAP,栈操作 PUSH POP,传送指令不影响标志位,数据传送类指令数据传送类指令有29条,分为5类,10,内部RAM及SFR间传送(MOV),另有一条16位传送指令,MOV DPTR,#16,内部RAM及SFR间传送(MOV)另有一条16位传送指令,11,读写外部数据存储器,读写外部数据存储器指令助记符为MOVX,读写外部数据存储器必须通过累加器A,读写外部数据存储器指令只能用间接寻址方式,间址单元为 DPTR 或 R0、R1,MOVX A ,DPTR MOVX DPTR,A,MOVX A ,Ri MOVX Ri ,A,读写外部数据存储器读写外部数据存储器指令助记符为MOVX,12,读程序存储器,读程序存储器指令助记符为 MOVC,读程序存储器必须通过累加器A,读程序存储器指令只能用变址寻址方式,变址单元为 DPTR 或PC,MOVC A ,A+DPTR,MOVC A ,A+PC,读程序存储器读程序存储器指令助记符为 MOVC,13,数据交换,字节交换指令,Rn,XCH A, direct,Ri,半字节交换指令,XCHD A,Ri,累加器A中低四位与Ri所指单元低四位交换,SWAP A,累加器A中高四位与低四位交换,数据交换字节交换指令,14,栈操作指令,栈操作只能用直接寻址方式,压栈指令,PUSH direct,出栈指令,POP direct,栈操作指令栈操作只能用直接寻址方式,15,算术运算指令,算术运算指令共有24条,算术运算指令将影响标志位,算术运算包括,加 ADD、带进位加 ADDC,带借位减 SUBB,增量 INC 、减量 DEC,乘 MUL、除 DIV,十进制调整 DA A,算术运算指令算术运算指令共有24条,16,加减指令,加减指令,17,其他算术运算指令,16位寄存器加一指令 INC DPTR,十进制调整指令 DA A,乘法指令 MUL AB,(A) X (B) = BA,Cy = 0,若乘积0FFH 则 OV=1,除法指令 DIV AB,(A) / (B) = A B,Cy = 0,若(B)=0 则 OV=1,其他算术运算指令16位寄存器加一指令 INC,18,逻辑运算类指令,逻辑运算类指令有24条,单操作数指令,累加器操作指令,移位指令,双操作数指令,逻辑与,逻辑或,逻辑异或,逻辑运算类指令逻辑运算类指令有24条,19,累加器操作指令,累加器清零,CLR A,只影响P标志,累加器求反,CPL A,不影响标志,累加器操作指令累加器清零,20,移位指令,移位指令必须经累加器A,所有移位都是循环移位,分左移、右移,可带进位移或不带进位移,RL A RLC A,RR A RRC A,除带进位移位外,不影响标志,移位指令移位指令必须经累加器A,21,双操作数逻辑运算指令,以累加器A为目的单元,以直接地址direct为目的单元(读-修改-写),双操作数逻辑运算指令以累加器A为目的单元,22,控制转移类指令,控制转移类指令有17条,分为:,无条件转移指令,判零转移指令,比较转移指令,循环转移指令,调用返回指令,控制转移类指令控制转移类指令有17条,分为:,23,无条件转移指令,短转移指令 AJMP addr11,PC高5位与指令中给出的11位地址相加,可在2K范围内转移,长转移指令 LJMP addr16,转移范围为整个64K存储空间,相对转移指令 SJMP rel,转移范围为-128+127,散转指令 JMP A+DPTR,无条件转移指令短转移指令 AJMP addr,24,散转指令,累加器A中内容与DPTR内容相加形成转移地址,A=?,AJMP,AJMP,AJMP,AJMP,AJMP,A=0 A=2 A=4 A=6 A=8,散转指令累加器A中内容与DPTR内容相加形成转移地址A=?A,25,比较转移指令,比较转移指令,CJNE 操作数1,操作数2,操作数3,A , direct , rel,A , #data , rel,Rn , #data , rel,Ri , #data , rel,操作数1与操作数2比较,不等于零转移,操作数1操作数2 则 Cy=“1”,CJNE,JC,Y,N,Y,N,A=B AB,比较转移指令比较转移指令CJNEJCYNYN A=B,26,循环转移指令,循环转移指令是相对转移,循环计数器减一,不等于“0”转移,循环计数器可用,工作寄存器 DJNZ Rn , rel,直接地址 DJNZ direct , rel,循环转移指令循环转移指令是相对转移,27,调用返回指令,调用指令,短调用(2K范围内) ACALL addr11,长调用(64K范围内) LCALL addr16,返回指令,子程序返回 RET,中断返回 RETI,空操作,NOP,调用返回指令调用指令,28,判零转移指令,判零是根据累加器A中是否为零的状态进行转移,判零转移指令有2条,都是相对转移指令,JZ 累加器为“0”转移,JNZ 累加器非,“0”转移,判零转移指令判零是根据累加器A中是否为零的状态进行转移,29,位寻址与布尔处理器,8051中含有一个一位的布尔处理器,布尔处理器以Cy为位累加器,布尔处理器可以进行,逻辑与、逻辑或运算,置位、清零、求反,位处理单元有256个地址,20H-2FH,单元,SFR中地址能被8整除的单元,位寻址与布尔处理器8051中含有一个一位的布尔处理器,30,位地址的表示形式,位地址只有直接寻址方式,直接地址 0D5H,单元地址.位序号 0D0H.5,单元名称.位序号 PSW.5,位寄存器名称 F0,位地址的表示形式位地址只有直接寻址方式,31,位操作类指令(17条),位传送指令:,MOV C , bit,MOV bit ,C,位变量修改指令:,清“0” CLR C CLR bit,置“1” SETB C SETB bit,求反 CPL C CPL bit,位操作类指令(17条)位传送指令:,32,位变量逻辑操作指令,指定位变量与位累加器Cy进行逻辑操作,结果在Cy中,逻辑与 ANL C,bit ANL C,/bit,逻辑或 ORL C,bit ORL C,/bit,注意区分位操作指令与字节操作指令,ANL C,20H,ANL A,20H,位变量逻辑操作指令指定位变量与位累加器Cy进行逻辑操作,结果,33,判位转移指令,JC 有进位转移,JNC 无进位转移,JB bit=“1”转移,JNB bit=“0”转移,JBC bit=“1”转移且转移后将 bit 清零,判位转移指令JC 有进位转移,34,指令格式,标号,:, 操作码 操作数1,操作数2,操作数3 ,;,注释,标号用来表示转移地址,操作码指明指令操作,操作数指出参加操作的数据或其存放地址,注释对指令功能进行说明,注意格式中各段之间的间隔符,指令格式标号: 操作码 操作数1,操作数2,35,
展开阅读全文