您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 单片机的指令系统.ppt
1•指令概述•寻址方式•数据传送类指令•算术运算类指令•逻辑操作类指令•控制转移类指令•位操作指令第3章80C51的指令系统本章内容23.1指令系统简介1)指令概述一台微机所具有的所有指令的集合,就构成了指令系统。指令系统越丰富,说明CPU的功能越强。2)机器指令一台微机能执行什么样的操作,是在微机设计时确定的。一条指令对应着一种基本操作。由于计算机只能识别二进制数,所以指令也必须用二进制形式来表示,称为指令的机器码或机器指令。MCS-51单片机指令系统共有33种功能,42种助记符,111条指令。31、二进制的表示形式:(以“累加器的内容+08H”为例)00100100B操作码OP(加法)00001000B操作数DATA(08H)特点:能被CPU直接识别、运行的形式。也称机器码、汇编语言的目标代码。缺点:不便于阅读、记忆和调试修改。3)指令表示4•2、十六进制表示方式:它是对二进制形式的一种简化。00100100B24H00001000B08H二进制表示的形式十六进制表示的形式在实验室等少数环境下,可以将这种形式作为输入程序的一种辅助手段。但是,这种形式的指令格式必须由对应的监控程序把它们翻译成二进制的“机器码”后存入程序存储器并运行。5•3、指令的“助记符”方式(也称“汇编格式”):00100100B24H00001000B08HADDA,#08H二进制表示形式十六进制表示汇编格式返回1)这是一种由英文单词或字母、数字来表征指令功能的形式。是一种便于阅读、书写和交流的表示形式。2)“汇编”格式的指令必须“翻译”为二进制形式“机器码”后才能为CPU所识别和执行。3)三种不同的表示方法适用于不同的场合。6指令格式:既指令的结构形式。OPDATA或ADDRESS操作码操作数或操作数地址由操作码和操作数(或操作数地址)构成指令的结构。举例:MOVA,#0FFHADDA,R0返回4)指令格式7采用助记符表示的汇编语言指令格式如下:标号是程序员根据编程需要给指令设定的符号地址,可有可无;标号由1~8个字符组成,第一个字符必须是英文字,不能是数字或其它符号;标号后必须用冒号。4)指令格式标号:操作码操作数或操作数地址;注释8操作码表示指令的操作种类,如MOV表示数据传送操作,ADD表示加法操作等。操作数或操作数地址表示参加运算的数据或数据的有效地址。操作数一般有以下几种形式:没有操作数项,操作数隐含在操作码中,如RET指令;只有一个操作数,如CPLA指令;有两个操作数,如MOVA,#00H指令,操作数之间以逗号相隔;有三个操作数,如CJNEA,#00H,NEXT指令,操作数之间也以逗号相隔。注释是对指令的解释说明,用以提高程序的可读性;注释前必须加分号。4)指令格式9在MCS-51单片机的指令系统中,因指令操作码和操作数的不同,指令(在存储器中)长度也各不相同。分为单字节、双字节和三字节。单字节指令(49条):分无操作数、有操作数两种。无操作数:如INCDPTR10100011BINCA00000100B【特点】:操作数隐含在操作码中。含有操作数寄存器名称的单字节指令:如:MOVA,R011101000BMOVA,R111101001B【特点】:寄存器名以三位数代码的形式在指令的后三位。5)指令长度与执行时间5)指令长度与执行时间10•双字节指令(46条):指令的操作码和操作数各占一个字节。如:MOVA,#data01110100Bdata很明显:8位的操作数本身占据一个字节。程序存储器01110100datann+1MOVA,#data双字节指令在程序存储器的存放示意图5)指令长度与执行时间11•三字节指令(16条):指令中的操作数为双字节。如:MOVDPTR,#data161001000B,data15-8,data7-0或者:指令中分别包含1个字节的操作数和1个字节的操作数地址。如:MOVdirect,#data举例:MOV20H,#0FFH10010000data15-8data7-0MOVDPTR,#data16OP(75H)direct(20H)data(FFH)MOVdirect,#data三字节指令在存储器中存放的方式示意图5)指令长度与执行时间12•指令的字节多是否意味着指令周期就长?指令字节数周期数指令说明MOVA,R011R0内容送累加器AMOVA,#0FFH21立即数FFH送AMOV20H,#30H32立即数30H送内存20h单元MULAB14乘法指令INCDPTR1116位寄存器DPTR加一从表中可见,指令的字节数与指令周期不是对等的关系返回5)指令长度与执行时间5)指令长度与执行时间136)符号说明符号含义Rn表示当前选定寄存器组的工作寄存器R0~R7Ri表示作为间接寻址的地址指针R0~R1#data表示8位立即数,即00H~FFH#data16表示16位立即数,即0000H~FFFFHaddr16表示16位地址,用于64K范围内寻址addr11表示11位地址,用于2K范围内寻址direct8位直接地址,可以是内部RAM区的某一单元或某一专用功能寄存器的地址rel带符号的8位偏移量(-128~+127)bit位寻址区的直接寻址位@间接寻址寄存器的前缀/位操作前置,表示位取反,如/bit参见P51说明(X)X地址单元中的内容,或X作为间接寻址寄存器时所指单元的内容((X))以寄存器或X地址单元中的内容作为地址所指单元的内容←将←后面的内容传送到前面去143.2寻址方式找到参与运算的数据或数据所在的地址的方式,称为寻址方式。寻址方式主要是指源操作数的寻址。15目的地#XXH操作数MOVP1,#55HMOVA,#01H#55H目的地信寄存器寻址直接寻址立即数寻址寄存器间接寻址变址寻址相对寻址位寻址1)立即数寻址16MOVP1,#55H;将立即数55H送P1口MOV20H,#55;将立即数55H送20H单元MOVA,#0F0H;将立即数0F0H送累加器AMOVR4,#0FH;将立即数0FH送寄存器R4中MOVR0,#20H;将立即数20H送寄存器R0口ANDA,#0FH;A的内容与立即数0FH与操作ORLA,#0F0H;A的内容与立即数0F0H或操作MOVA,#01H;将立即数01H送累加器A中MOVA,#55H;将立即数55H送累加器A中注意:1)#;2)不能作为目的;3)注意#0F0H的意义17MOVA,3AH直接寻址是指把存放操作数的内存单元的地址直接写在指令中。在MCS-51单片机中,可以直接寻址的存储器主要有内部RAM区和特殊功能寄存器SFR区。(参见P37)88H3AH内部RAM88HA2)直接寻址183)寄存器寻址20H09H内部RAM20HAR101RS1RS0MOVR1,A寄存器寻址是指将操作数存放于寄存器中,寄存器包括工作寄存器R0~R7、累加器A、通用寄存器B、地址寄存器DPTR等。例如,指令MOVR1,A的操作是把累加器A中的数据传送到寄存器R1中,其操作数存放在累加器A中,所以寻址方式为寄存器寻址。19寄存器寻址直接寻址立即数寻址寄存器间接寻址变址寻址相对寻址位寻址设R0=3AH,内部RAM3AH中的值是65H,则指令MOVA,@R0的执行结果是累加器A的值为65H。目的地寄存器操作数3AH内部RAM3AH65H3AHR0R1DPTR寄存器间接寻址寄存器目的地注意:1)间接寻址的标志@2)R0,R1,SP,DPTR4)寄存器间接寻址20寻址比较MOVP1,R0MOVP1,@R0MOVP1,20HMOVP1,#20HMOVP1,R021MOVP1,R0MOVP1,@R0MOVP1,20HMOVP1,#20HMOVP1,@R022MOVP1,R0MOVP1,@R0MOVP1,20HMOVP1,#20HMOVP1,20H23MOVP1,R0MOVP1,@R0MOVP1,20HMOVP1,#20HMOVP1,#20H24寄存器寻址直接寻址立即数寻址寄存器间接寻址变址寻址相对寻址位寻址MOVCA,@A+DPTRMOVCA,@A+PCJMP@A+DPTR目的地寄存器操作数内部RAM3AH65H3AH基址寄存器12H变址寄存器34H内部RAM46H65HADPTRPC46H5)变址寻址2555H程序存储区02HA0302H03HDPTR00HΣ0302H①②③26目的地寄存器寻址直接寻址立即数寻址寄存器间接寻址变址寻址相对寻址XXH位寻址操作数ORG2000HSJMP54HSJMP2056H出现的格式!!PC+54HPC2002H······2002H=2056HPC2056H6)相对寻址27设指令SJMP54H的机器码80H54H存放在2000H处,当执行到该指令时,先从2000H和2001H单元取出指令,PC自动变为2002H;再把PC的内容与操作数54H相加,形成目标地址2056H,再送回PC,使得程序跳转到2056H单元继续执行。54H程序存储区54HA2001H20HPC02HΣ2056HXX80H2056H2000H……②③①28寄存器寻址直接寻址立即数寻址寄存器间接寻址变址寻址相对寻址位寻址20H······27H21H28H21H20H100000000想一想:如果想使27H单元的第3位置1,该怎么办呢?7)位寻址29单元地址2FH2EH2DH2CH2BH2AH29H28H26H25H24H23H22H21H20H7F776F675F574F47372F271F170F07MSB位地址LSB7E766E665E564E46362E261E160E067D756D655D554D45352D251D150D057C746C645C544C44342C241C140C047B736B635B534B43332B231B130B037A726A625A524A42322A221A120A02797169615951494131292119110901787068605850484030282018100800位寻址地址表例:SETB3DH3D3C3B3F3E3A393827H30寄存器寻址直接寻址立即数寻址寄存器间接寻址变址寻址相对寻址位寻址SETB3DH20H······27H21H28H21H20H000000010位地址的表示方式:??313.3数据传送指令按功能,MCS-51指令系统可分为下列5类:•数据传送指令(29条)•算术运算指令(24条)•逻辑运算指令(24条)•控制转移指令(17条)•位操作指令(17条)32数据传送类指令共29条,它是指令系统中最活跃、使用最多的一类指令。一般的操作是把源操作数传送到目的操作数,即指令执行后目的操作数改为源操作数,而源操作数保持不变。若要求在进行数据传送时,不丢失目的操作数,则可以用交换型传送指令。指令通式:MOVdest,src目的地址源地址数据20HA33数据传送类指令不影响进位标志CY、半进位标志AC和溢出标志OV,但当传送或交换数据后影响累加器A的值时,奇偶标志P的值则按A的值重新设定。按数据传送类指令的操作方式,又可把传送类指令分为3种类型:数据传送、数据交换和堆栈操作,并使用8种助记符:MOV、MOVX、MOVC、XCH、XCHD、SWAP、PUSH及POP。341.数据传送到累加器A的指令MOVA,RnMOVA,directMOVA,@RiMOVA,#data这组指令的功能是:把源操作数的内容送入累加器A。例如:MOVA,#10H,该指令执行时将立即数10H送入累加器A中。3.3.1内部RAM传送指令35例3.3.1已知(A)=20H,(R0)=50H,内部RAM中(40H)=30H,(50H)=10H,指出下列指令执行后相应单元内容的变化情况。MOVA,#40HMOVA,40HMOVA,R0MOVA,@R0362.数据传送到工作寄存器Rn的指令MOVRn,AMOVRn,directMOVRn,#data这组指令的功能是:把源操作数的内容送入当前工作寄存器区的R0~R7中的某一个寄存器。指令中Rn在内部数据
本文标题:单片机的指令系统.ppt
链接地址:https://www.777doc.com/doc-7213181 .html