51单片机中断汇编课件.ppt
《51单片机中断汇编课件.ppt》由会员分享,可在线阅读,更多相关《51单片机中断汇编课件.ppt(64页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、3.1 概述概述7 7种寻址方式,种寻址方式,111111条指令条指令字节数字节数运算速度运算速度单字节指令:单字节指令:4949条条双字节指令:双字节指令:4545条条三字节指令:三字节指令:1717条条单周期指令:单周期指令:6464条条双周期指令:双周期指令:4545条条四周期指令:四周期指令:2 2 条条第三章 MCS-51指令系统 Instruction Set6/1/20236/1/20231 1功能功能数据传送类:数据传送类:2929条条算术运算类:算术运算类:2424条条逻辑运算类:逻辑运算类:2424条条控制转移类:控制转移类:1717条条位操作类:位操作类:17 17条条6
2、/1/20236/1/20232 2常用符号Rn:工作寄存器中的寄存器Rn、R1R7之一,Ri:工作寄存器中的寄存器R0或R1#data:8位立即数#data16:16位立即数direct:片内RAM或SFR的地址(8位)间接寻址寄存器Bit:片内RAM或SFR的位地址addr11:11位目的地址addr16:16位目的地址6/1/20236/1/20233 3rel:补码形式的8位地址偏移量。偏移范围为-128127/:位操作指令中,该位求反后参与操作,不影响该位X:片内RAM的直接地址或寄存器(X):相应地址单元中的内容:箭头左边的内容送入箭头右边的单元内6/1/20236/1/20234
3、 4 3.2 3.2 寻址方式寻址方式3.2.1 3.2.1 立即寻址立即寻址Immediate AddressingImmediate Addressing 操作数就包含在指令代码中,在操作码之后,称为操作数就包含在指令代码中,在操作码之后,称为立即数,用立即数,用“”表示。表示。MCS-51MCS-51 如:如:MOV P1,MOV P1,#80H#80H MOV R7,MOV R7,#0F5H#0F5H MOV DPTR MOV DPTR,#1245H#1245H操作数存在程序存储器中6/1/20236/1/20235 5 3.2.2 3.2.2 直接寻址直接寻址 Direct Addr
4、essingDirect Addressing直接使用数所在单元的直接使用数所在单元的地址地址找到了操作数,所以称找到了操作数,所以称这种方法为这种方法为直接寻址直接寻址。操作数在操作数在SFRSFR、内部内部RAMRAM、位地址位地址空间。空间。如:如:MOV A MOV A,00H00H MOV CMOV C,60H60H MOV AMOV A,0F0H0F0H6/1/20236/1/20236 63.2.3 寄存器寻址寄存器寻址 Register Addressing对选定的工作寄存器对选定的工作寄存器R0R0R7R7、累加器、累加器A A、通用寄存器、通用寄存器B B、地址寄存器地址寄
5、存器DPTRDPTR中的数进行操作。中的数进行操作。例:例:MOV AMOV A,R0R0;将将R0R0工作寄存器中的数据送到累加器工作寄存器中的数据送到累加器A A中去。中去。提一个问题:提一个问题:我们知道,工作寄存器就是内存单元我们知道,工作寄存器就是内存单元的一部分,如果我们选择工作寄存器组的一部分,如果我们选择工作寄存器组0 0,则,则R0R0就就是是RAMRAM的的00H00H单元,那么这样一来,单元,那么这样一来,MOV AMOV A,00H00H 和和 MOV AMOV A,R0R0不就没什么区别了吗?不就没什么区别了吗?6/1/20236/1/20237 7 的确,这两条指令
6、执行的结果是完全相同的,的确,这两条指令执行的结果是完全相同的,都是将都是将00H00H单元中的内容送到单元中的内容送到A A中去,但是执行的过中去,但是执行的过程不同,执行第一条指令需要程不同,执行第一条指令需要2 2个机器周期,而第二个机器周期,而第二条则只需要条则只需要1 1个机器周期,第一条指令变成最终的目个机器周期,第一条指令变成最终的目标码要两个字节(标码要两个字节(E5H 00HE5H 00H),而第二条则只要一个),而第二条则只要一个字节(字节(E8E8H H)就可以了。)就可以了。6/1/20236/1/20238 83.2.4 寄存器间接寻址寄存器间接寻址 Register
7、 Indirect Addressing把地址放在另外一个寄存器中,根据这个寄存器中的数值把地址放在另外一个寄存器中,根据这个寄存器中的数值决定该到哪个单元中取数据。决定该到哪个单元中取数据。R0R0,R1-R1-8-8位地址,位地址,片内片内低低128128字节或字节或片外片外DPTRDPTR-16-16位,片外位,片外64KB64KBv MCS-51MCS-51如:如:MOV AMOV A,R0R0MOVX AMOVX A,R0R0MOVX AMOVX A,DPTRDPTR操作数在片内RAM中操作数在片外RAM中操作数在片外RAM中6/1/20236/1/20239 9以以DPTRDPTR
8、或或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 PC,(A+PC)A(A+PC)A3.2.5 变址寻址变址寻址(基址基址+变址变址)Base-Register-plus-Index-Register-Indirect Addressing操作数在程序存储器中6/1
9、/20236/1/20231010E0A程序存储区2040H 9320E0H 472041H DPH 20DPL 00ALU如:MOVC A,A+DPTR设DPTR=2000H,A=E0H20E0H47指令代码6/1/20236/1/202311113.2.6 相对寻址相对寻址 将将PCPC中的当前内容与指令中的当前内容与指令第二字节给出的数第二字节给出的数相加,结相加,结 果作为跳转指令的转移地址(转移目的地址)。果作为跳转指令的转移地址(转移目的地址)。PC PC中的中的当前当前内容称为内容称为基地址基地址(本指令后的字节地址)(本指令后的字节地址)指令第二字节给出的数据称为指令第二字节给
10、出的数据称为偏移量偏移量,1 1字节带符号数字节带符号数.常用于跳转指令。常用于跳转指令。如如:JC 23H:JC 23H 若若C=0C=0,不跳转;,不跳转;C=1 C=1,跳转,跳转.Relative Addressing改变PC6/1/20236/1/20231212程序存储区ALU如:JC 231025H1000H 401025H 451001H 23 1024H 471002H 3023H1002H指令代码当前PC6/1/20236/1/20231313 对片内对片内RAMRAM的的位寻址区位寻址区和某些可和某些可位寻址位寻址的特殊功的特殊功能寄存器进行位操作时的寻址方式。能寄存器进
11、行位操作时的寻址方式。如如: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某些位中6/1/20236/1/20231414寻址方式涉及的存储器空间寻址方式涉及的存储器空间寻址方式寻址方式寻址方式寻址方式寻址空间(操作数存放空间)寻址空间(操作数存放空间)寻址空间(操作数存放空间)寻址空间(操作数存放空间)立即寻址立即寻址立即寻址立即寻址程序存储器程序存储器程序存储器程序存储器直接寻址直接寻址直接寻址直接寻址片内片内片
12、内片内RAMRAMRAMRAM低低低低128128128128字节、字节、字节、字节、SFRSFRSFRSFR寄存器寻址寄存器寻址寄存器寻址寄存器寻址工作寄存器工作寄存器工作寄存器工作寄存器R0R0R0R0R7,A,B,DPTRR7,A,B,DPTRR7,A,B,DPTRR7,A,B,DPTR寄存器间接寻址寄存器间接寻址寄存器间接寻址寄存器间接寻址片内片内片内片内RAM:R0,R1,SPRAM:R0,R1,SPRAM:R0,R1,SPRAM:R0,R1,SP片外片外片外片外RAM:R0,R1,DPTRRAM:R0,R1,DPTRRAM:R0,R1,DPTRRAM:R0,R1,DPTR变址寻址变
13、址寻址变址寻址变址寻址程序存储器程序存储器程序存储器程序存储器:A+PC,A+DPTR:A+PC,A+DPTR:A+PC,A+DPTR:A+PC,A+DPTR相对寻址相对寻址相对寻址相对寻址程序存储器程序存储器程序存储器程序存储器256256256256字节范围内字节范围内字节范围内字节范围内:PC+:PC+:PC+:PC+偏移量偏移量偏移量偏移量位寻址位寻址位寻址位寻址片内片内片内片内RAMRAMRAMRAM的位寻址区的位寻址区的位寻址区的位寻址区(20H(20H(20H(20H2FH2FH2FH2FH字节地址字节地址字节地址字节地址)某些可位寻址的某些可位寻址的某些可位寻址的某些可位寻址的
14、SFRSFRSFRSFR6/1/20236/1/202315153.3 3.3 数据传送类指令数据传送类指令(2929条)条)Data Transfer InstructionData Transfer Instruction MCS-51 MCS-51 助记符:助记符:助记符:助记符:MOV MOV、MOVXMOVX、MOVC MOVC XCH XCH、XCHDXCHD、SWAP SWAP PUSH PUSH、POP POP v 源操作数寻址方式(源操作数寻址方式(5 5种)种):立即寻址、直接寻址、寄存器寻址、立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址。寄存器间接寻址、变址寻
15、址。v 目的操作数寻址方式(目的操作数寻址方式(3 3种)种):直接寻址、寄存器寻址、寄存器间接寻址直接寻址、寄存器寻址、寄存器间接寻址 除了目的操作数为除了目的操作数为ACCACC的指令影响奇偶标志的指令影响奇偶标志P P外,一般不影响外,一般不影响标志位。标志位。6/1/20236/1/202316163.3.1 3.3.1 十六位数的传递指令十六位数的传递指令(1条)MOV DPTRMOV DPTR,#data16data1680518051是一种是一种8 8位机,这是唯一的一条位机,这是唯一的一条1616位位立即数传递指立即数传递指令。功能:将一个令。功能:将一个1616位的立即数送入
16、位的立即数送入DPTRDPTR中去。其中中去。其中高高8 8位送入位送入DPHDPH,低,低8 8位送入位送入DPLDPL。例:例:MOV DPTRMOV DPTR,#1234H#1234H执行完了之后执行完了之后DPHDPH中的值为中的值为12H12H,DPLDPL中的值为中的值为34H34H。如果我们分别向如果我们分别向DPHDPH,DPLDPL送数,则结果也一样。送数,则结果也一样。如下面两条指令:如下面两条指令:MOV DPH MOV DPH,#35H#35H MOV DPL MOV DPL,#12H#12H。则就相当于执行了则就相当于执行了 MOV DPTR MOV DPTR,#35
17、12H#3512H。6/1/20236/1/202317173.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送去,而所有要读入的外部RAM中的数据也必需通过A读入。在此我们可以看出内外部RAM的区别了,内部RAM间可以直接进行数据的传递,而外部则不行。比如,要将外部RAM中某一单元(设为0100H单元的数据)送入另一个单元(设为0200
18、H单元),也必须先将0100H单元中的内容读入A,然后再送到0200H单元中去。6/1/20236/1/20231818 2.2.要读或写外部的要读或写外部的RAMRAM,当然也必须要知道,当然也必须要知道RAMRAM的地址,的地址,在后两条指令中,地址是被直接放在在后两条指令中,地址是被直接放在DPTRDPTR中的。而前两条中的。而前两条指令,由于指令,由于RiRi(即(即R0R0或或R1R1)只是)只是8 8位的寄存器,所以只提位的寄存器,所以只提供低供低8 8位地址。高位地址。高8 8位地址由位地址由P2P2口口来提供。来提供。3.3.使用时应先将要读或写的地址送入使用时应先将要读或写的
19、地址送入DPTRDPTR或或RiRi中,然后中,然后再用读写命令。再用读写命令。例例:将外部:将外部RAMRAM中中100H100H单元中的内容送入外部单元中的内容送入外部RAMRAM中中200H200H单元中。单元中。MOV DPTRMOV DPTR,#0100H#0100HMOVX AMOVX A,DPTRDPTRMOV DPTRMOV DPTR,#0200H#0200HMOVX DPTRMOVX DPTR,A A6/1/20236/1/202319193.3.3 读程序存储器指令读程序存储器指令(2条)条)MOVC A,A+DPTR MOVC A,A+PC 本组指令是将ROM中的数送入A
20、中。本组指令也被称为查表指令,常用此指令来查一个已做好在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单元中找到单元中找到的是的是4。6/1/20236/1/202320203.3.4 堆栈操作堆栈操作(2 2条)条)PUSH directPUSH dir
21、ect ;SPSP+1,(SP)(direct)POP directPOP direct ;(direct)(SP),SPSP-1第一条为压入指令,就是将direct中的内容送入堆栈中,第二条为弹出指令,就是将堆栈中的内容送回到direct中。例例:MOV SP MOV 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,然后将A中的值送到60H单元中,因此执行完本条指令后,内存60H单元的值就是100,同样
22、,执行PUSH B时,是将SP+1,即变为61H,然后将B中的值送入到61H单元中,即执行完本条指令后,61H单元中的值变为20。6/1/20236/1/202321211 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=23HXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
23、XXXXXXDPHDPHDPLDPL45H45H34H34H23H23H12H12HR7R7R1R1R0R0XXXXXXXXXXXXXXXX30303434XXXXXXXX2323XXXXXXXXXXXXXXXX30303434343412122323676712123434343430303434343412122323676712123434343430306767343412121212;R7=34H;R1=12H;A=30H;(34H)=34H;(45H)=34H;DPTR=6712H;(12H)=6767H;R0=1212H;A=6767H内部RAM6/1/20236/1/20232
24、2223.4 3.4 算术运算类指令算术运算类指令(2424条条)Arithmetic OperationsArithmetic Operations 主要对主要对8 8位无符号数;也可用于带符号数运算。位无符号数;也可用于带符号数运算。包括:加、减、乘、除、加包括:加、减、乘、除、加1 1、减、减1 1运算指令运算指令 影响影响PSWPSW有关位。有关位。6/1/20236/1/202323233.4.1 加法指令ADD AADD A,#datadata ;AdataAADD AADD A,direct direct;A(direct)AADD AADD A,RnRn ;ARnAADD AA
25、DD A,Ri Ri;A(Ri)A用途:用途:将将A A中的值与源操作数所指内容相加,最终结果中的值与源操作数所指内容相加,最终结果 存在存在A A中。中。1.不带进位位的加法指令(4 4条)条)6/1/20236/1/202324242.带进位位的加法指令(4 4条)条)ADDC AADDC A,RnRn;A ARnRnCYCYAAADDC AADDC A,directdirect;A A(direct)(direct)CYACYAADDC AADDC A,RiRi;A A(Ri)(Ri)CYACYAADDC AADDC A,#datadata;A AdatadataCYACYA用途:用途:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 单片机 中断 汇编 课件
限制150内