1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第二章 单片机的指令系统,指令系统概述,寻址方式,指令功能介绍,2.1,指令系统概述,指令分类,指令格式,指令字长,主要内容:,指令系统是一种计算机所能执行的所有指令的集合。,指令系统是由计算机的生产厂商定义的,用户必,须理解和遵循,各种计算机都有自己的指令系统,,因此由汇编语言编写的指令没有通用性,无法进行,移植。,一、指令分类,指令系统,MCS-51,单片机共有,111,条指令,有三种不同的,分类方法:,1,、按指令功能分类,分为五类:,数据传送类指令(,29,条),算术运算类指令,(,24,条),逻辑
2、运算及移位类指令(,24,条),控制,转移类指令(,17,条),位操作类指令(,17,条)。,2,、按指令字长分类,分为三类:,单字节指令(,49,条),双字节指令(,46,条),,三字节指令(,16,条)。,3,、按指令执行时间分类,分为三类:,单机器周期指令(,64,条),双机器周期指令,(,45,条),四机器周期指令(,2,条)。,二、指令格式,在,MCS-51,单片机中用汇编语言表示的指令格式为:,标号,:,目的操作数,源操作数,;,注释,为不可缺省项;,为可选项,例如:,LOOP:MOV A,#0D0H;,数据传送,1,、标号,是语句地址的标志符号。,规定:,由,1-8,个字母或数字
3、组成,可以有一个下划线;,第一个字符是字母;,指令助记符或系统中保留使用的字符串不能作,为标号;,后跟冒号;,在一条指令中可以没有标号。,举例:下列字符串可以作为汇编指令标号的是(),(A),j.apt,(B)1_slp (C)SH-W (D)I_tx3,答案:D,2,、操作码,规定指令进行什么操作。以指令助记符或伪指,令助记符表示,不可缺省。,例如:,MOV,数据传送,ADD,加法运算,ORL,逻辑“或”运算,3,、操作数,表示指令的操作对象。给指令的操作提供数据或,数据的地址。,在一条指令中,操作数可以为,1,项,,2,项或,3,项,,各操作数之间可以用逗号隔开。,例如:,INC A ;,
4、一个操作数,ANL A,#60H,;两个操作数,CJNE A,#5,LOOP,;三个操作数,RET,;没有操作数,4,、注释,对语句进行说明。以“,;”,开头,不进行汇编。,5,、分隔符,用于分割语句的各个部分。可以是冒号“,:”,,空格“”,逗号“,”和分号“,;”,。,三、指令字长,80C51,指令中有一字节、二字节和三字节指令,,指令越短占用的程序存储器空间就越少。,1,、一字节指令,操作码和操作数都放到一个字节中或是由于指,令功能明确无需再指定操作数。,例如:指令,INC DPTR,其功能为数据指针加,1,,指令码为:,指令,RET,功能明确无需再指定操作数。指令码为,22H,。,2,
5、二字节指令,此类指令包括两个字节,一个字节为操作码,另,一个字节为操作数。,1010,0011,A3H,例如:指令,MOV,A,#data,指令码为,0111,0100,data,操作码,74H,操作数,3,、三字节指令,在此类指令中,操作码占一个字节,操作数占,两个字节。操作数即可以是数据也可以是地址。,例如:指令,ANL,direct,#data,指令码为,0101,0011,data,直接地址,操作码,53H,操作数(包括地址和数据),本节小结,指令分类,指令格式,指令字长,按功能分,按字长分,按执行时间分,标号,操作码,操作数,注释,分隔符,2.2,寻址方式,立即寻址,直接寻址,寄存
6、器寻址,寄存器间接寻址,位寻址,变址寻址,相对寻址,主要内容:,指令的功能为对特定的对象(操作数)执行特定,的操作(操作码)。,绝大多数指令执行时都需要使用操作数,因此也,就存在着到哪里去取得操作数的问题。,寻址的“址”是指操作数所在的单元地址。,寻址,方式就是寻找(确定)操作数所在单元地址的方式,。,寻址方式越多的单片机寻址能力越强,但指令,系统也越复杂。,MCS-51,单片机共有,七种,寻址方式,下面以,源,操作数,为例分别介绍。,1,、立即寻址方式,所谓立即寻址就是操作数在指令中直接给出。,通常把出现在指令中的操作数称之为,立即数,,因此就把这种寻址方式称之为立即寻址。,在指令中,,立即
7、数前面加“,#”,标志,。,例如:,MOV A,,,#08H,;把,08H,这个数给,A,累加器,MOV DPTR,#0E3A4H;,把,E3A4H,这个数给,DPTR,寄存器,2,、直接寻址方式,指令中操作数以单元地址的形式给出。,例如:,MOV A,,,08H,与上面介绍的立即寻址的指令不同,指令的功,能是把内部,RAM,中地址为,08H,的单元中存放的数据给,A,。,注意:,这种寻址方式的寻址范围只限于内部,RAM,:,对于内部,RAM,的低,128,单元,指令中以单元地址的形式给出。,如:,ADD A,31H,对于内部,RAM,的高,128,单元,指令中那个以单元地址或专用寄存器的形式
8、给出。,如:,MOV A,99H,MOV A,SBUF,等价,A,B,DPTR,除外,3,、寄存器寻址方式,操作数在寄存器中,指定了寄存器的名称就能得到操作数。,这里的寄存器包括:通用寄存器,R0R7,,,A,,,B,和,DPTR,。,如:,MOV A,R0,MOV 30H,A,源操作数的寻址方式均为寄存器寻址,注意:指令中对,A,累加器的寻址方式很特殊与其表示形式有关。如:,INC A,INC ACC,INC 0E0H,功能相同,但,寻址方式不同,寄存器寻址,直接寻址,直接寻址,4,、寄存器间接寻址方式,寄存器中存放的不是操作数而是操作数的地址。,如:,MOV A,R0,功能:以,R0,寄存
9、器的内容为地址,把该地址单元的内容送入,A,。,注意:,对于内部,RAM,的各单元,对它们进行间接寻址时,应使用,R0,或,R1,作间址寄存器。形式为:,Ri,。,对于外部,RAM,进行访问时,应使用,DPTR,作间址寄存器(或,P2,及,Ri,)。形式为:,MOVX A,DPTR,堆栈操作指令(,PUSH,和,POP,)的寻址方式认为是寄存器间接寻址,间址寄存器为,SP,。,5,、位寻址方式,80C51,有较强的位处理能力,可以对数据位进行操作,相应的寻址方式就为位寻址方式。,如:,ANL C,20H,功能:将累加位的状态和,20H,位的状态进行逻辑与操作。,位寻址的寻址范围为:,内部,RA
10、M,低,128,单元中的位寻址区;,内部,RAM,高,128,单元中可以进行位寻址的,11,个,SFR,。,这些可寻址位在指令中有如下几种表示方法:,(以对,PSW,中的,F0,位进行清零操作为例),直接使用位地址。,CLR D5H,使用位名称表示。,CLR F0,使用单元地址加位的表示方法。即用该位所属寄存器的地址加位符号表示。,CLR D0H.5,使用专用寄存器符号加位的表示方法。,CLR PSW.5,6,、变址寻址方式(基址,+,变址寻址),以,PC,或,DPTR,作基址寄存器,以,A,作变址寄存器,并以两者内容相加形成的,16,位地址作为操作数的地址。,如:,MOVC A,A+,DPT
11、R,功能:将,A,与,DPTR,的内容相加得到操作数的地址,以此地址取出数据送入,A,中。,说明:,这种寻址方式只限于对程序存储器进行寻址。,采用变址寻址的指令,在,80C51,指令系统中只有三条:,MOVC A,A+DPTR,MOVC A,A+PC,JMP A,A+DPTR,此类指令均为一字节指令。,7,、相对寻址方式,相对寻址方式是为解决程序转移指令而专门设置的。为转移指令所采用。,相对寻址的转移指令中,给出了地址偏移量(在,MCS-51,指令系统中以“,rel,”,表示)。把,PC,的当前值加上偏移量就构成了转移的,目的地址。,如:,2002H:JC,rel,功能:使程序以指令中给定的地
12、址偏移量跳转。,转移后的目的地址,=PC,值,+,rel,指令的当前地址,+,转移指令所占字节数,2002H,占,2,字节,+,+,rel,因此转移的目的地址可用如下公式表示:,目的地址转移指令地址转移指令字节数,rel,其中的偏移量,rel,是一个带符号的,8,位二进制,补码数,。所能表示的范围是,-128,+127,。,因此相对转移是以转移指令所在地址为基点,向前最大可转移(,127+,转移指令字节数)个单元地址,向后最大可转移(,128-,转移指令字节数)个单元地址。,举例:分别计算指令,2002H:JC,rel,中,rel,=71H,和,rel,=81H,时转移的目的地址。,答案:,r
13、el,=71H,时,地址偏移量为正数,所以向地址增大的方向跳转。,转移的目的地址,=2002H+2+71H=2075H,。,rel,=81H,时,地址偏移量为负数,所以向地址减小的方向跳转。,转移的目的地址,=2002H+2+81H=1F85H,。,习题:,指出下列每条指令中源操作数的寻址方式,并说明,30H,在不同的指令中代表的具体含义。,1.MOV A,#30H,2.MOV 30H,R1,3.MOV C,30H,4.MOV 30H,R5,5.MOVX A,DPTR,6.MOVC A,A+PC,7.JC AB1,8.PUSH 30H,1.,立即寻址,,30H,表立即数,2.,寄存器间接寻址,,30H,表内部,RAM,的单元地址。,3.,位寻址,,30H,表位地址。,4.,寄存器寻址,,30H,表内部,RAM,的单元地址。,5.,寄存器间接寻址,6.,变址寻址,7.,相对寻址,8.,寄存器间接寻址,,30H,表内部,RAM,的单元地址。,






