[信息与通信]单片机与嵌入式系统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
3、指令中的8位常数 #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 、 直接寻
4、址 3 、 寄存器寻址 4 、 寄存器间接寻址 5 、 变址寻址 6 、 相对寻址 7 、 位寻址,立即寻址,指令中直接给出操作数。立即操作数用前面加有#号的8位或16位数来表示。 8位立即操作数占一个字节, 16位立即操作数占二个字节。 例如: MOV A,# 60H ;A#60H MOV DPTR,# 3400H DPTR#3400H MOV 30H,# 40H ;(30H)#40H,指令代码分别为: 74H 60H 90H 34H 00H 75H 30H 40H,直接寻址,指令直接给出操作数地址。占一个字节。可访问两种地址空间: 特殊功能寄存器地址空间 唯一能访问该空间的寻址方式。 片内
5、内部RAM(128个字节:00H7FH),指令形如 MOV A,direct 指令代码: 11100101 direct,对于特殊功能寄存器,在助记符指令中可直接用符号来代替地址,如: MOV A ,P0 (MOV A ,80H这两条指令是等价的) 表示将P0口的内容传送给A。 思考:MOV 50H, 40H 占多少字节?,例:MOV A,40H 指令代码 11100101 01000000 即为:E5H 40H,寄存器寻址,寻址的对象为选定寄存器区的8个工作寄存器R0-R7,寄存器A、B、DPTR、和Cy位。这种寻址方式中,被寻址的寄存器的内容就是操作数,一般和操作码共占一个字节.,例:单字
6、节指令: MOV A,Rn(n=07) 指令代码:1110 1iii (iii=000111) 即为:E8H-EFH,操作码的低3位指示所用的寄存器,CLR A INC DPTR ADD R5,# 20H 操作数采用什么寻址方式?指令占多少字节?,思考:,寄存器间接寻址,以寄存器中内容为地址,以该地址中内容为操作数的寻址方式。能用于寄存器间接寻址的寄存器有R0,R1,DPTR,SP。其中R0、R1必须是工作寄存器组中的寄存器。SP仅用于堆栈操作。 访问内部RAM或外部数据存储器的低256个字节时,可采用 或作为间址寄存器,通用形式为Ri。,MOV A ,Ri (i=0、1) 例: MOV A,
7、 R0 , 指令代码: 1110 0110。,最低位是0还是1区分现用寄存器为R0还是R1。,假设该条指令存放在2030H,工作寄存器为第0区,(R0)=50H。50H为片内RAM的一个单元(50H)=ACH。 M0V A,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作为 间址寄存器,可对整个外部数据
8、存储器空间(64) 寻址。 例: MOV DPTR ,#1234H MOVX A ,DPTR 执行PUSH和POP指令时,使用堆栈指针SP作间 址寄存器来进行对栈区的间接寻址。,基址寄存器加变址寄存器间址寻址,变址寻址只能对程序存储器中数据进行操作。由 于程序存储器是只读的,因此变址寻址只有读操作而 无写操作,此种寻址方式对查表访问特别有用。本寻 址方式的指令只有三条: MOVC A,A+DPTR ;A(A+DPTR) MOVC A, A+PC ;A(A+PC) JMP A+DPTR 无条件转移指令 基址寄存器:DPTR或PC 变址寄存器:累加器A 有效地址=(PC)+(A) 或有效地址=(D
9、PTR)+(A),例:(DPTR)=2000H,(A)=10H, MOVC A,A+DPTR , JMP A+DPTR 指令操作示意图如下图所示。,相对寻址,为解决程序转移而专门设置的。它以PC的当前值为基准,加上指令中给出的相对偏移量(rel)形成有效转移地址。偏移量占一个字节,但这里的PC的当前值是指执行完该指令后的PC值,即转移指令的PC值加上它的字节数。 转移的目的地址用公式表示:,目的地址=转移指令所在地址+转移指令的字节数+rel,rel: 1个有符号的8位二进制补码. 表示的范围是:-128 至 +127。,例如: SJMP 08H ; PCPC+2+08 (指令的地址)=200
10、0H 指令操作示意图如下图所示。,位寻址,MCS-51有位处理的功能,可以对数据位进行操作,因此有相应的位寻址的方式。除C外,位寻址指令直接使用位地址, 占一个字节。 例如: MOV C, 40H ;把位40H的值送到进位位C。 位寻址的寻址范围为整个位地址211位的空间。,这些寻址位在指令中的表示方法不尽相同, 有以下四种(以PSW位5为例): 直接使用位寻址。 0D5H 位名称的表示方法。 F0标志位 单元地址加位数的表示方法。(0D0H).5 特殊功能寄存器符号加位数的表示方法。PSW.5,3.3 MCS-51指令系统分类介绍,数据传送类指令 算术运算类指令 逻辑运算与循环类指令 程序转
11、移类指令 调用子程序及返回指令 位操作指令 空操作指令,数据传送类指令 -使用最频繁的指令,数据传送类指令共28条,是将源操作数送到目的操作数。指令执行后,源操作数不变,目的操作数被源操作数取代。数据传送类指令用到的助记符有MOV、MOVX、MOVC、XCH、XCHD、SWAP、PUSH、POP 8种。 数据传送类指令不影响标志,这里所指的标志是指Cy、Ac和OV,但不包括检验累加器奇偶性的标志位P。,目的地址 源地址,数 据,MOV ,MOV A,#20H,,,MOV,20H,A,数据传送指令(29条) 使用最频繁的指令 8位数据传送指令(15条),MCS-51单片机片内数据传送途径如图所示
12、,以累加器为目的操作数的指令,MOV A,Rn ;A Rn MOV 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 间接寻址 MOV A,70H ;(70H)A 直接寻址 MOV A,#78H ;78HA 立即寻址,以Rn为目的操作数的指令,MOV Rn,A ; (A) Rn,n=07 MOV Rn,direct ; (direct) Rn,n=07 MOV Rn,#data ; dataRn,n=07 这
13、组指令的功能:把源操作数的内容送入当前工作 寄存器区的R0-R7中的某一个寄存器.,以直接地址为目的操作数的指令,MOV direct,A ;(A) direct MOV direct,Rn ;(Rn)direct n=07 MOV direct1,direct2 ;(direct2) direct1 MOV direct,Ri ;(Ri) direct ,i=0,1 MOV direct,#data ;datadirect 这组指令的功能:把源操作数送入直接地址指出 的存储单元。,以寄存器间接地址为目的操作数的指令,MOV Ri,A ;(A) (Ri),i=0,1 MOV Ri,direct
14、 ;direct(Ri),i=0,1 MOV Ri,#data ;data(Ri),i=0,1 指令的功能:把源操作数内容送入R0或R1 指出的存储单元。,例如:设(30H)=6FH,(R1)=40H,执行 MOV R1,30H 30H单元中数据取出送入R1间接寻址的40H单元,(40H)=6FH。,16位数据传送指令 (1条),MOV DPTR,#data16 指令功能:是把16位常数送入DPTR。这是整个指令系统唯一的一条16位数据传送指令,用来设置地址指针。地址指针DPTR由DPH和DPL组成。这条指令的执行结果把高8位立即数送入DPH,低8位立即数送入DPL。,堆栈操作指令,所谓堆栈是
15、在片内RAM中按“先进后出”原则设置的专用存储区。数据的进栈出栈由指针SP统一管理。在指令系统中有两条用于数据操作的栈操作指令。,POP direct;(direct)(SP),SP SP-1 指令功能:栈指针SP指示的内部RAM单元内容送入 直接地址指出的字节单元中,栈指针SP减1。,PUSH direct;SP(SP+1),(SP)(direct) 指令功能:首先将栈指针SP加1,然后把直接地址 指出的内容送到栈指针SP指示的内部RAM单元中。,PUSH A (SP)+1=61HSP (A)61H,例如:当(SP)=60H,(A)=30H,(B)=70H时 执行下列指令,PUSH B (S
16、P)+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单元中的内容互换。,方法1(直接地址传送法) MOV 31H,30H MOV 30H,40H MOV 40H,31H SJMP $,方法2(间接地址传送法) MOV R0,#
17、40H MOV R1,#30H MOV A,R0 MOV B,R1 MOV R1,A MOV R0,B SJMP $,方法3(字节交换传送法): MOV A,30H XCH A,40H MOV 30H,A SJMP $,方法4(堆栈传送法): PUSH 30H PUSH 40H POP 30H POP 40H SJMP $,累加器A与外部数据存储器传送指令,指令功能:累加器A与外部RAM存储器或I/O的数据相互传送。 MOVX A,DPTR ;(DPTR)A, 读外部RAM/IO MOVX DPTR,A ;(A)(DPTR),写外部RAM/IO MOVX A,Ri ;(Ri)A, 读外部RAM
18、/IO MOVX 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位的地址,由该地址指出的程序存储单元的内容送达累加器A。,此指令的优点是不改变特殊功能寄存器及PC的状态,根据A的内容就可以
19、取出表格中的常数。缺点是表格只能存放在该条查表指令后面的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位的地址,由该地址指出的程序存储单元的内容送达累加器A。,例:(DPTR)=8100H (A)=40H 执行指令 MOVC
20、A,A+DPTR 结果将程序存储器中的8140H单元内容送入累加器A。,这条查表指令的执行结果只和指针DPTR及累加器A的内容有关,与该指令存放的地址及常数表格存放的地址无关,因此表格的大小和位置可以在64K程序存储器中任意安排,一个表格可以为各个程序块公用。,字节交换指令,XCH A,Rn ;(A)(Rn),n07 XCH A,direct ; (A)(direct) XCH A,Ri ;(A)(Ri), i=0,1 指令功能:将累加器A的内容和源操作数的内容 相互交换。,例:(A)=80H (R7)=08H (40H)=F0H (R0)=30H (30H)=0FH 执行指令: XCH A,
21、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以及乘法和除法运算指令。这类指令会影响PSW的有关位,例如:加法、减法运算指令执
22、行结果影响PSW的进位位CY、溢出位OV、半进位位AC和奇偶校验位P。对这一类指令要特别注意正确地判断结果对标志位的影响。,加法指令,ADD A,Rn ;(A)+(Rn) A ,n=07 ADD A,direct ;(A)+(direct) A ADD A,Ri ;(A)+(Ri) A, i=0,1 ADD A,#data ; (A)+data A,这组指令的特点:一个加数总是来自累加器A,并且运算结果放在累加器A中。,使用加法指令时,对各个标志位的影响:,位7有进位,则置“1”进位标志Cy,否则清“0”Cy,位3有进位,置“1”辅助进位标志Ac,否则清“0”Ac,如果位6有进位,而位7没有进
23、位,或者位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 0100
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信息与通信 信息 通信 单片机 嵌入式 系统
链接地址:https://www.31doc.com/p-2000760.html