资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第三章 80,C51,单片机指令系统,3.1指令系统概要,一、指令系统分类及技术指标,共111种指令,按功能分为5类,数据传送(29条),算术操作(24条),逻辑操作(24条),控制转移(17条),布尔变量操作(17条),指令字节数,单字节指令占44%,双字节指令占42%,三字节指令占15%,指令执行的时间,单机器周期(12/,fosc)58%,双机器周期(24/,fosc)41%,两条指令是4个机器周期,二、汇编语言中常用符号,符号,意义,说明,Rn,当前寄存器,R0R7,Ri,R0,或,R1,间址,内低128,BRAM,外256,B RAM,direct,直接地址,内部,RAM,#,data,8,位立即数,在指令中,#,data16,16位立即数,在指令中,addr11,11位目的地址,2,K ROM,addr16,16位目的地址,64,K ROM,rel,8位相对地址,-128127,B,bit,位地址,内部,RAM,设:,fosc=12MHz,,则对应的机器周期为,单机器周期=1,s,双机器周期=2,s,4个机器周期=4,s,每条指令由两部分组成:,操作码:指令的功能,操作对象:操作地址(含寄存器名地址)或数据,操作码 1,Byte,操对象 12,B,操对象1,B,第三章 80C51单片机指令系统3.1指令系统概要二、汇,1,3.2,8051存储器结构,一、存储器结构,8051单片机程序存储器和数据存储器分开,由,PSEN,选通外部程序存储器,,由,RD(P3.7),和,WR(P3.6),读写外部数据存储器(,MOVX,),(一)程序存储器,存放程序或固定数据,只能取指令读或程序,MOVC,读取,说明:,1、8051可寻址64,K,程序空间;,2、8051内部有4,KBROM;,3、,执行到0,FFFH,到外部取指;,4、8031无内部,ROM;,5、,程序存储器访问通过,(1)地址有效;,(2),PSEN,有效;,3.2 8051存储器结构说明:4、8031无内部RO,2,(二)数据存储区,8051分为片内数据存储器(256,B),和片外数据存储器,1、内部,RAM,由8位地址线寻址,00,H7FH:,存储区,80,H FFH:,特殊功能寄存器区,2、片外,RAM,由16位地址寻址,寻址空间64,KB,片外数据存储器访问条件:,(1)地址信号有效;,(2),RD/WR,信号有效;,二、内部数据存储器,内部数据存储器低128字节为,RAM,高128字节为特殊功能寄存器区,(,一),RAM,区,1、,通用寄存器区,4,组8个8位寄存器,R0R7,由,PSW,中的,RS1,RS0,选择当前工作区,2、位寻址空间,20,H2FH,字节可以位寻址128位00,H7FH,3、寻址内部,RAM,空间,30,H7FH,字节(80,B),(二)数据存储区8051分为片内数据存储器(256B)和片外,3,4、特殊功能寄存器,*,表示 可以位寻址的寄存器(其地址可被8整除),共21个,SFR,,离散分布,只能使用直接寻址,标识符,名 称,地址,*,ACC,累加器,E0H,*,B,B,寄存器,F0H,*,PSW,程序状态字,D0H,SP,堆栈指针,81,H,DPTR,数据指针(,DPH,和,DPL),82,H,83H,*,P0,口0,80,H,*,P1,口1,90,H,*,P2,口2,A0H,*,P3,口3,B0H,*IP,中断优先级寄存器,B8H,*,IE,中断控制寄存器,A8H,TMOD,定时器方式寄存器,89,H,*TCON,定时器控制寄存器,88H,标识符,名 称,地址,TH0,计数器0高位,8CH,TL0,计数器0低位,8AH,TH1,计数器1高位,8DH,TL1,计数器1低位,8,BH,*SCON,串行口控制,98H,SBUF,串行数据缓冲器,99H,PCON,电源控制,97H,4、特殊功能寄存器*表示 可以位寻址的寄存器(其地址可被8整,4,序号,寻址方式,寻址存储器空间,1,寄存器寻址,R0R7(Rn),如,MOV A,R0,A,B,C,DPTR,MOV A,DPTR,2,直接寻址,内部,RAM(,低128,B),如,MOV A,3AH,特殊功能寄存器(,SFR),(3A),A,3,寄存器间接,寻 址,内,RAM(R0,R1(Ri),SP),MOV A,R0,外,RAM(R0,R1,DPTR),MOV A,DPTR,(R0),A,(DPTR)A,4,立即数寻址,程序存储器,ROM,中的常数(#,data),数38,H,1234H,MOV A,#38H;MOV DPTR,#1234H,5,变址寻址,程序存储器(,A+PC,A+DPTR),MOVC A,A+PC (A)+(PC),A,JMP,A+DPTR (A)+(DPTR),PC,6,相对寻址,ROM,256,B,范围(当前,PC+/-,偏移量,rel),目标可以是寄存器,xx,直接,7,位寻址,内部,RAM,的20,H2FH,16B(0127),MOV C,30H,可位寻址的,SFR(21,个)(128255),进位,3.3 8051寻址方式,(7种),和寻址空间,序号寻址方式寻址存储器空间1寄存器寻址R0R7(Rn),5,3.4.1 数据传送指令(29条),一,、向累加器,A,的传送(目的),MOV A,Rn ;(A)(Rn),MOV A,direct;(A)(direct),MOV A,Ri ;(A)(Ri),MOV A,#data;(A)data,二、向通用寄存器传送,MOV Rn,A,;(Rn)(A),MOV Rn,direct,;(Rn)(direct),MOV Rn,#data ;(Rn)data,三、向直接地址传送,MOV direct,A ;(direct)(A),MOV direct,Rn ;(direct)(Rn),MOV direct,direct,;(direct)(direct),MOV direct,Ri;(direct)(Ri),MOV direct,#data,;(direct)data,四、间址传送,MOV Ri,A ;(Ri)(A),MOV Ri,direct;(Ri)(direct),MOV Ri,#data;(Ri)data,3.4,MCS-51,指令系统,3.4.1 数据传送指令(29条)一、向累加器A的传送(,6,六、累加器传送指令,字节交换指令,XCH A,Rn ;(A),(,Rn),XCH A,direct,;(,A),(direct),XCH A,Ri ;(A),(Ri),半字节交换指令,XCHD A,Ri;,(,A,03,),(Ri),03,),累加器高4位与低4位数据互换,SWAP A ;,(,A,03,),(A,47,),五、堆栈操作,入栈指令,PUSH direct ;(sp)(sp)+1,;(sp)(direct),出栈指令,POP direct ;(direct)(sp),;(sp)(sp)-1,累加器与外部,RAM,的传送,MOVX A,Ri;(A),(Ri),MOVX A,DPTR;,;(A),(DPTR),MOVX Ri,A;,(Ri),(A),WR,有效,MOVX DPTR,A;WR(P3.6),有效,;,(DPTR),(A),累加器与程序存储器传送,MOVC A,A+DPTR,;(A),(A)+(DPTR),MOVC A,A+PC,;(PC),(PC)+1,(A),(A)+(PC),七、目标地址传送指令,MOV DPTR,#data16,;,(,DPTR),data16,六、累加器传送指令五、堆栈操作入栈指令累加器与外部RAM的传,7,4、十进制调整指令,DA A,;,对(,A),的,加结果,进行十进制调整,3.4.2 算术运算指令(24条,),一、加法指令,1、加法,ADD A,Rn ;(A),(A)+(Rn),ADD A,direct,;(,A),(A)+(direct),ADD A,Ri,;(,A),(A)+(Ri),ADD A,#data,;(,A),(A)+data,注:加/减法指令影响,Ac,Cy,OV,P,3、加1指令,INC A ;(A),(A)+1,INC Rn ;(Rn),(Rn)+1,INC direct;(direct),(direct)+1,INC Ri ;(Ri),(Ri)+1,INC DPTR,;(DPTR),(DPTR)+1,注:加/减1指令不影响,PSW(Cy),2、带进位加法,ADDC A,Rn ;(A),(A)+(Rn)+(C),ADDC A,direct,;,(,A),(A)+(direct)+(C),ADDC A,Ri,;(,A),(A)+(Ri)+(C),ADDC A,#data,;(,A),(A)+data+(C),4、十进制调整指令3.4.2 算术运算指令(24条)一、,8,三、乘法指令,MUL AB;(BA),(A)*(B),(A)0FFH,则,OV=1,(B)=,非零,否则,,OV=0,(B)=0,四、除法指令,DIV AB ;(A),(A)/(B),;(B,),(A)%(B),Cy=OV=0,若(,B)=00H,(A),和(,B),结果不定,置,OV=1,表示0除数错误(,Cy=0),无不带借位指令,使用前要先,CLR C,使,Cy=0,影响标志位,PSW:Cy,AC,OV,P,二、减法指令,1、带借位减法指令,SUBB A,Rn,;(A),(A)-(Rn)-(C),SUBB A,direct,;(,A),(A)-(direct)-(C),SUBB A,Ri,;(A),(A)-(Ri)-(C),SUBB A,#data,;(,A),(A)-data-(C),2、,减1指令,DEC A ;(A),(A)-1,DEC Rn ;(Rn),(Rn)-1,DEC direct ;(direct),(direct)-1,DEC Ri ;(Ri),(Ri)-1,不影响,PSW,三、乘法指令四、除法指令无不带借位指令二、减法指令1、带借位,9,6、累加器,A,带进位循环右移,RRC A;,3.4.3 逻辑运算指令(24条),一、单操作数逻辑运算指令,1、累加器,A,清零,CLR A ;(A),0,3、累加器,A,循环左移,RL A;,4、累加器,A,循环右移,RR A;,5、累加器,A,带进位循环左移,RLC A;,2、累加器,A,取反,CPL,A ;(A),(A),RLC A:,可以实现快速(,A),2,RRC A:,可以实现快速(,A)/2,6、累加器A带进位循环右移3.4.3 逻辑运算指令(2,10,二、双操作数逻辑运算指令,逻辑操作指令只影响标志位,P,1、,逻辑“与”指令,ANL,A,Rn,;(A),(A)&(Rn),ANL A,direct,;(,A),(A)&(direct),ANL A,Ri,;(,A),(A)&(Ri),ANL A,#data,;(,A),(A)&data,ANL direct,A,;(,direct),(direct)&(A),ANL direct,#data,;(,direct),(direct)&data,2、,逻辑“或”指令,ORL,A,Rn,;(A),(A)|(Rn),ORL A,direct,;(,A),(A)|(direct),ORL A,Ri,;(,A),(A)|(Ri),ORL A,#data,;(,A),(A)|data,ORL direct,A,;(,direct),(direct)|(A),ORL direct,#data,;(,direct),(direct)|data,二、双操作数逻辑运算指令逻辑操作指令只影响标志位P2、逻辑“,11,(2)长调用(64,K),LCALL addr16,;,(pc),(pc)+3,;(sp),(sp)+1,(sp),(pc,07,),;(sp),(sp)+1,(sp
展开阅读全文