第4章 MCS-51单片机的指令系统.ppt
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第4章 MCS-51单片机的指令系统 MCS 51 单片机 指令系统
- 资源描述:
-
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第四章,MCS-51,单片机的指令系统,4.1,指令和指令程序,4.2,寻址方式,4.3,数据传送指令,4.4,算术运算指令,4.5,逻辑运算及移位指令,4.6,控制转移指令,4.7,布尔变量操作指令,1,附录,1,:,指令汇总,附录,2,:,某些指令的说明,4.1,指令和指令程序,所有软件,都要翻译成计算机能直接识别和执行的命令,才能由计算机去执行。这种计算机能直接识别和执行的命令称为,指令,。一台计算机所能执行的全部指令的集合称为这台计算机的,指令系统,。,2,4.1,指令和指令程序,“,指令”,:,CPU,能,直接识别和执行,的,命令,。,指令系统,:,CPU,所能执行的全部指令的集合。,与,CPU,的能力、使用的方便灵活性密切相关。,指令的记忆问题,?指令本身是二进制代码。,3,例如以下的,51,单片机指令:,把,10,放到累加器,A,中,A,加,20,,结果仍在,A,中,为了便于记忆,740AH,2414H,用一组有一定意义的字符来表示,指令助记符,助记符、,汇编语言源程序,4,虽然书写的字符增多了,但由于可读性增强了,使用时反而感到方便。,经常采用,助记符,和其他一些符号来编写指令程序,这样编出的程序称为,汇编语言源程序,。它经过一种称为,汇编程序,的软件的翻译,就可变成机器可执行的,目标程序,了。,高级语言编程、效率问题,指令的组成,及字节数,5,指令通常由两部分构成,即,操作码,和,操作数,。,操作码,用来规定这条指令完成什么操作,如是做加法还是做减法,是数据传送还是数据移位等。,操作数,则表示这条指令所完成操作的对象,即是对谁来进行操作。操作数可以直接是一个数,或者一个数据所在的地址。,51,单片机的指令的长度:,13,个字节。,5,大类,111,条。,单字节:,49,条,双字节:,45,条,三字节:,17,条,在二进制的,51,指令中,单字节指令的操作码和操作数加起来只有,1B,;双字节指令的操作码和操作数各占,1B,;三字节指令的第,1,字节为操作码,第,2,、第,3,字节为操作数、操作数地址或符号。,1,单字节指令(,49,条),在,51,指令指令系统中,单字节指令可分为,两大类,:,无操作数的单字节指令,和,含有操作数寄存器编号的单字节指令,。,1,)无操作数单字节指令,这类指令只有操作码字段,操作数隐含在操作码中。,例如:,INC DPTR,指令码为,:,数据指针隐含其中,指令的组成,及字节数,2,)含有操作数寄存器号的单字节指令,单字节的指令码由操作码字段和指示操作数所 在寄存器号的字段组成。,例如;,MOV A,,,Rn,指令码为:,其中,,rrr,为寄存器,Rn,的编号,指令的组成,及字节数,2,双字节指令(,45,条),双字节指令的操作码字节在,前,;在后面的操作数字节可以是,立即数,,也可以是操作数所在的,片内,RAM,地址,。,例如:,MOV A,,,#23H,指令码为:,这条,8,位数传送指令的含义是把指令码第,2,字节立即数,23H,取出来存放到累加器,(,A,),中。该指令的操作码占,1B,;,23H,为源操作数,也是,1B,;,累加器(,A,)是目的操作数寄存器,隐含在操作码字段中,。,指令的组成,及字节数,3,三字节指令(,17,条),这条指令的指令码的第,1,字节为,操作码,;第,2,和第,3,字节为,操作数或操作数地址,,有如下,3,类。,1,),16,位数据,例如:,MOV DPTR,,,#26ABH,指令码为:,指令的组成,及字节数,2,),8,位地址和,8,位数据,例如:,MOV 74H,,,#0FFH,指令码为:,指令的组成,及字节数,0,1,1,75H 74H FFH,3,),16,位地址,例如:,LCALL 2020H,指令码为:,指令的组成,及字节数,指令的组成,及字节数,12,三字节指令,第,1,个字节的操作码,后两个字节是操作数。操作数可以是数据,也可以是地址。,有以下,4,种情况。,在程序设计中,应尽可能选用字节少的指令。这样,指令所占存储单元少,执行速度也快。,51,汇编语言有,42,种,操作码助记符,用来描述,33,种,操作功能。一种操作码可以使用一种以上的数据类型,又由于,助记符规定了其访问的存储器空间,所以一种功能可能有几个助记符,(如,MOV,、,MOVX,、,MOVC,)。功能助记符与寻址方式组合,得到,111,条指令。,4.2,寻址方式,4.2,寻址方式,寻址就是寻找操作数的地址。,在用高级语言编程时,,编程者,不必关心,参与运算数据(操作数)的,存放问题,,也不必关心这些运算是在哪里(哪个寄存器)完成的。编程者只需关心语句的使用是否正确,结果是否正确。至于变量的值存放在何处,则根本不必关心。,在汇编语言编程时,,数据的存放、传送、运算都要通过指令来完成,编程者必须自始至终都要十分,清楚,操作数的,位置,以及如何将它们传送至适当的寄存器中去运算。因此,如何从各个存放操作数的区域去寻找和提取操作数就变得十分重要。,所谓寻址方式就是如何通过确定操作数所在的位置,(,地址,),从而把操作数提取出来的方法。,14,常用符号说明,用汇编语言编写指令时必须遵守一定的规则,,下表给,出了编写指令时的一些符号的约定含义。,51,单片机的寻址方式,立即寻址,寄存器寻址,直接寻址,寄存器间接寻址,变址寻址(基址寄存器加偏移量寄存器),相对寻址,位寻址 ,16,操作数的寻址方式有,7,种,1,、,立即寻址,若指令的,操作数,是一个,8,位二进制数或,16,位二进制数,就称为,立即寻址,。指令中出现的操作数就称为,立即数,。,例如:,MOV A,,,#3AH,;,A,3AH,MOV DPTR,,,#8000H,在,MCS51,系统中采用“,#”,来表示后面的是立即数。,17,2,、,寄存器寻址,寄存器寻址就是以通用寄存器的内容作为操作数,在指令的助记符中直接以寄存器的名字来表示操作数位置。这种寻址方式如果使用了另一个操作数,那么另一操作数必须是,累加器,A,,这些指令都是,单字节指令,在,MCS-51,指令中,若操作数是以,R0R7,来表示操作数时,就属于寄存器寻址方式。,例如,MOV,A,,,R0,;(,A,)(,R0,),INC,R0,;(,R0,),+1R0,18,3,、,直接寻址,在指令中,直接给出操作数地址,,就属于直接寻址方式。此时,指令的操作数部分直接是操作数的地址。,19,例如:,MOV A,,,3AH,;,A,68H,3,、,直接寻址,20,例如:,MOV A,,,TH0,MOV A,8CH,直接寻址方式只能给出,8,位地址,,因此,这种寻址方式的寻址范围只限于片内,RAM,,具体说:,1,)低,128,单元,在指令中直接以单元地址形式给出。,2,)特殊功能寄存器,这时除可以用单元地址形式给出外,还可以寄存器符号形式给出。,特殊功能寄存器的唯一寻址方式。,4,、,寄存器间接寻址,操作数的地址,若以寄存器的名称间接给出,,则为寄存器间接寻址。采用寄存器间接寻址,可以访问内部数据,RAM,的,128,个存贮单元(,007FH,),全部的,64kB,外部数据存贮器,,但不能访问特殊功能寄存器,。,21,例如:,MOV A,,,R0,;,A,(,R0,),A=65H,可以用做间接寻址的寄存器:,R0,和,R1,,数据指针寄存器,DPTR,;用寄存器名前加“”符号来表示。,寄存器间接寻址的寻址范围:,1,)片内,RAM,低,128,单元:这里只能用,R0,和,R1,作为间接寻址寄存器。,2,)片外,RAM 64KB,:使用,DPTR,作为间接寻址寄存器。,3,)片外,RAM,低,256,单元:也可以使用,R0,和,R1,。,MOVX,4,)在执行,PUSH,(压栈),和,POP,(出栈),指令时,采用堆栈指针,SP,作寄存器间接寻址,。,例:,PUSH,30H,;,把内部,RAM,地址,30H,内的值放到堆栈区中,堆栈区是由,SP,寄存器指定的,如果执行上面这条命令前,,SP,为,60H,,命令执行后会把内部,RAM,地址,30H,内的值放到,RAM,的,61H,内。,例:,已知,R0,中存放片内,RAM,地址,65H,,数据指针,DPTR,内存放片外,RAM,地址,8000H,,地址,65H,和,8000H,里面都存放着立即数,30H,,执行以下指令后:,MOV,A,,,R0,;,MOVX,A,,,DPTR,;,累加器,A,的内容为,30H,。,例:,MOV,R0,,,#30H,;,MOV,A,,,R0,MOV,A,,,R0,MOVX,A,,,R0,这种寻址方式用于访问,程序存储器中的数据表格,,以程序计数器(,PC,)或数据指针(,DPTR,)作为基址寄存器,以累加器作为变址寄存器。基址寄存器和变址寄存器的内容相加形成,16,位地址,该地址即作为操作数的地址。,24,5,、,变址寻址,例如:,MOVC A,,,A+PC,;(,A,),+,(,PC,),A,MOVC A,,,A+DPTR;,(A)+(DPTR),A,变址寻址的区域是程序存储器,ROM,而不是数据存储器,RAM,。,操作数地址,=,变地址,+,基地址,6,、,相对寻址,相对寻址用于访问程序存储器,只出现在转移指令中,指令的操作数部分给出的是地址的相对偏移量。,用“,rel”,表示(补码数),。相对转移指令所在的地址称为源地址,转移后的地址称为目的地址。,程序的转移范围以,PC,当前值为中心,介于,-128,+127,之间,25,例如,SJMP rel,指令的机器码是“,80H,,,rel”,,两个字节。设指令所在地址为,2000H,,,rel,为,54H,,则转移地址,(,目的地址,),为:,2000H,十,02H,十,54H,2056H,PC,的值变为,2056H,,程序的执行发生了转移。,目的地址源地址十转移指令字节数十,rel,rel=85H?,26,7,、,位寻址,采用位寻址方式的指令,其操作数将是,8,位二进制数中的,某一位,。,位的直接地址。,MCS-51,系统的内部数据,RAM,有两个可以按位寻址的区域:,一是,从内部,RAM 20H2FH,共,16,个单元中的每一位都可单独作为位操作数;,二是,某些特殊功能寄存器,其特征是这些特殊功能寄存器的单元地址,能被,8,整除,。,位地址在指令中用,bit,表示。具体表示方法有,:,27,(1),直接用位地址,00HFFH,来表示;,(2),采用第几单元第几位的表示方法;,25H.5,(3),对特殊功能寄存器可直接用寄存器名加位数;,TCON.3,(4),用伪指令定义,,详见第,5,章。,可以位寻址的,特殊功能寄存器,位地址表,28,对于,20H,一,2FH,单元中的各位,位地址,(,单元地址一,20H,),x,8,十,位号,例:,MOV C,,,40H,小结:,指令对哪个存储器空间进行操作是由,指令的操作码,和,寻址方式,确定的。,程序存储器,只能采用立即寻址和变址寻址方式,,特殊功能寄存器,只能采用直接寻址方式,,不能,采用寄存器间接寻址,,位操作指令只能,对位寻址区进行操作。,外部扩展的数据存储器只能用,MOVX,指令访问,而内部,RAM,的低,128,字节(,00H,7FH,)既能用直接寻址,也能用寄存器间接寻址。,MCS-51,指令系统,可以分为五大类,即:,数据传送指令,28,条,算术运算指令,24,条,逻辑运算及移位指令,25,条,控制转移指令,17,条,位操作(布尔操作)指令,17,条,30,4.3,数据传送指令,一、内部,RAM,数据传送类,二、外部,RAM,数据传送,三、与程序,ROM,之间的数据传送,(查表指令),31,数据传送类,-,功能示意图,32,程序,存储器,ROM,EPROM,特殊功能寄存器,SFR,片内,RAM,128,字节,片外,数据,存储器,RAM,MOVC,MOVX,MOV,PUSH,POP,XCH,XCHD,单片机,内部数据存储器,一、内部,RAM,数据传送类,1,、基本数据传送指令,MOV,2,、栈操作指令,PUSH,、,POP,3,、数据交换指令,33,1,、基本数据传送指令,MOV,34,格式,MOV,目的操作数,源操作数,;,目的操作数,源操作数,本质是复制,8,Ri,不包括特殊功能寄存器,根据目的操作数的不同来学习和记忆。,基本数据传送指令,MOV,35,1,、以,累加器,为目的操作数,MOV A,,,Rn,;,A,Rn,MOV A,,,direct;,MOV A,,,Ri;,MOV A,,,#data;,举例,2,、以,寄存器,Rn,为目的操作数,MOV Rn,,,A;,Rn,A,MOV Rn,,,direct,MOV Rn,,,#data,8,R0R7,R0,,,R1,若(,R1,),=20H,,(,20H,),=60H,,,分析程序执行后,累加器,A,的内容,MOV A,,,R1,;,MOV A,,,20H;,MOV A,,,Ri;,MOV A,,,#20H;,若(,A,),=20H,,(,20H,),=F0H,,分析程序执行后寄存器的内容,:,MOV R0,,,A,;,MOV R0,,,20H,;,MOV R0,,,#20H,;,36,A,2,0H,A,6,0H,A,6,0H,A,2,0H,(,R0,),=20H,(,R0,),=F0H,(,R0,),=20H,基本数据传送指令,MOV,37,MOV Ri,,,A,MOV Ri,direct,MOV Ri,,,#data,举例,MOV direct,,,A,MOV direct,,,Rn,MOV direct,,,direct,MOV direct,,,Ri,MOV direct,,,#data,3,、以,直接地址,为目的操作数,8,R0R7,R0,,,R1,4,、以,间接地址,为目的操作数,例:将,A,的内容送至,30H,单元,,R6,的内容送至,32H,单元,立即数,66H,送至,36H,单元,,38H,单元内容送至,40H,单元,可用以下指令:,MOV30H,,,A,MOV32H,,,R6,MOV36H,,,#66H,MOV38H,,,40H,例:若,A,的内容为,20H,,,32H,单元的内容为,46H,,,42H,单元的内容为,52H,,,R0,的内容为,42H,,执行以下指令后,寄存器中的内容如下:,MOVR0,,,A,MOVR0,,,32H,MOVR0,,,#35H,(,A,),30H,(,R6,),3,2H,66H,(,36H,),(,40H,),(,38H,),(,42H,),=20H,,(,A,),=20H,(,42H,),=32H,,(,32H,),=46H,(,42H,),=35H,基本数据传送指令,MOV,39,MOV DPTR,,,#,data16,;,举例,8,R0R7,R0,,,R1,5,、唯一的,16,位数据,传送指令。,MOV DPTR,,,#1234H,MOV DPH,,,#12H,;,MOV DPL,,,#34H,;,注意,40,上述指令不影响任何标志位,但,PSW,的,P,位除外。,注意:,MOV Rn,,,Rn,MOV Ri,Ri,MOV Rn,Ri,MOV#data,A,等,等指令是,非法指令,。,哇!好容易出错啊!,立即数不能为目的操作数。,一条指令中不能出现两个工作寄存器。,特殊功能寄存器,SFR,只能直接寻址。,间接寻址 的寄存器为,R0,和,R1,。,2,、堆栈操作指令,数据存取,原则按照“先进后出,后进先出”。,堆栈是在,内存中,专门开辟出来的,区域(片内,RAM,),。,堆栈指示器,SP,就是用来指示堆栈位置的。,在使用堆栈之前,先给,SP,赋值,以规定堆栈的起始位量,称为栈底。,复位后,,SP=07H,进栈指令,PUSH,出栈指令,POP,41,进栈操作指令,PUSH,格式:,PUSH direct,自动进行两步操作:,(,1,),SPSP+1,(,2,),(,SP,)(,direct,),42,例,1,首先将,SP,中的值加,1,,然后把,SP,中的值当作地址,将,direct,中的值送进以,SP,中的值为地址的,RAM,单元中。,MOV SP,,,#5FH,;,MOV A,,,#100,;,MOV B,,,#20,;,PUSH ACC,;,PUSH B,;,堆栈操作指令中的操作数只能用直接寻址方式,所以将累加器压入堆栈时,累加器,(ACC),不能简写,A,。,出栈操作指令,POP,格式:,POP direct,自动进行两步操作:,(,1,)(,direct,)(,SP,),(,2,),SPSP-1,43,例,2,、,首先将,SP,中的值作为地址,并将此地址中的数送到,POP,指令后面的那个,direct,中,然后,SP,减,1,。,MOV SP,,,#5FH,;,MOV A,,,#100,;,MOV B,,,#20,;,PUSH ACC,;,PUSH B,;,POP B,;,POP ACC,;,作用?,结论:,44,1,),PUSH,与,POP,操作过程刚好相反,成对出现;,2,),进、出栈规则:,先进后出,后进先出。应注意指令书写先后顺序;,3,),可用于“,保护现场,恢复现场,”。,3,、,数据交换指令,半字节交换,45,整字节交换,XCHD A,,,Ri,;高四位不变,第四位互换。,SWAP A,;,累加器自身的高低四位互换。,将,A,的低,4,位和,R0,或,R1,指出的,RAM,单元低,4,位相互交换,各自的高,4,位不变。源操作数只有寄存器间接寻址方式。,二、外部,RAM,数据传送,46,MOVX A,,,Ri,;读有效,输入,MOVX A,DPTR,;,MOVX Ri,A,;写有效,输出,MOVX DPTR,,,A,执行过程中会使写,/WR,、读,/RD,有效。,具体分析。,间接寻址,,8,位或,16,位的地址指针,。,只能通过累加器传送,。,举例,47,例,3,、,试编写一程序段,实现将外,RAM 0FAH,单元中的内容传送到外,RAM 04FFH,单元中。,解:,MOV DPTR,,,#04FFH,MOV R0,,,#0FAH,MOVX A,,,R0,MOVX DPTR,A,三、与程序,ROM,之间的数据传送,48,执行时会使,/PSEN,有效。,MOVC,传送,常数,。,以,DPTR,为基地址的指令,可在,ROM,的,64KB,范围内查表;,而以,PC,为基地址的指令只能在(,PC,),+1,为中心上、下,256B,范围内查表。,只能通过累加器传送,。,所谓的查表指令,MOVC A,,,A+PC,;(,PC,)(,PC,),+1,;(,A,)(,A,),+,(,PC,),MOVC A,,,A+DPTR,;(,A,)(,A,),+,(,DPTR,),例:,设(,A,),=30H,,执行指令:,MOVCA,,,A+PC,;若本指令的存储地址为,1000H,结果,?,将程序存储器中,1031H,单元的内容送入累加器,A,举例,例:设(,DPTR,),=8200H,,(,A,),=30H,,执行指令:,MOVCA,,,A+DPTR,结果,?,将程序存储器中,8230H,单元的内容送入累加器。,举例,举例,例,、设(,A,),=,一个,BCD,码常数,试用查表法获得其相应的,ASCII,码。,51,解法,I,:,MOV DPTR,,,#TAB,MOVC A,,,.A+DPTR,TAB,:,DB 30H,DB 31H,DB 32H,,,33H,,,34H,,,35H,解法,II,:,MOVC A,,,A+PC,TAB,:,DB 30H,,,31H,,,32H,,,33H,DB 34H,,,35H,,,36H,,,37H,4.4,算术运算指令,4.4.1,加法指令,4.4.2,带进位加法指令,4.4.3,加,1,指令,4.4.4,带借位减法指令和减,1,指令,4.4.5,乘、除指令,4.4.6,十进制加法调整指令,4.4.7,数据指针,DPTR,加,1,指令,52,4.4.1,加法指令,53,这些指令的意思就是把后面的值与,A,中的值相加,结果送到,A,中去,加法类指令都是,以,A,为核心,的,其中一个数必须放在,A,中,而运算结果也必须放在,A,中。,4.4.2,带进位,加法指令,54,这些指令的作用都是将,A,中的值和其后面的值相加,并且加上,进位,位,CY,中的值。,例如,2,个,16,进制数相加:,13,67,H+12,A0,H,,先做,67H+A0H=107H,,而,107H,显然超过了,0FFH,,因此最终保存在,A,中的是,7,,而,1,则进到了,PSW,中的,CY,位去了,换言之,,CY,位就相当于是,100H,,然后再做,12H+13H+CY,,结果是,26H,,所以最终的结果是,2607H,。,4.4.3,加,1,指令,55,指令说明,:从结果上看,INC A,和,ADD A,,,#1,差不多,但,INC A,是单字节单周期指令,,而,ADD A,,,#1,则是双字节双周期指令,,而且,INC A,不会影响,PSW,位(,P,位除外),,如,A=0FFH,,,INC A,后,A=00H,,而,CY,依然保持不变;如果是,ADD A,,,#1,,则,A=00H,,而,CY,一定是“,1”,。,因此加,1,指令并不适合做加法,事实上它主要是用来做计数、地址增加等用途。,例:,设(,A,),=0FFH,,(,R3,),=0FH,,(,30H,),=0E2H,,(,R0,),=40H,,(,40H,),=0AAH,,,执行指令:,INCA,INCR3,INC30H,INCR0,(,A,),=00H,(,R3,),=10H,(,30H,),=0E3H,(40H,),=0ABH,4.4.4,带借位减法指令,和减,1,指令,57,指令说明,:,没有,不带借位,的减法指令,,如果需要做不带借位的减法指令(在做第一次相减时),只要先将,CY,清零,即可。,CLR C,减,1,指令,58,指令说明,:既然加,1,指令可以用于计数、地址等加,1,,所以减,1,指令的功能与加,1,指令类似,.,(,1,),DEC A,;,(,2,),DEC Rn,;,例如:,R7=20H,DEC A,;,R7=19H,(,3,),DEC direct,;,例如:,30H=20H,DEC 30H,;,(30H)=19H,(,4,),DEC Ri,;,4.4.5,乘、除指令,乘、除指令,(单字节,四周期),MUL AB,;,AB=B,(高,8,位),A,(低,8,位),DIV AB,;,A,B,A,(商),B,(余数),59,MUL,乘法,指令说明,:两个,8,位无符号数相乘,结果,16,位,在乘积大于,FFH,时,,0V,=“1”,(溢出),否则,OV=“0”,,而,CY,位总是为“,0”,。,DIV,除法指令说明,:通常,CY,位和,OV,位都是“,0”,,,但是,如果在做除法前,B,中的值是,00H,,也就是除数为,0,,那么,0V=1,。,例:(,A,),=4EH,,(,B,),=5DH,;,MUL AB,;乘积是,1C56H,如,13/5,,其商是,2,,余数是,3,。除了以后,商,2,放在,A,中,余数,3,放在,B,中。,4.4.6,十进制加法调整指令,十进制加法调整指令,DA,A,60,是对压缩的,BCD,码(一个字节存放,2,位,BCD,码)的,加法结果,进行,十进制调整,。,两个,BCD,码,按二进制相加,之后,必须经本指令的,调整,才能得到正确的,结果(,压缩的,BCD,码,的,和数,),。,十进制加法调整指令,十进制加法调整指令,DA,A,61,调整方法,(,加法时,),高低四位各一组,相加结果大于,9,(,1001B,无效的,BCD,),加,6,修正;,结果大于等于,=16,(进位,CY,或辅助进位,AC,),加,6,修正。,例如加法:,87+35,MOV A,,,#87H,ADD A,,,#35H;A=0bcH,DA A ;,例如:减法,87-35,?,87+(100-35),计算,87H+(,9A,H-35H),再调整,4.4.7,数据指针,DPTR,加,1,指令,数据指针加,1,指令,INC,DPTR,;,DPTR,DPTR+1,62,注意:,没有相应的减,1,指令。,在算术运算类指令中,除了加,1,和减,1,指令外,其他的算术运算类指令都要把结果放到累加器,A,中,这与数据传递类指令有所不同。,4.5,逻辑运算及移位指令,4.5.1,逻辑与运算指令,4.5.2,逻辑或运算指令,4.5.3,逻辑异或运算指令,4.5.4,累加器清零及取反指令,4.4.5,循环,移位指令,63,逻辑运算指令,64,主要用于对,2,个操作数按,位进行逻辑,操作,结果送到,ACC,或,直接寻址,单元。,主要操作,与、,或,、异或、,取反,、清零等。,对标志位的影响,除了目的操作数为,ACC,的指令影响,奇偶标志,P,外,一般不影响标志位。,4.5.1,逻辑“与”运算指令,65,某一位和,0,逻辑 与,结果为,0,;和,1,逻辑 与,结果不变。,“,指定位清零”,逻辑或,ORL,、,逻辑异或,XRL,的,寻址方式,与此相同,。,后两条指令,,若,直接地址为,I/O,端口,,则为“,读修改,-,写,”操作。,例,1,解,:ANL P1,,,#0FH,“位屏蔽”,:,从包含多个位集的一个或一组字节中选出制定的一(些)位,66,P1=35H,,使其高,4,位输出,0,,低,4,位不变。,4.5.2,逻辑“或”运算指令,67,按位依次进行逻辑运算。,某一位和,1,逻辑 或,结果为,1,;和,0,逻辑 或,结果不变。,“,指定位置,1”,后两条指令,若直接地址为,I/O,端口,则为“,读修改,-,写,”操作。,例,2,将,A,中的低,3,位送入,P1,中,并且保持,P1,中高,5,位不变。,68,ANL A,,,#07H,ANL P1,,,#0F8H,ORL P1,,,A,;(,P1,),=P,17,P,16,P,15,P,14,P,13,A,2,A,1,A,0,这称为“,数位组合,”。,4.5.3,逻辑“异或”运算指令,69,按位依次进行逻辑运算。,某一位和,1,逻辑异或,结果为取反;和,0,逻辑异或,结果不变。,“,指定位取反”,后两条指令,若直接地址为,I/O,端口,则为“,读修改,-,写,”操作。,4.5.4,累加器清零及取反指令,70,指令说明:,CLR A,,,累加器,A,清零,。效果同,MOV A,,,#00H,是一样的,只不过它是单字节指令,而,MOV A,,,#00H,是双字节指令。,指令说明:,CPL A,将累加器,A,逐位取反,。,相当于数字电路的“非”逻辑,例如:,A=12H,,,CPL A,;,12H,化为二进制是,00010010,,逻辑取反后为,11101101,,即,A=0EDH,。,4.4.5,循环,移位指令,71,全部是,累加器,A,循环移位,,移位后信息没有丢失。,移位位数:,1,位。,C,循环移位指令,72,A.0,A.7,A.0,A.7,A.0,A.7,A.0,A.7,CY,CY,C,16,位数的算术左移,,16,位数在内存中存放在,M1,和,M1+1,单元,低,8,位先存。,CLR C,MOV R1,,,#M1,MOV A,,,R1,RLC A,MOV R1,,,A,INC R1,MOV A,,,R1,RLC A,MOV R1,,,A,73,16,位循环移位的实现方法?,;,进位,Cy=0,;,操作数地址送,R1,;,低,8,位送,A,;,低,8,位左移,最低位添,0,,,Cy,A,7,;,送回,;,指向高,8,位,;,高,8,位送,A,;A7,移入,高,8,位左移,;,送回,4.6,控制转移指令,控制转移类指令共有,17,条,转移指令分为三大类,无条件转移指令、,条件转移指令,调用及返回指令,空操作指令,NOP,74,作用:,改变程序计数器,PC,的值,从而改变程序执行方向,转向指令设定的目标地址。,4.6.1,无条件转移指令,75,AJMP L2,L0,:,MOV A,,,#15H,L2,:,MOV R1,,,#3AH,(,绝对,),长转移指令,LJMP addr16,;,PC,addr16,绝对转移指令,AJMP addr11,;,PC,100,addr11,(相对)短转移指令,SJMP rel,;,PC,源地址,+2+rel,变址方式的转移指令,JMP A+DPTR,;,前三个:在助记符中可用,标号,(,符号地址,),来表示。,例如,LJMP L1,MOV A,,,#12H,L1,:,MOV R1,,,#3AH,目标地址,L2,与下一条指令的地址,L0,在同一个,2K,空间,L1,为,64K,的全部空间。,(相对)短转移指令、,散转指令,76,(,绝对,),长转移指令,LJMP addr16,;,PC,addr16,绝对转移指令,AJMP addr11,;,PC,100,addr11,(相对)短转移指令,SJMP rel,;,PC,源地址,+2+rel,变址方式的转移指令,JMP A+DPTR,;,Rel,为,8,位有符号数。(,-128+127,),Rel=L3-L0,SJMP L3,L0,:,MOV A,,,#12H,L3,:,MOV R1,,,#3AH,汇编时会自动计算,rel,。,前三个:在助记符中可用,目标地址(,标号,),来表示。,例如,JMP A+DPTR,;,间接转移,,所谓的“散转指令”,,常用于,多分支程序结构,中,可在程序运行过程中动态地决定程序分支走向。,4.6.2,条件转移指令,77,基本规则:,条件成立时,则转移到,目标地址,,,条件,不成立时,顺序执行下一条指令。,属于,相对寻址,。,条件转移指令在执行过程中需要判断某种条件是否满足,从而决定要不要转移。,转移目的地址,在以下一条指令地址为中心的,256B,范围内(,-128,+127,)。,条件转移指令,的条件,78,实现按照一定条件决定转移的方向,分三类,:,累加器,A,判零条件转移指令,比较条件转移指令,循环转移指令(减,1,条件转移指令),基本规则:,条件成立,则转移到,目标地址,,,条件,不成立,顺序执行下一条指令。,条件转移的条件,可以是上一条指令或者更前一条指令的执行结果(常体现在标志位上),也可以是条件转移指令本身包含的某种运算结果,。,(,1,),累加器,A,判,0,条件转移指令,79,执行指令时,如,条件满足,,则转移;不满足,则顺序执行下一指令。,转移目的地址,在以下一条指令首地址为中心的,256B,范围内(,-128,+127,)。,JZ rel,;,如果,A=0,,则转移,否则顺序执行。,JNZ rel,;,如果,A0,,就转移,否则顺序执行。,汇编语言书写指令时,,rel,可采用目标地址的标号。,例如:,JZ,标号,;,(,2,),比较,条件转移指令,比较不相等转移指令,80,CJNEA,,,#data,,,rel,CJNE R,n,,,#data,,,rel,CJNE R,i,,,#data,,,rel,CJNEA,,,direct,,,rel,比较前两个操作数大小,如果值,不相等则转移,,并转向目的地址,;否则顺序执行。,如果第一操作数(无符号整数)小于第二操作数,(无符号整数),则进位标志位,Cy,置,1,,否则,Cy,清,0,。该指令的执行不影响任何一个操作数的内容。,汇编语言书写指令时,,rel,可采用目标地址的标号。,只有:,比较不相等转移指令,81,利用这些指令,可以判断两数是否,相等,。,但有时还想得知两数比较之后,哪个大,哪个小,,本条指令也具有这样的功能:,如果两数不相等,则,CPU,还会用,CY,(进位位)来反映哪个数大,哪个数小。,如果前面的数大,则,CY=0,,否则,CY=1,。,因此在程序转移后再次利用,CY,就可判断出哪个数大,哪个数小了。,数据大小的比较,82,利用这些指令,可以判断两数是否,相等,。还可以进一步比较两个数,哪个大,哪个小,。,(,3,),循环转移指令(,减,1,不为,0,转移指令,),把减,1,与条件转移两种功能合在一起。,两条:,83,DJNZ Rn,,,rel,DJNZ direct,,,rel,执行过程是这样的,:,它将,Rn,或,direct,中的值,减,1,,然后看这个值是否等于,0,,如果,等于,0,,就往下执行,如果,不等于,0,,就转移,到所指定的地方去。,汇编语言书写指令时,,rel,可采用目标地址的标号。,主要作用:,用于控制程序循环,。预先装入循环次数,,以减,1,后是否为“,0,”,作为转移条件,,,即实现按次数控制循环。,循环转移指令,举例,84,DJNZ Rn,,,标号;,MOV R0,#30H,CLR A,MOV,R7,#10,LOOP:,MOV R0,,,A,INC R0,DJNZ,R7,LOOP,SJMP$,例:将片内数存,30H39H,单元清零。,?,LOOP,的范围超限?,MOV,R7,#10,LOOP:,-,-,-,DJNZ,R7,LP,SJMP Next,LP :LJ,LOOP,Next,:,SJMP$,4.6.3,调用及返回指令,85,(,1,)长调用指令,LCALL addr16,(,2,)绝对调用指令,ACALL addr11,上面两条指令都是在主程序中调用子程序。,LCALL,可调用,64KB,范围内程序存储器中的任何一个子程序,。,ACALL,,被调用子程序入口地址必须与调用指令的下一条指令的地址在相同的,2KB,存储区之内,,为,兼容,MCS48,的,CALL,指令,而设,。,使用时可以用:,LCALL,标号 ;,标号表示子程序首地址,ACALL,标号,来调用子程序。,2,个调用,,2,个返回指令。先看子程序调用指令。,子程序调用指令,86,(,1,)长调用指令,LCALL addr16,(,2,)绝对调用指令,ACALL addr11,指令的执行过程是:,1,、,断点入栈,即,当前,PC,压栈,,,(,先低,后高),;,2,、子程序首地址送,PC,,实现转移。,返回指令,87,子程序执行完后必须回到主程序,如何返回呢?只要执行一条返回指令就可以了。,RET,;子程序返回指令,RETI,;中断子程序返回指令,两者不能互换使用。,返回指令,88,RET,指令的执行过程是:,断点出栈,,堆栈栈顶内容(,2,字节,调用时保存的,PC,值)弹出给,PC,,实现返回。,RETI,指令除了具有,RET,指令的功能实现程序返回外,还有对中断优先级状态触发器的清零。,子程序的嵌套,与断点地址存放,89,4.6.4,空操作指令,90,NOP,空操作,就是什么事也不干,,单字节,,花费,1,个机器周期,,一般用作短时间的延时,程序的调试等。,4.7,布尔变量操作指令,位操作指令(,17,条,),91,MCS-51,单片机的硬件结构中,有一个,位处理器,(又称布尔处理器),它有一套位变量处理的指令集,包括,位,变量,传送,、,逻辑,运算、控制程序,转移,等。,在,MCS-51,中,有,一部份,RAM,和,一部份,SFR,是具有,位寻址,功能的。,位操作区,:内部,RAM,的,20H-2FH,这,16,个字节单元,即,128,个位单元,(,位地址空间位,00,7FH),;,可以位寻址的特殊功能寄存器,:,位地址,92,可以位寻址的特殊功能寄存器,:,这些,SFR,的特点是其,字节地址均可被,8,整除,,如,A,累加器,,B,寄存器、,PSW,、,IP,(中断优先级控制寄存器)、,IE,(中断允许控制寄存器)、,SCON,(串行口控制寄存器)、,TCON,(定时器,/,计数器控制寄存器)、,P0-P3,(,I/O,端口锁存器)。,在进行位处理时,,CY,用作“,位累加器,”,位地址表达方式,93,以,PSW,中位,4,(,RS1,),为例。,直接,(,位展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




第4章 MCS-51单片机的指令系统.ppt



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/12562455.html