【大学课件】MCS51单片机的指令系统P53.ppt
第3章 MCS-51单片机的指令系统,教学提示:指令是CPU用于控制功能部件完成某一指定动作的指示和命令。一台计算机全部指令的集合称为指令系统。指令系统体现了计算机的性能,也是计算机重要的组成部分,应用计算机进行程序设计的基础。单片机应用系统的运行,是依靠合理的硬件接口、用户程序和监控程序的完美结合实现的,所以掌握单片机需要学习指令和多样的汇编程序设计实现运算和控制功能。,http:/,第3章 MCS-51单片机的指令系统,教学要求:本章让学生了解单片机指令系统的特点和功能、操作的对象和结果、汇编语言程序结构的设计。应重点掌握指令的基本形态、指令的格式、寻址方式和用途;汇编语言编程的基本方法,熟悉常用的子程序,能够正确运用汇编指令编制单片机应用系统的用户程序和监控程序。,http:/,3.1 指令格式及其符号说明3.2 指令格式3.3 MCS-51的指令集3.4 汇编语言的基本形式3.5 汇编语言的基本结构 3.6 本章小结,第3章 MCS-51单片机的指令系统,http:/,111条归类指令:数据传送(与交换)类指令算术运算类指令逻辑运算与移位(循环)类指令控制转移类(子程序调用与转移类)指令布尔变量操作类(位操作类)指令,3.1 指令格式及其符号说明,http:/,指令特点:指令短,49条单字节,46条双字节,16条三字节指令执行时间快:64条单周期指令,45条双周期指令,2条四周期指令用一条指令可实现2个单字节的乘法或除法运算具有丰富的位操作指令可直接用传送指令实现端口的输入/输出操作,http:/,3.1.1 MCS-51单片机指令格式 MCS-51指令由操作码助记符和操作数两部分组成。指令格式如下:标号:操作码助记符 目的操作数,源操作数;注释,http:/,3.1.2 指令的字节单字节指令(49条)双字节指令(46条)三字节指令(16条),http:/,3.1.3 MCS-51单片机的助记符语言如 MOV MOVX PUSH POP CLR RL RR CJNE,http:/,3.1.4 常用符号说明Rn:R0R7Ri:R0、R1dir:8位直接字节地址(内RAM和SFR)#data8:8位立即数#data16:16位立即数Addr16:16位地址值Addr11:11位地址值Bit:位地址Rel:相对偏移量(单字节补码数)$:当前指令所在的地址,http:/,7种寻址方式立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址、位寻址,3.2 寻址方式,http:/,指令中直接给出操作数的寻址方式立即操作数指在8位数或16位数前加符号表示例:MOV A,80H MOV DPTR,#2000H MOV 30H,55H,3.2.1 立即寻址,http:/,指令中直接给出操作数地址的寻址方式能用直接地址的有SFR和内RAM例:MOV PSW,50H ORL A,30H MOV 30H,50H,3.2.2 直接寻址,http:/,以通用寄存器的内容为操作数的寻址方式通用寄存器包括A、B、DPTR、R0R7例:CLR A INC DPTR MUL AB ADD A,R2A、B既是通用寄存器又是SFR,R0R7是指在被选中的当前工作寄存器,3.2.3 寄存器寻址,http:/,以寄存器中的内容为地址,该地址中的内容为操作数的寻址方式能用寄存器间接寻址的有R0、R1、SP、DPTR,SP仅用于堆栈操作间接寻址的空间包括内RAM和扩展的外RAM 内RAM可用R0、R1间接寻址,外RAM可用DPTR间接寻址,也可用R0、R1,但用R0、R1时由P2口提供高8位地址例:MOV R0,A MOVX A,R0 MOVX DPTR,A PUSH ACC POP 20H,3.2.4 寄存器间接寻址,http:/,由基址寄存器PC或DPTR加上偏移量寄存器A中内容之和形成操作数地址的寻址方式变址寻址只能对ROM中的数据作寻址操作,只读操作例:MOVC A,A+DPTR MOVC A,A+PC,3.2.5 变址寻址,http:/,以当前PC的内容为基值,加上指令给出的1字节补码数形成新的PC值的寻址方式只用于修改PC值,主要用于实现程序的分枝转移例:SJMP$SJMP LPP CJNE A,#30H,LPP JZ LPP JNB P1.3,LPP,3.2.6 相对寻址,http:/,对位地址中的内容作位操作的寻址方式位地址有内RAM的128位,和SFR中的83位,也统一编址例:SETB 20H MOV 32H,C ORL C,5AH CLR TR0,3.2.7 位寻址,http:/,3.3.1 数据传送类指令 共29条指令,包括以A、Rn、DPTR直接地址单元,间接地址单元为目的的操作数的指令;访问外部RAM的指令;读程序存储器的指令;数据交换指令以及堆栈操作指令。,3.3 MCS-51的指令集,http:/,3.3.1.1 以A为目的操作数MOV A,RnMOV A,dirMOV A,RiMOV A,#data,http:/,3.3.1.2 以Rn为目的操作数MOV Rn,AMOV Rn,dirMOV Rn,#data,http:/,3.3.1.3 以DPTR为目的操作数MOV DPTR,data16,http:/,3.3.1.4 以直接地址为目的操作数MOV dir,AMOV dir,RnMOV dir,dirMOV dir,RiMOV dir,#data,http:/,3.3.1.5 以间接地址为目的操作数MOV Ri,AMOV Ri,dirMOV Ri,#data,http:/,3.3.1.6 访问外部数据RAMMOVX A,Ri MOVX A,DPTRMOVX DPTR,AMOVX Ri,A 说明:用Ri 表示外RAM地址时,P2口表示外RAM的高8位地址,Ri表示外RAM的低8位地址,http:/,3.3.1.7 读程序存储器MOVC A,A+PC MOVC A,A+DPTR说明:一般用于查表,http:/,3.3.1.8 数据交换字节交换 XCH A,Rn XCH A,dir XCH A,Ri半字节交换 XCHD A,Ri SWAP A,http:/,3.3.1.9 堆栈操作PUSH dirPOP dir,http:/,共24条指令,包括加、减、乘、除、增量、减量和十进制调整等指令,其中大多数指令都同时以A为源操作数之一和目的操作数。,3.3.2 算术运算类指令,http:/,3.3.2.1 加ADD A,RnADD A,dirADD A,RiADD A,#data,http:/,3.3.2.2 带进位加ADDC A,RnADDC A,dirADDC A,RiADDC A,#data,http:/,3.3.2.3 带借位减SUBB A,RnSUBB A,dirSUBB A,RiSUBB A,#data,http:/,乘除运算,3.3.2.4 乘法 MUL AB;ABBA,3.3.2.5 除法 DIV AB;A BAB,http:/,3.3.2.6 增量INC AINC RnINC dir INC RiINC DPTR,http:/,3.3.2.7 减量DEC ADEC RnDEC dir DEC Ri,http:/,3.3.2.8 十进制调整 DA A 说明:只能紧跟在加法(ADD、ADDC)运算后,表示原来的加数均为十进制数,通过十六进制加完后结果也要变成十进制数,http:/,共24条指令,逻辑运算指令包括与、或、异或、求反和清零;循环指令都是对A的大循环操作,包括有左、右方向以及带与不带进位位的不同循环方式。,3.3.3 逻辑运算及移位类指令,http:/,3.3.3.1 简单逻辑运算指令CLR ACPL A,http:/,3.3.3.2 逻辑与指令ANL A,RnANL A,dirANL A,RiANL A,#dataANL dir,AANL dir,#data,http:/,3.3.3.3 逻辑或指令ORL A,RnORL A,dirORL A,RiORL A,#dataORL dir,AORL dir,#data,http:/,3.3.3.4 逻辑异或指令XRL A,RnXRL A,dirXRL A,RiXRL A,#dataXRL dir,AXRL dir,#data,http:/,3.3.3.5 循环移位指令RL ARLC ARR ARRC A,http:/,共17条指令,转移类分为无条件转移和条件转移2组;子程序调用类指令有绝对调用和长调用2种,同时还有返回指令及空操作指令等。,3.3.4 控制转移类指令,http:/,3.3.4.1 无条件转移指令绝对转移 AJMP addr11长转移 LJMP addr16短转移 SJMP rel间接转移 JMP A+DPTR,http:/,3.3.4.2 条件转移指令累加器A为零(非零)转移 JZ rel JNZ rel减一非零转移 DJNZ Rn,rel DJNZ dir,rel,http:/,3.3.4.2 条件转移指令 两数比较不等转移 CJNE A,dir,rel CJNE A,data,rel CJNE Rn,#data,rel CJNE Ri,#data,rel,http:/,3.3.4.3 调用和返回指令 调用 ACALL addr11 在同一个2K范围内任意调用,与长调用相比,可节省1个程序空间。LCALL addr16 在整个64K范围内任意调用,http:/,3.3.4.3 调用和返回指令 返回 RET:从调用子程序返回,与LCALL或ACALL 指令配合使用。RETI:从中断服务程序中返回,http:/,3.3.4.4 空操作指令 NOP;空操作,http:/,共17条指令,其共同点是对进位位C和直接位地址bit的操作。其中包括清零、置1、求反、逻辑与、逻辑或、传送以及判断转移。这些丰富的位操作指令表现出具有优异的布尔处理能力。,3.3.5 布尔变量操作类指令,http:/,3.3.5.1 位传送指令MOV C,bitMOV bit,C,http:/,3.3.5.2 位状态设置CLR CCLR bitSETB CSETB bit,http:/,3.3.5.3 位逻辑运算ANL C,bitANL C,/bitORL C,bitORL C,/bitCPL CCPL bit,http:/,3.3.5.4 位判跳(条件转移)JC relJNC relJB bit,relJNB bit,relJBC bit,rel,http:/,