微型计算机原理与接口技术-2009级单片机第三部分指令系统_第1页
微型计算机原理与接口技术-2009级单片机第三部分指令系统_第2页
微型计算机原理与接口技术-2009级单片机第三部分指令系统_第3页
微型计算机原理与接口技术-2009级单片机第三部分指令系统_第4页
微型计算机原理与接口技术-2009级单片机第三部分指令系统_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三部分80C51的指令系统,MCS-51的指令系统共有111条指令,按其功能可分为五大类:,3.1 指令系统简介,数据传送类指令(28条)算术运算类指令(24条)逻辑运算类指令(25条)控制转移类指令(17条)布尔操作(位)类指令(17条),指令的表示方法称为指令格式,其内容包括指令的长度和指令内部信息的安排等。一条指令通常由操作码和操作数两部分组成。,指令格式,指令的长度有单字节、双字节和三字节等。,NOPINC R0MOV R0,R7,寄存器工作组(由RS1、RS0选择),位寻址区(16*8=128位),普通RAM共80个字节,3.2 寻址方式,Rn 工作寄存器,可以是R0-R7中的任意一个。#data 8位立即数,在00HFFH范围内。如 #12H。direct 片内RAM单元的直接地址。,Ri R0或R1。#data16 表示16位立即数。如:1234H。DPTR 表示以DPTR为数据指针进行间接寻址。用于对片外地址寻址。bit 位地址。如 SETB bit。,addr16 表示16位地址。addr11 表示11位地址。rel 补码形式的表示8位地址偏移量。$ 表示当前指令的地址。A 累加器B B寄存器C 进位位 间址寄存器的前缀标志,2、直接寻址,1、立即寻址,4、寄存器间接寻址,3、寄存器寻址,5、相对寻址,7、位寻址,6、变址寻址,七种寻址方式 :,2、直接寻址 直接寻址是指在指令中直接给出操作数单元的地址。 MOV A ,3AH,1、立即寻址 例如: MOV A, #3AH MOV DPTR ,#data16,直接寻址是访问特殊功能寄存器的唯一方法。,立即数前面加“#”,片内RAM地址,例如:INC R0,3、寄存器寻址,寄存器寻址的寻址范围包括:(1)四个寄存器组共32 个通用寄存器 (2) 部分特殊功能寄存器,寄存器间接寻址是指在指令中要到寄存器的内容所指的地址去取操作数。即寄存器中放的是操作数的地址。在寄存器的名称前面加前缀“”。,4、寄存器间接寻址,例如: ANL A,R1,寄存器间接寻址的范围:,(1)片内RAM低128单元:这里只能使用R0或R1为 间址寄存器,其通用形式写为Ri(i0,1)。 MOV A,R0,(3)片外RAM低256单元:也可使用R0或R1作间址寄存器。例如: MOVX A,R0,(2)片外RAM 64KB:使用DPTR作为间址寄存器,其形式为DPTR,例如: MOVX A,DPTR,5、相对寻址 相对寻址是指在指令中给出的操作数为程序转移的偏移量。相对寻址是为实现程序的相对转移而设立的,为相对转移指令所采用。,目的地址转移指令所在地址十转移指令字节数十rel,rel是一个带符号的8位二进制补码数,范围是: -128 +127。偏移量为正时,往地址增大的方向,为负时,向地址减小的方向。,例如: JC 03H ;假设当前PC值为1000H,转移地址为:1000H + 2H +(03H)=1005H,转移指令字节数JC 03H的机器码为40H、03H,偏移量,例如: JC 80H ;假设PC值为1000H,转移地址为:1000H + 2 +(-128)=0F82H,转移指令字节数,80H的真值,变址寻址是指以DPTR或PC作基址寄存器,累加器A作变址寄存器,以两者内容相加形成的16位程序存储器地址作为操作数地址。又称基址寄存器+变址寄存器间接寻址。,例如: MOVC A , A+DPTR,6、变址寻址(基址寄存器+变址寄存器间接寻址),假设 :(A)E0H,(DPTR)2000H 操作数地址为E0H十2000H20E0H,若20E0H单元的内容为47H,则该指令执行的结果是A的内容为47H。,7、位寻址 位寻址 的范围:(1)片内RAM中的位寻址区(2)可位寻址的特殊功能寄存器位,寻址位在指令中有四种表示方法:(1)直接使用位地址表示方法。 SETB 8DH(2)单元地址加位的表示方法。 SETB 88H.5 ;88H单元的位5,(3)特殊功能寄存器符号加位的表示方法。 SETB PSW.5 PSW寄存器的位5,则表示为PSW.5。(4)位名称表示方法,特殊功能寄存器中的一些寻址位是有名称的。 SETB F0 PSW寄存器位5为F0标志位。,3.3 数据传送指令,数据传送指令共有28条。按照功能又可分为:一般传送指令、目的地址传送指令、累加器传送指令和栈操作传送指令。,一般传送指令格式 MOV , MOVX , MOVC ,它的功能是把源字节的内容送到目的字节,而源字节的内容不变。,1、 以累加器A为目的操作数的指令组,共有4条: MOV A,Rn ; (A) (Rn) MOV A,direct ; (A) (direct) MOV A,Ri ; (A) (Ri) MOV A,#data ; (A) #data,一、内部RAM数据传送指令,2、 以寄存器Rn为目的操作数的指令组,共有3条: MOV Rn,A ;(Rn) (A) MOV Rn,ditect ; (Rn) (direct) MOV Rn,#data ; (Rn) #data 例: MOV R3, #30H,3、以直接地址direct为目的操作数的指令组,共有5条指令: MOV direct,A ;(direct) (A) MOV direct,Rn ;(direct) (Rn) MOV direct,direct ;(direct2) (direct1) MOV direct,Ri ;(direct) (Ri) MOV direct, #data ; (direct) #data 例: MOV 30H, 32H,4、以间接寻址寄存器Ri为目的操作数的指令组,共 有3条指令: MOV Ri,A ;(Ri) (A) MOV Ri,direct ; (Ri) (direct) MOV Ri,#data ;(Ri) #data 例: MOV R0, 35H MOV R0, #12H,Ri只能是R0、R1。,MOV A,5EH ;片内RAM的5EH单元内容送A,这里5EH为直接地址。 MOV A,#5EH ;立即数5EH送A。 MOV 5EH,#5EH ;这是一条3字节指令,表示把立即数5EH送到片内RAM中的5EH地址单元中去。 MOV 5EH,4EH ;这是一条3字节指令,表示把4EH单元的内容送到5EH单元中去。这是片内数据存储单元中的直接地址单元数据之间的直接传送。,5、16位数据传送指令,MOV DPTR,#data16 ;(DPTR) #data16 这是80C51中惟一的一条16位指令。,MOV DPTR,#1234H 执行结果为(DPH)12H,(DPL)34H。,二、外部数据传送指令,MOVX A,Ri ; MOVX A,DPTR MOVX Ri,A ; MOVX DPTR,A,也可实现累加器A与I/O口之间传送一个字节数据的指令。,MOV DPTR,#0E000H MOVX A,DPTR 0E000H可以为外部数据存储器地址或I/O接口地址。若为接口地址,其功能为从此接口输入数据。,MOV DPTR,#2040H MOVX A,DPTR MOV DPTR,#2030H MOVX DPTR ,A,三、查表指令 A与ROM传送指令MOVC组或称查表指令,共有2条指令: MOVC A,A十PC MOVC A,A十DPTR,程序存储器内容1010H:02H1011H:04H1012H:06H1012H:08H,1000H:MOV A,#0DH1002H:MOVC A,A+PC1003H:MOV R0,A,A=02H; R0=02H; PC=1004H,PC值为下一条指令的地址,1010H,四、堆栈操作指令 这组指令共有2条指令: PUSH direct ;SP+1SP,( direct)(SP) POP direct ;( SP )( direct ) SP-1SP,出栈,压栈,压栈时,地址加1,出栈时,地址减1,已知RAM 50H单元中存放数值0AAH,设堆栈指针为30H,把此数据压入堆栈,然后弹出到40H单元中。,MOV SP,#30H ;30H SPPUSH 50H ;SP+1 SP,(50H) (31H)POP 40H ;(31H) (40H),SP-1 SP,(1)字节交换指令XCH组,共有3条指令: XCH A,Rn XCH A,direct XCH A,Ri,(2)半字节交换指令: XCHD A,R0 ;两个操作数的低4位交换 SWAP A ;A的高4位与低4位互换,五、交换指令,3.4 算术运算指令,算术运算类指令都是通过ALU进行的。它包括加、减、乘、除四则运算指令共有24条。,算术运算结果将使进位标志(CY)、半进位标志(AC)、溢出标志(OV)置位或复位。,一、 加法指令这组指令的助记符为ADD,共有4条指令:ADD A,Rn ;(A)+(Rn) (A)ADD A,direct ;(A)+(direct) (A)ADD A,Ri ;(A)+(Rn) (A)ADD A,#data ; (A)+#data (A),这类指令将影响标志位AC、CY、OV、P,P=0;1的个数为偶数OV=1;AC=0 ;CY=1 ;有进位,P=1;1的个数为奇数OV=0;AC=1 ;CY=1 ;有进位,二、带进位位加法指令 ADDC A,Rn ;(A) (A)+(Rn)+(CY),ADDC A,direct ;(A) (A)+(direct)+(CY) ADDC A,Ri ;(A) (A)+(Rn)+(CY) ADDC A,#data ; (A) (A)+#data+(CY),这类指令将影响标志位AC、CY、OV、P,三、带借位减法指令这类指令的助记符为SUBB,共有4条指令:SUBB A,Rn ;(A)一(Rn)一(CY) (A)SUBB A,direct ;(A)一(direct)一(CY) (A)SUBB A,Ri ;(A)一(Rn)一(CY) (A)SUBB A,#data ;(A)一#data一(CY) (A),在80C51中没有不带借位的减法。需要时,可以在“SUBB”指令前,用“CLR C”指令将CY清零。,四、乘法指令 乘法指令的助记符为MUL,只有1条指令: MUL AB,例如:设(A)4EH,(B)5DH执行指令为MUL AB执行结果为乘积1C56H,(A)56H,(B)1CH。(OV)=1,(P)=0,乘法指令的功能是将A和B中两个无符号8位二进制相乘,乘积低8位存于A中,高8位存于B中。乘积小于255时,OV=0,否则OV=1。,五、除法指令 除法指令的助记符为DIV,只有1条指令: DIV AB除法指令的功能是将A中无符号二进制数除以B中的二进制数,商存于A,余数存于B中,并将CY和OV清0,若B=0,则OV置1。但CY总是清0的。,例如:设(A)11H,(B)04H执行指令为 DIV AB执行结果为(A)4,(B)1,(OV)=0, (P)=1,六、加1指令 这组指令的助记符为INC,共有5条指令: INC Rn ;(Rn) (Rn) + 1 INC direct ;(direct) (direct) + 1 INC Ri ;(Ri) (Ri) + 1 INC A ;(A) (A)+1 INC DPTR ;(DPTR) (DPTR) + 1,这类指令不影响各个标志位。,与ADD Rn,1 的区别?,七、减1指令 这类指令的助记符为DEC,共有4条指令: DEC Rn ;(Rn)一1 (Rn) DEC direct ;(direct)一1 direct DEC Ri ;(Ri)一1 (Ri) DEC A ; (A)一1 (A),这类指令不影响各个标志位。,八、十进制调整指令 该指令的助记符为DA,只有1条指令: DA A,该指令的功能是对BCD码的加法结果进行调整。若两个压缩型BCD码按二进制数相加之后,必须经此指令的调整才能得到压缩型BCD码的和数。,若(A0-3)9或(AC)1,则执行(A0-3)+6 (A0-3);若(A4-7)9或(CY)1,则执行(A4-7)+6 (A4-7);,ADDC A, R3 ; 设A=56BCD,R3=67BCD,CY=1DA A,3.5 逻辑运算类指令,一、逻辑与ANL,ANL A, direct; ANL A, Ri;,ANL A, #data; ANL direct,A;,ANL direct, #data;,ANL A , Rn;,二、逻辑或ORL,ORL A, direct; ORL A, Ri;,ORL A, #data; ORL direct,A;,ORL direct, #data;,ORL A , Rn;,三、逻辑异或XRL,XRL A, direct; XRL A, Ri;,XRL A, #data; XRL direct,A;,XRL direct, #data;,XRL A , Rn;,(1)循环左移 RL A;不带进位Cy位左移位。,(2)循环右移 RR A;不带进位Cy位右移位。,四、循环移位指令,(3)RLC A;带进位Cy位左移位。(4)RRC A;带进位Cy位右移位。,五、 累加器清零指令:CLR A六、 累加器取反指令:CPL A,00100101取反得 11011010,3.6 控制转移类指令,一、无条件转移指令 LJMP addr16; 该指令是长跳转,addr16表示跳转到的地址,一般为标号字符。,AJMP addr11; PC100 addr11 绝对跳转指令,跳转范围为2k。PC高4位不变。Addr11为目标地址,一般为标号字符。,SJMP rel; 短跳转指令,rel一般为标号字符。范围为: 128127。,二、条件转移指令CJNE A, #data, rel ; 当A中的值和立即数data不相等则跳转。CJNE A, direct, rel;,CJNE Rn, #data, rel; CJNE Rn, direct, rel;,上述指令转移范围为: -128 +127B。,JZ rel; A=0则跳转,否则不跳转。JNZ rel; A0则跳转,否则不跳转。,DJNZ Rn, rel; Rn=Rn-1,如果Rn0则跳转,否则不跳转。DJNZ direct, rel;,* 循环转移指令,* 空操作指令,NOP ;,JMP A+DPTR ; PC A+DPTR 通用跳转指令,跳转的目的地址是A和DPTR值的和。,三、间接转移指令,四、调用和返回指令该类指令用于子程序的调用和返回。,ACALL addr11; 2k范围内的子程序调用。,LCALL addr16;长调用指令,可以在64k范围内调用。,RET;子程序的返回指令。,RETI;中断子程序的返回指令。返回到主程序中调用该子程序的断口处。,3.7 位操作类指令,位寻址 的范围:(1)片内RAM中的位寻址区(2)可位寻址的特殊功能寄存器位,寻址位在指令中有四种表示方法:(1) SETB 8DH ; 位地址(2) SETB 88H

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论