单片机教程3-MCS-51指令系统课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《单片机教程3-MCS-51指令系统课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 教程 MCS 51 指令系统 课件
- 资源描述:
-
1、3.1 概述概述7 7种寻址方式,种寻址方式,111111条指令条指令字节数字节数运算速度运算速度单字节指令:单字节指令:4949条条双字节指令:双字节指令:4545条条三字节指令:三字节指令:1717条条单周期指令:单周期指令:6464条条双周期指令:双周期指令:4545条条四周期指令:四周期指令:2 2 条条第三章 MCS-51指令系统功能功能数据传送类:数据传送类:2929条条算术运算类:算术运算类:2424条条逻辑运算类:逻辑运算类:2424条条控制转移类:控制转移类:1717条条位操作类:位操作类:1717条条常用符号Rn:工作寄存器中的寄存器R0、R1R7之一,Ri:工作寄存器中的
2、寄存器R0或R1#data:8位立即数#data16:16位立即数direct:片内RAM或SFR的地址(8位)间接寻址寄存器Bit:片内RAM或SFR的位地址addr11:11位目的地址addr16:16位目的地址rel:补码形式的8位地址偏移量。偏移范围为-128127/:位操作指令中,该位求反后参与操作,不影响该位X:片内RAM的直接地址或寄存器(X):相应地址单元中的内容:箭头左边的内容送入箭头右边的单元内 3.23.2 寻址方式寻址方式3.2.13.2.1 立即寻址立即寻址Immediate AddressingImmediate Addressing 操作数就包含在指令代码中,在操
3、作码之后,称为操作数就包含在指令代码中,在操作码之后,称为立即数,用立即数,用“”表示。表示。MCS-51MCS-51 如:如:MOV P1,MOV P1,#80H#80H MOV R7,MOV R7,#0F5H#0F5H MOV DPTR MOV DPTR,#1245H#1245H操作数存在程序存储器中 3.2.2 3.2.2 直接寻址直接寻址 Direct AddressingDirect Addressing直接使用数所在单元的直接使用数所在单元的地址地址找到了操作数,所以称找到了操作数,所以称这种方法为这种方法为直接寻址直接寻址。操作数在操作数在SFRSFR、内部内部RAMRAM、位地
4、址位地址空间。空间。如:如:MOV AMOV A,00H00H MOV CMOV C,60H60H MOV AMOV A,0F0H0F0H3.2.3 寄存器寻址寄存器寻址 Register Addressing对选定的工作寄存器对选定的工作寄存器R0R0R7R7、累加器、累加器A A、通用寄存器、通用寄存器B B、地址寄存器地址寄存器DPTRDPTR中的数进行操作。中的数进行操作。例:例:MOV AMOV A,R0R0;将将R0R0工作寄存器中的数据送到累加器工作寄存器中的数据送到累加器A A中去。中去。提一个问题:提一个问题:我们知道,工作寄存器就是内存单元我们知道,工作寄存器就是内存单元的
5、一部分,如果我们选择工作寄存器组的一部分,如果我们选择工作寄存器组0 0,则,则R0R0就就是是RAMRAM的的00H00H单元,那么这样一来,单元,那么这样一来,MOV AMOV A,00H00H 和和 MOV AMOV A,R0R0不就没什么区别了吗?不就没什么区别了吗?的确,这两条指令执行的结果是完全相同的,的确,这两条指令执行的结果是完全相同的,都是将都是将00H00H单元中的内容送到单元中的内容送到A A中去,但是执行的过中去,但是执行的过程不同,执行第一条指令需要程不同,执行第一条指令需要2 2个机器周期,而第二个机器周期,而第二条则只需要条则只需要1 1个机器周期,第一条指令变成
6、最终的目个机器周期,第一条指令变成最终的目标码要两个字节(标码要两个字节(E5H 00HE5H 00H),而第二条则只要一),而第二条则只要一个字节(个字节(E8E8H H)就可以了。)就可以了。3.2.4 寄存器间接寻址寄存器间接寻址 Register Indirect Addressing把地址放在另外一个寄存器中,根据这个寄存器中的数值把地址放在另外一个寄存器中,根据这个寄存器中的数值决定该到哪个单元中取数据。决定该到哪个单元中取数据。R0R0,R1-R1-8-8位地址,位地址,片内片内低低128128字节或字节或片外片外DPTRDPTR-16-16位,片外位,片外64KB64KBv M
7、CS-51MCS-51如:如:MOV AMOV A,R0R0MOVX AMOVX A,R0R0MOVX AMOVX A,DPTRDPTR操作数在片内RAM中操作数在片外RAM中操作数在片外RAM中以以DPTRDPTR或或PCPC为基址寄存器,累加器为基址寄存器,累加器A A为变址寄存器。把两为变址寄存器。把两者内容相加,结果作为操作数的地址。者内容相加,结果作为操作数的地址。常用于查表操作。常用于查表操作。v MCS-51MCS-51 MOVCMOVC A A,A+DPTRA+DPTR ;(A+DPTR)A(A+DPTR)A MOVCMOVC A A,A+PCA+PC;PC+1 PCPC+1
8、PC,(A+PC)A(A+PC)A3.2.5 变址寻址变址寻址(基址基址+变址变址)Base-Register-plus-Index-Register-Indirect Addressing操作数在程序存储器中E0A程序存储区2040H 9320E0H 472041H DPH 20DPL 00ALU如:MOVC A,A+DPTR设DPTR=2000H,A=E0H20E0H47指令代码3.2.6 相对寻址相对寻址 将将PCPC中的当前内容与指令中的当前内容与指令第二字节给出的数第二字节给出的数相加,结相加,结 果作为跳转指令的转移地址(转移目的地址)。果作为跳转指令的转移地址(转移目的地址)。P
9、CPC中的中的当前当前内容称为内容称为基地址基地址(本指令后的字节地址)(本指令后的字节地址)指令第二字节给出的数据称为指令第二字节给出的数据称为偏移量偏移量,1 1字节带符号数字节带符号数.常用于跳转指令。常用于跳转指令。如如:JC 23H:JC 23H 若若C=0C=0,不跳转;,不跳转;C=1C=1,跳转,跳转.Relative Addressing改变PC程序存储区ALU如:JC 231025H1000H 401025H 451001H 23 1024H 471002H 3023H1002H指令代码当前PC 对片内对片内RAMRAM的的位寻址区位寻址区和某些可和某些可位寻址位寻址的特殊
10、的特殊功能寄存器进行位操作时的寻址方式。功能寄存器进行位操作时的寻址方式。如如:SETB 3DH;:SETB 3DH;将将27H.527H.5位置位置1 1 CLR C CLR C ;CyCy位清位清0 03.2.7 3.2.7 位寻址位寻址 Bit Addressing操作数在片内RAM位地址区或SFR某些位中寻址方式涉及的存储器空间寻址方式涉及的存储器空间3.3 3.3 数据传送类指令数据传送类指令(2929条)条)Data Transfer InstructionData Transfer Instruction MCS-51 MCS-51 助记符:助记符:助记符:助记符:MOVMOV、
11、MOVXMOVX、MOVC MOVC XCH XCH、XCHDXCHD、SWAP SWAP PUSH PUSH、POP POP v 源操作数寻址方式(源操作数寻址方式(5 5种)种):立即寻址、直接寻址、寄存器寻址、立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址。寄存器间接寻址、变址寻址。v 目的操作数寻址方式(目的操作数寻址方式(3 3种)种):直接寻址、寄存器寻址、寄存器间接寻址直接寻址、寄存器寻址、寄存器间接寻址 除了目的操作数为除了目的操作数为ACCACC的指令影响奇偶标志的指令影响奇偶标志P P外,一般不影响外,一般不影响标志位。标志位。3.3.1 3.3.1 十六位数的传
12、递指令十六位数的传递指令(1条)MOV DPTRMOV DPTR,#data16data1680518051是一种是一种8 8位机,这是唯一的一条位机,这是唯一的一条1616位位立即数传递指立即数传递指令。功能:将一个令。功能:将一个1616位的立即数送入位的立即数送入DPTRDPTR中去。其中中去。其中高高8 8位送入位送入DPHDPH,低,低8 8位送入位送入DPLDPL。例:例:MOV DPTRMOV DPTR,#1234H#1234H执行完了之后执行完了之后DPHDPH中的值为中的值为12H12H,DPLDPL中的值为中的值为34H34H。如果我们分别向如果我们分别向DPHDPH,DP
13、LDPL送数,则结果也一样。送数,则结果也一样。如下面两条指令:如下面两条指令:MOV DPHMOV DPH,#35H#35H MOV DPL MOV DPL,#12H#12H。则就相当于执行了则就相当于执行了 MOV DPTRMOV DPTR,#3512H#3512H。3.3.2 3.3.2 累加器累加器A A与片外与片外RAMRAM之间的数据传递类指令之间的数据传递类指令(4(4条条)MOVX A,Ri MOVX Ri,A MOVX A,DPTR MOVX DPTR,A说明:1.在51中,与外部存储器RAM打交道的只可以是A累加器。所有需要送入外部RAM的数据必需要通过A送去,而所有要读入
14、的外部RAM中的数据也必需通过A读入。在此我们可以看出内外部RAM的区别了,内部RAM间可以直接进行数据的传递,而外部则不行。比如,要将外部RAM中某一单元(设为0100H单元的数据)送入另一个单元(设为0200H单元),也必须先将0100H单元中的内容读入A,然后再送到0200H单元中去。2.2.要读或写外部的要读或写外部的RAMRAM,当然也必须要知道,当然也必须要知道RAMRAM的地址,的地址,在后两条指令中,地址是被直接放在在后两条指令中,地址是被直接放在DPTRDPTR中的。而前两条中的。而前两条指令,由于指令,由于RiRi(即(即R0R0或或R1R1)只是)只是8 8位的寄存器,所
15、以只提位的寄存器,所以只提供低供低8 8位地址。高位地址。高8 8位地址由位地址由P2P2口口来提供。来提供。3.3.使用时应先将要读或写的地址送入使用时应先将要读或写的地址送入DPTRDPTR或或RiRi中,然后中,然后再用读写命令。再用读写命令。例例:将外部:将外部RAMRAM中中100H100H单元中的内容送入外部单元中的内容送入外部RAMRAM中中200H200H单元中。单元中。MOV DPTRMOV DPTR,#0100H#0100HMOVX AMOVX A,DPTRDPTRMOV DPTRMOV DPTR,#0200H#0200HMOVX DPTRMOVX DPTR,A A3.3.
16、3 读读程序存储器指令程序存储器指令(2条)条)MOVC A,A+DPTR MOVC A,A+PC 本组指令是将ROM中的数送入A中。本组指令也被称为查表指令,常用此指令来查一个已做好在ROM中的表格说明:查找到的结果被放在A中,因此,本条指令执行前后,A 中的值不一定相同。例:有一个数在R0中,要求用查表的方法确定它的平方值(此 数的取值范围是0-5)MOV DPTR,#100H MOV A,R0 MOVC A,A+DPTR.ORG 0100HDB 0,1,4,9,16,25如果如果R0中的值为中的值为2,则最终地址为则最终地址为100H+2为为102H,到到102H单元中找到单元中找到的是
17、的是4。3.3.4 堆栈操作堆栈操作(2 2条)条)PUSH directPUSH direct ;SPSP+1,(SP)(direct)POP directPOP direct ;(direct)(SP),SPSP-1第一条为压入指令,就是将direct中的内容送入堆栈中,第二条为弹出指令,就是将堆栈中的内容送回到direct中。例例:MOV SPMOV SP,#5FH#5FH MOV A MOV A,#100#100 MOV B MOV B,#20#20 PUSH ACCPUSH ACC PUSH B PUSH B 则执行第一条PUSH ACC指令是这样的:将SP中的值加1,即变为60H,
18、然后将A中的值送到60H单元中,因此执行完本条指令后,内存60H单元的值就是100,同样,执行PUSH B时,是将SP+1,即变为61H,然后将B中的值送入到61H单元中,即执行完本条指令后,61H单元中的值变为20。1 1.给出每条指令执行后的结果给出每条指令执行后的结果 MOV 23H,#30HMOV 12H,#34HMOV R0,#23HMOV R7,12HMOV R1,#12HMOV A,R0MOV 34H,R1MOV 45H,34HMOV DPTR,#6712HMOV 12H,DPHMOV R0,DPLMOV A,R0;(23H)=30H;(12H)=34H;R0=23HXXXXXX
19、XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXDPHDPHDPLDPL45H45H34H34H23H23H12H12HR7R7R1R1R0R0XXXXXXXXXXXXXXXX30303434XXXXXXXX2323XXXXXXXXXXXXXXXX30303434343412122323676712123434343430303434343412122323676712123434343430306767343412121212;R7=34H;R1=12H;A=30H;(34H)=34H;(45H)=34H;DPTR=6712H;(12H)=6767H;R0=1212H;A=676
20、7H内部RAM3.4 3.4 算术运算类指令算术运算类指令(2424条条)Arithmetic OperationsArithmetic Operations 主要对主要对8 8位无符号数;也可用于带符号数运算。位无符号数;也可用于带符号数运算。包括:加、减、乘、除、加包括:加、减、乘、除、加1 1、减、减1 1运算指令运算指令 影响影响PSWPSW有关位。有关位。3.4.1 加法指令ADD AADD A,#datadata ;AdataAADD AADD A,direct direct;A(direct)AADD AADD A,RnRn ;ARnAADD AADD A,RiRi ;A(Ri)
21、A用途:用途:将将A A中的值与源操作数所指内容相加,最终结果中的值与源操作数所指内容相加,最终结果 存在存在A A中。中。1.不带进位位的加法指令(4 4条)条)2.带进位位的加法指令(4 4条)条)ADDC AADDC A,RnRn;A ARnRnCYACYAADDC AADDC A,directdirect;A A(direct)(direct)CYACYAADDC AADDC A,RiRi;A A(Ri(Ri)CYACYAADDC AADDC A,#datadata;A AdatadataCYACYA用途:用途:将将A A中的值和其后面的值以及进位位中的值和其后面的值以及进位位C C中
22、的值相加,中的值相加,最终结果存在最终结果存在A A,常用于多字节数运算中。,常用于多字节数运算中。说明:说明:由于由于5151单片机是一种单片机是一种8 8位机,所以只能做位机,所以只能做8 8位的数学位的数学运算,但运算,但8 8位运算的范围只有位运算的范围只有0 0255255,这在实际工作中是不,这在实际工作中是不够的,因此就要进行扩展,一般是将够的,因此就要进行扩展,一般是将2 2个个8 8位位(两字节两字节)的数的数学运算合起来,成为一个学运算合起来,成为一个1616位的运算,这样,可以表达的位的运算,这样,可以表达的数的范围就可以达到数的范围就可以达到0 06553565535。
23、例:先做先做67H+A0H=107H67H+A0H=107H,而,而1 107H07H显然超过了显然超过了0FF0FFH H,因此最终保存在因此最终保存在A A中的是中的是07H07H,而,而1 1则到了则到了PSWPSW中的中的CYCY位了。换言之,位了。换言之,CYCY就相当于是就相当于是100H100H。然后再做然后再做10H+30H+10H+30H+CYCY,结果是,结果是41H41H,所以,所以最终的结果是最终的结果是4107H4107H。1067H+30A0H1067H+30A0H0001 0000 0110 0111 0011 0000 1010 0000 0100 0001 0
24、000 0111 1067H1067H30A0H30A0H4107H4107H设:1067H存在R1R0中,30A0H存在R3R2中,计算R1R0+R3R2,结果存在R5R4中。MOV A,R0ADD A,R2 ;R0+R2A和CYMOV R4,AMOV A,R1ADDC A,R3 ;R1+R3+CYA和CYMOV R5,A又例:先做先做67H+20H=87H67H+20H=87H,没有超过,没有超过0FF0FFH H,因此最终,因此最终保存在保存在A A中的是中的是87H87H,而,而PSWPSW中的中的CY=0CY=0。然后再做然后再做10H+30H+10H+30H+CYCY,结果是,结果
25、是40H40H,所以,所以最终的结果是最终的结果是4087H4087H。1067H+3020H1067H+3020H0001 0000 0110 0111 0011 0000 0010 0000 0100 0000 1000 0111 1067H1067H3020H3020H4087H4087HDA ADA A在进行在进行BCDBCD码加法运算时,跟在码加法运算时,跟在ADDADD和和ADDCADDC指令指令之后,用于对累加器之后,用于对累加器A A中刚进行的两个中刚进行的两个BCDBCD码的加法码的加法的结果进行十进制调整。的结果进行十进制调整。例:例:A=0001 0101BCDA=000
展开阅读全文