[信息与通信]单片机与嵌入式系统3到9章.ppt
《[信息与通信]单片机与嵌入式系统3到9章.ppt》由会员分享,可在线阅读,更多相关《[信息与通信]单片机与嵌入式系统3到9章.ppt(578页珍藏版)》请在三一办公上搜索。
1、第三章 MCS-51的指令系统,3.1 指令系统概述 3.2 指令系统的寻址方式 3.3 MCS-51指令系统分类介绍,3.1 指令系统概述,首先应该明确一个概念,什么是指令系统。我们把MCS-51单片机所能执行的指令的集合称为其指令系统。指令的表示方法称为指令格式,一条指令通常由两部分组成,即操作码和操作数。,操作码 操作数,指令的性质,指令操作的对象,当然操作数并不一定是一个具体的数据,也有可能仅指出到哪里取得数据的地址或符号。MCS-51的基本指令共111条,下面是指令系统按空间和时间上的划分:,从上表我们可以看出,绝大多数指令占用单字节或双字节,并且都能在1-2个机器周期内完成。由此可
2、见,MCS-51指令系统对存储空间和时间的利用率较高。,3.2 MCS-51指令系统的寻址方式,所谓寻址就是寻找确定参与操作的数的真正地址。一般来说,寻址方式越多则计算机的功能就越强,灵活性亦越大,指令系统也就越复杂。MCS-51单片机的指令系统共有7种寻址方式。,3.2.1 符号注释,在描述MCS-51指令系统的功能时,我们经常使用下面符号,其意义如下:,Rn(n0-7)当前选中的寄存器区的8个工作寄存器R0-R7,Ri(i=0、1)当前选中的寄存器区中可作地址寄存器的2个寄存器R0、R1。,Direct直接地址,即8位的内部数据存储器单元或特殊功能寄存器的地址。,#data 指令中的8位常
3、数#data16 指令中的16位常数,Rel 8位的有符号偏移量。用于SJMP或所有的条件转移指令中。偏移量按相对于下一条指令的第一个字节地址与跳转后指令的第一个字节地址之差计算,在128127范围内取值。,DPTR 数据指针,可用作16位的地址寄存器,Bit内部RAM或特殊功能寄存器中的直接寻址位地址,间址寄存器或基址寄存器的前缀。如Ri,A+DPTR,(X)X中的内容(X)由X寻址的单元中的内容,Cy进位标志或进位位,也可作为位处理机中的1位累加器。,/位操作数的前缀,表示对该位操作数取反,如/bit。,3.2.2 寻址方式,1、立即寻址2、直接寻址3、寄存器寻址4、寄存器间接寻址5、变址
4、寻址6、相对寻址7、位寻址,立即寻址,指令中直接给出操作数。立即操作数用前面加有#号的8位或16位数来表示。8位立即操作数占一个字节,16位立即操作数占二个字节。例如:MOVA,#60H;A#60H MOVDPTR,#3400HDPTR#3400H MOV30H,#40H;(30H)#40H,指令代码分别为:74H 60H90H 34H 00H 75H 30H 40H,直接寻址,指令直接给出操作数地址。占一个字节。可访问两种地址空间:特殊功能寄存器地址空间 唯一能访问该空间的寻址方式。片内内部RAM(128个字节:00H7FH),指令形如 MOVA,direct 指令代码:11100101 d
5、irect,对于特殊功能寄存器,在助记符指令中可直接用符号来代替地址,如:MOV A,P0(MOV A,80H这两条指令是等价的)表示将P0口的内容传送给A。思考:MOV 50H,40H 占多少字节?,例:MOVA,40H 指令代码 11100101 01000000即为:E5H 40H,寄存器寻址,寻址的对象为选定寄存器区的8个工作寄存器R0-R7,寄存器A、B、DPTR、和Cy位。这种寻址方式中,被寻址的寄存器的内容就是操作数,一般和操作码共占一个字节.,例:单字节指令:MOVA,Rn(n=07)指令代码:1110 1iii(iii=000111)即为:E8H-EFH,操作码的低3位指示所
6、用的寄存器,CLR AINC DPTRADD R5,#20H操作数采用什么寻址方式?指令占多少字节?,思考:,寄存器间接寻址,以寄存器中内容为地址,以该地址中内容为操作数的寻址方式。能用于寄存器间接寻址的寄存器有R0,R1,DPTR,SP。其中R0、R1必须是工作寄存器组中的寄存器。SP仅用于堆栈操作。访问内部RAM或外部数据存储器的低256个字节时,可采用 或作为间址寄存器,通用形式为Ri。,MOV A,Ri(i=0、1)例:MOV A,R0,指令代码:1110 0110。,最低位是0还是1区分现用寄存器为R0还是R1。,假设该条指令存放在2030H,工作寄存器为第0区,(R0)=50H。5
7、0H为片内RAM的一个单元(50H)=ACH。M0VA,R0该条指令的执行过程,2030H,MOVX A,Ri(i=0、1)例:MOVX A,R1,指令代码:1110 0011。假设该条指令存放在2030H,工作寄存器为第0组,(R1)=AFH。片外RAM(AFH)=30H。指令执行过程:,最低位是0还是1区分现用寄存器为R0还是R1。,访问片外数据存储器还可用数据指针DPTR作为间址寄存器,可对整个外部数据存储器空间(64)寻址。例:MOV DPTR,#1234H MOVX A,DPTR 执行PUSH和POP指令时,使用堆栈指针SP作间址寄存器来进行对栈区的间接寻址。,基址寄存器加变址寄存器
8、间址寻址,变址寻址只能对程序存储器中数据进行操作。由于程序存储器是只读的,因此变址寻址只有读操作而无写操作,此种寻址方式对查表访问特别有用。本寻址方式的指令只有三条:MOVC A,A+DPTR;A(A+DPTR)MOVC A,A+PC;A(A+PC)JMP A+DPTR 无条件转移指令 基址寄存器:DPTR或PC变址寄存器:累加器A 有效地址=(PC)+(A)或有效地址=(DPTR)+(A),例:(DPTR)=2000H,(A)=10H,MOVC A,A+DPTR,JMP A+DPTR指令操作示意图如下图所示。,相对寻址,为解决程序转移而专门设置的。它以PC的当前值为基准,加上指令中给出的相对
9、偏移量(rel)形成有效转移地址。偏移量占一个字节,但这里的PC的当前值是指执行完该指令后的PC值,即转移指令的PC值加上它的字节数。转移的目的地址用公式表示:,目的地址=转移指令所在地址+转移指令的字节数+rel,rel:1个有符号的8位二进制补码.表示的范围是:-128 至+127。,例如:SJMP 08H;PCPC+2+08(指令的地址)=2000H指令操作示意图如下图所示。,位寻址,MCS-51有位处理的功能,可以对数据位进行操作,因此有相应的位寻址的方式。除C外,位寻址指令直接使用位地址,占一个字节。例如:MOV C,40H;把位40H的值送到进位位C。位寻址的寻址范围为整个位地址2
10、11位的空间。,这些寻址位在指令中的表示方法不尽相同,有以下四种(以PSW位5为例):直接使用位寻址。0D5H位名称的表示方法。F0标志位 单元地址加位数的表示方法。(0D0H).5 特殊功能寄存器符号加位数的表示方法。PSW.5,3.3 MCS-51指令系统分类介绍,数据传送类指令算术运算类指令逻辑运算与循环类指令程序转移类指令调用子程序及返回指令 位操作指令空操作指令,数据传送类指令-使用最频繁的指令,数据传送类指令共28条,是将源操作数送到目的操作数。指令执行后,源操作数不变,目的操作数被源操作数取代。数据传送类指令用到的助记符有MOV、MOVX、MOVC、XCH、XCHD、SWAP、P
11、USH、POP 8种。数据传送类指令不影响标志,这里所指的标志是指Cy、Ac和OV,但不包括检验累加器奇偶性的标志位P。,目的地址 源地址,数 据,MOV,MOV A,#20H,,,MOV,20H,A,数据传送指令(29条)使用最频繁的指令 8位数据传送指令(15条),MCS-51单片机片内数据传送途径如图所示,以累加器为目的操作数的指令,MOV A,Rn;A RnMOV A,direct;A(direct)MOV A,Ri;A(Ri)MOV A,#data;A#data这组指令的功能是把源操作数的内容送入累加器A。,MOV A,R6;(R6)A 寄存器寻址MOV A,R0;(R0)A 间接寻
12、址MOV A,70H;(70H)A 直接寻址MOV A,#78H;78HA 立即寻址,以Rn为目的操作数的指令,MOV Rn,A;(A)Rn,n=07MOV Rn,direct;(direct)Rn,n=07MOV Rn,#data;dataRn,n=07这组指令的功能:把源操作数的内容送入当前工作寄存器区的R0-R7中的某一个寄存器.,以直接地址为目的操作数的指令,MOV direct,A;(A)directMOV direct,Rn;(Rn)direct n=07MOV direct1,direct2;(direct2)direct1MOV direct,Ri;(Ri)direct,i=0
13、,1MOV direct,#data;datadirect这组指令的功能:把源操作数送入直接地址指出的存储单元。,以寄存器间接地址为目的操作数的指令,MOV Ri,A;(A)(Ri),i=0,1MOV Ri,direct;direct(Ri),i=0,1MOV Ri,#data;data(Ri),i=0,1指令的功能:把源操作数内容送入R0或R1指出的存储单元。,例如:设(30H)=6FH,(R1)=40H,执行 MOV R1,30H30H单元中数据取出送入R1间接寻址的40H单元,(40H)=6FH。,16位数据传送指令(1条),MOV DPTR,#data16 指令功能:是把16位常数送入
14、DPTR。这是整个指令系统唯一的一条16位数据传送指令,用来设置地址指针。地址指针DPTR由DPH和DPL组成。这条指令的执行结果把高8位立即数送入DPH,低8位立即数送入DPL。,堆栈操作指令,所谓堆栈是在片内RAM中按“先进后出”原则设置的专用存储区。数据的进栈出栈由指针SP统一管理。在指令系统中有两条用于数据操作的栈操作指令。,POP direct;(direct)(SP),SP SP-1指令功能:栈指针SP指示的内部RAM单元内容送入直接地址指出的字节单元中,栈指针SP减1。,PUSH direct;SP(SP+1),(SP)(direct)指令功能:首先将栈指针SP加1,然后把直接地
15、址指出的内容送到栈指针SP指示的内部RAM单元中。,PUSH A(SP)+1=61HSP(A)61H,例如:当(SP)=60H,(A)=30H,(B)=70H时执行下列指令,PUSH B(SP)+1=62HSP(B)62H,结果:(61H)=30H(62H)=70H(SP)=62H,栈底,栈顶,70H,例如:当(SP)=62H,(62H)=70H,(61H)=30H时,执行下列指令,POP DPH(SP)DPH(SP)-1SP,POP DPL(SP)DPL(SP)-1SP,结果:(DPTR)=7030H(SP)=6H,30H,61,DPH,DPL,【例】将片内RAM 30H单元与40H单元中的
16、内容互换。,方法1(直接地址传送法)MOV31H,30H MOV30H,40H MOV40H,31H SJMP$,方法2(间接地址传送法)MOVR0,#40H MOVR1,#30H MOVA,R0 MOVB,R1 MOVR1,A MOVR0,B SJMP$,方法3(字节交换传送法):MOVA,30H XCHA,40H MOV30H,A SJMP$,方法4(堆栈传送法):PUSH30H PUSH40H POP30H POP40H SJMP$,累加器A与外部数据存储器传送指令,指令功能:累加器A与外部RAM存储器或I/O的数据相互传送。MOVX A,DPTR;(DPTR)A,读外部RAM/IOMO
17、VX DPTR,A;(A)(DPTR),写外部RAM/IO MOVX A,Ri;(Ri)A,读外部RAM/IOMOVX Ri,A;(A)(Ri),写外部RAM/IO,采用16位的DPTR作间接寻址,可寻址整个64K片外数据存储器空间。高8位地址(DPH)由P2口输出,低8位地址DPL由P0口输出。,采用Ri作间接寻址,可寻址片外256B的数据存储器。8位地址和数据均由P0口输出,可选用其他任何输出口线来输出高于8位的地址(一般选用P2口输出高8位的地址)。,查表指令,MOVC A,A+PC 这条指令以PC作基址寄存器,A的内容作为无符号整数和PC的内容相加后得到一个16位的地址,由该地址指出的
18、程序存储单元的内容送达累加器A。,此指令的优点是不改变特殊功能寄存器及PC的状态,根据A的内容就可以取出表格中的常数。缺点是表格只能存放在该条查表指令后面的256个单元之内,表格的大小受到限制,而且表格只能被一段程序所利用。,例:(A)=30H,执行地址1000H处的指令 1000H:MOVC A,A+PC 本指令占有一个单元,下一条指令的地址 为1001H,(PC)1001H再加上A中的30H,得1031H,结果将程序存储器中1031H的内容送入A。,MOVC A,A+DPTR 这条指令以DPTR作为基址寄存器,A的内容作为无符号整数和DPTR的内容相加后得到一个16位的地址,由该地址指出的
19、程序存储单元的内容送达累加器A。,例:(DPTR)=8100H(A)=40H 执行指令 MOVC A,A+DPTR结果将程序存储器中的8140H单元内容送入累加器A。,这条查表指令的执行结果只和指针DPTR及累加器A的内容有关,与该指令存放的地址及常数表格存放的地址无关,因此表格的大小和位置可以在64K程序存储器中任意安排,一个表格可以为各个程序块公用。,字节交换指令,XCH A,Rn;(A)(Rn),n07XCH A,direct;(A)(direct)XCH A,Ri;(A)(Ri),i=0,1指令功能:将累加器A的内容和源操作数的内容相互交换。,例:(A)=80H(R7)=08H(40H
20、)=F0H(R0)=30H(30H)=0FH 执行指令:XCH A,R7;(A)(R7)寄存器寻址 XCH A,40H;(A)(40H)直接地址 XCH A,R0;(A)(R0)寄存器间接寻址结果:(A)=0FH(R7)=80H(40H)=08H(30H)=F0H,半字节交换指令,XCHD A,Ri 指令功能:累加器的低4位与内部RAM低4位交换。例:(R0)=60H,(60H)=3EH,(A)=59H 执行完XCHD A,R0指令 则(A)=5EH,(60H)=39H。,算术运算类指令,算术运算类指令主要是对8位无符号数进行算术操作,包括加、减、加1、减1以及乘法和除法运算指令。这类指令会影
21、响PSW的有关位,例如:加法、减法运算指令执行结果影响PSW的进位位CY、溢出位OV、半进位位AC和奇偶校验位P。对这一类指令要特别注意正确地判断结果对标志位的影响。,加法指令,ADD A,Rn;(A)+(Rn)A,n=07ADD A,direct;(A)+(direct)AADD A,Ri;(A)+(Ri)A,i=0,1ADD A,#data;(A)+data A,这组指令的特点:一个加数总是来自累加器A,并且运算结果放在累加器A中。,使用加法指令时,对各个标志位的影响:,位7有进位,则置“1”进位标志Cy,否则清“0”Cy,位3有进位,置“1”辅助进位标志Ac,否则清“0”Ac,如果位6有
22、进位,而位7没有进位,或者位7有进位,而位6没有,则置“1”OV,否则清“0”OV。,注意:溢出标志位OV,只有在有符号数加法运算时才有意义。当2个有符号数相加时,OV=1,表示加法运算超出了累加器A所能表示的带符号数的有效范围(-128+127),例:(A)53H,(R0)=FCH 执行指令 ADD A,R0 0101 0011)1111 1100 1 0100 1111结果:(A)=4FH Cy=1 Ac=0 P=1 OV=0(位6、位7同时有进位),例:(A)85H(R0)=20H,(20H)=AFH 执行指令 ADD A,R0 1000 0101)1010 1111 1 0011 01
23、00 结果:(A)=34H Cy=1 Ac=1 P=1 OV=1(位7有进位,位6无),带进位加法指令,ADDC A,Rn;(A)+(Rn)+Cy A,n=07ADDC A,direct;(A)+(direct)+Cy AADDC A,Ri;(A)+(Ri)+Cy A,i=0,1ADDC A,#data;(A)+data+Cy A,这组指令的特点:进位标志位Cy参加运算。功能是同时把所指出的字节变量、进位标志与累加器A内容相加,结果留在累加器A中。,1000 0101)1111 1111 1 Cy=1 1000 0101 结果:(A)85H Cy=1 Ac=1 OV=0 P=1,例:(A)=8
24、5H,(20H)=FFH,Cy=1执行指令 ADDC A,20H,增量指令,INC A INC Rn;n07INC Ri;i=0,1INC DPTR(16位数加1指令)INC direct指令功能:把所指出的变量加1。,指令首先对低8位指针DPL的内容执行加1的操作,当产生溢出时,就对DPH的内容进行加1操作。,对于指令INC direct,若直接地址是I/O端口,则进行“读-修改-写”操作。指令执行过程中,首先读入端口的内容(来自端口锁存器而不是端口引脚),然后在CPU中加1,继而输出到端口。,十进制调整指令,DA A 这条指令是对压缩BCD码加法运算时,跟在ADD和ADDC指令之后,用于对
25、BCD码的加法运算结果自动进行修正,使其结果仍为BCD表达形式。,调整方法:若(A0-3)9或(AC)=1则(A0-3)+06H(A0-3)若(A4-7)9或(Cy)=1则(A4-7)+06H(A4-7),在计算机中,遇到十进制调整指令时,中间结果的修正是由ALU硬件中的十进制修正电路自动进行时,用户不必考虑何时该加“6”,使用时只需在上述加法指令后面紧跟一条“DA A”指令即可。注意:在MCS-51中,“DA A”指令不适用于减法指令。,5.带进位减法指令,SUBB A,Rn;(A)-(Rn)-Cy A,n=07SUBB A,direct;(A)-(direct)-Cy ASUBB A,Ri
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信息与通信 信息 通信 单片机 嵌入式 系统
链接地址:https://www.31ppt.com/p-5615016.html