第三章 80C51指令系统_第1页
第三章 80C51指令系统_第2页
第三章 80C51指令系统_第3页
第三章 80C51指令系统_第4页
第三章 80C51指令系统_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

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

文档简介

1、二进制形式16进制形式汇编形式01110100 0000101000100100 0000010010000000 11111110740AH2404H80FEH MOV A,#0AH ADD A,#04H SJMP $51系列单片机指令集含有111条指令按指令所占字节数分类:单字节(49条);双字节(46条);3字节(16条)按指令执行时间分类:单周期(64条);双周期(45条);4周期(2条)按指令的功能分类:数据传送类(29条);算术运算类(24条);逻辑运算及移位类(24);控制转移类(17条);位操作类(17条)n 方括符方括符 表示可选项表示可选项n 标号标号代表指令所在地址,代表

2、指令所在地址,1-81-8个字母个字母/ /数字,数字,“:”:”结尾结尾n 操作码操作码就是指令功能助记符,指令实体就是指令功能助记符,指令实体n 目的操作数目的操作数n 源操作数源操作数n 注释注释,以,以 “ “ ; ” ; ” 开头开头LOOP: MOV A, R0 ;将将R0R0的内容送的内容送A A 标号标号: : 操作码操作码 目的操作数目的操作数, ,源操作数源操作数; ;注释注释 Rn R0R7中的一个 #data 8位立即数 #data16 16位立即数 direct 8位直接地址 Ri R0或R1,可以间接寻址 DPTR 可按DPTR中地址对外部存储器寻址 bit 8位位

3、地址 addr11 11位目标地址 addr16 16位目标地址 rel 8位地址偏移量 $ 当前指令的地址寻址方式:用何种方式寻找参与运算的操作数或操作数的真实地址。MCS-51单片机有七种寻址方式: 立即寻址 直接寻址 寄存器寻址 寄存器间接寻址 变址寻址(基址寄存器+变址寄存器间接寻址) 相对寻址位寻址 指令直接给出一个操作数,它紧跟在操作码后,通常称它为立即数(8位或16位)。 指令直接给出操作数所在存储单元的地址,它紧跟在操作码后。此方式是访问专用寄存器的唯一方式(80H FFH)也可访问内部RAM的低128(8052的256)字节 指令选定的寄存器内容就是实际操作数,寄存器可为:R

4、0R7,由RS1、RS2两位的值选定工作寄存器区A、B、CY(位),DPTR 指令所选中的寄存器内容是实际操作数地址(而不是操作数)寻址范围内部RAM(00H7FH/FFH)使用寄存器R0,R1,SP外部数据存储器(0000HFFFFH) 操作数所指定的寄存器中存放的不是操作数本身,而是操作数 此种寻址方式以DPTR或PC作基址寄存器,A作变址寄存器(存放8位无符号数),两者相加形成16位程序存储器地址作操作数地址。 此指令用于查表此指令用于查表 E0A程序存储区2040H 9320E0H 472041H DPH 20DPL 00ALU如:MOVC A,A+DPTR设DPTR=2000H,A=

5、E0H20E0H47指令代码此种寻址方式以程序计数器PC的内容为基地址,加上指令中给出的偏移量rel,所得结果为转移目标地址,用于转移指令。偏移量rel是一8位有符号补码数,范围128+127。所以转移范围应在当前PC指针的128+127之间某一程序存储器地址中。 程序存储区ALU如:JC 23H1025H1000H 401025H 451001H 23 1024H 471002H 3023H1002H指令代码当前PC以访问触发器的方式对内部RAM、特殊功能寄存器SFR中的位地址空间进行访问称之为位寻址。可被寻址的位:片内RAM的20H2FH单元,位地址00H 7FH;SFR中12个能被8整除

6、的字节地址,位地址80H以上。方式方式利用的变量利用的变量使用的空间使用的空间寄存器寄存器R0R0R7R7,A A,B B,CYCY,DPTRDPTR片片 内内直接寻址直接寻址directdirect片内片内RAMRAM低低128128字节字节特殊功能寄存器特殊功能寄存器SFRSFR寄存器间址寄存器间址R0R0,R1R1,SPSPR0R0,R1R1,DPTRDPTR片内片内RAMRAM片外片外RAMRAM与与I/OI/O口口立即数立即数#data#data程序存储器程序存储器基址加变址基址加变址A+PC A+DPTRA+PC A+DPTR程序存储器程序存储器相对寻址相对寻址PC+relPC+r

7、el程序存储器程序存储器位寻址位寻址bitbit片内片内RAMRAM的的20H20H2FH2FH部分部分SFRSFR总结总结 数据传送类指令: (29条) 算术运算类指令: (24条) 逻辑运算及移位类指令: (24条) 控制转移类指令: (17条) 位操作(布尔操作)类指令:(17条) 内部存储器间传送: (MOV 16条) 外部数据存储器与累加器间传送: (MOVX 4条) 程序存储器向累加器传送: (MOVC 2条) 数据交换: (XCH,XCHD,SWAP 5条) 堆栈操作: (PUSH,POP 2条)特点:特点:源操作数在内部,目的操作数也在源操作数在内部,目的操作数也在 内部。内部

8、。分分四类四类介绍如下介绍如下以以累加器累加器A A为目的字节为目的字节的传送指令(的传送指令(4 4条)条)以以RnRn为目的字节为目的字节的传送指令(的传送指令(3 3条)条)以以直接地址为目的字节直接地址为目的字节的传送指令(的传送指令(5 5条)条)以以间接地址为目的字节间接地址为目的字节的传送指令(的传送指令(4 4条)条)(1)立即数送累加器 MOV A,#data;A #data(2)寄存器内容送累加器 MOV A,Rn ;A (Rn) (n=07)(3)内部RAM或SFR内容送累加器 MOV A,direct ; A (direct)(4)内部RAM内容送累加器 MOV A,R

9、i ;A (Ri) (i=0,1) (5)立即数送寄存器 MOV Rn,#data; (Rn) #data (n=07) (6)累加器内容送寄存器 MOV Rn,A ;Rn (A) (n=07)(7)内部RAM或SFR内容送寄存器 MOV Rn,direct ;Rn (direct) (n=07)(8)立即数送内部RAM或SFR MOV direct,#data ; direct #data(9)累加器内容送内部RAM或SFR MOV direct ,A ; direct (A)(10)寄存器内容送内部RAM或SFR MOV direct ,Rn ; direct (Rn) (n=07)(11

10、)内部RAM或SFR之间直接传送 MOV direct1,direct2 ; direct1 (direct2)(12)内部RAM内容送内部RAM或SFR MOV direct,Ri; direct (Ri) (i=0,1) (13)立即数送内部RAM MOV Ri ,#data; (Ri) #data (i=0,1) (14)累加器内容送内部RAM MOV Ri ,A; (Ri) (A) (i=0,1) (15)内部RAM或SFR内容送内部RAM MOV Ri ,direct; (Ri) (direct) (i=0,1) (16)16位立即数传送指令 MOV DPTR ,#data16 ;

11、DPTR #data16; DPH #dataH ; DPL #dataL格式:MOVX A,DPTR;A (DPTR) MOVX DPTR,A ; (DPTR) (A) MOVX A,Ri ; A (Ri) (i=0,1) MOVX Ri , A ; A (Ri) (i=0,1)特点:单字节指令第1、2条指令可以在外部RAM 64K范围寻址;第3、4条指令可以对外部RAM的第0页寻址;寻址范围是0000H00FFH。说明: 1.在51中,与外部存储器RAM打交道的只可以是A累加器。所有需要送入外部RAM的数据必需要通过A送去,而所有要读入的外部RAM中的数据也必需通过A读入。 在此我们可以看

12、出内外部RAM的区别了,内部RAM间可以直接进行数据的传递,而外部则不行。 比如,要将外部RAM中某一单元(设为0100H单元的数据)送入另一个单元(设为0200H单元),也必须先将0100H单元中的内容读入A,然后再送到0200H单元中去。 2. 2.要读或写外部的要读或写外部的RAMRAM,当然也必须要知道,当然也必须要知道RAMRAM的地址,的地址,在后两条指令中,地址是被直接放在在后两条指令中,地址是被直接放在DPTRDPTR中的。而前两条中的。而前两条指令,由于指令,由于RiRi(即(即R0R0或或R1R1)只是)只是8 8位的寄存器,所以只提位的寄存器,所以只提供低供低8 8位地址

13、。高位地址。高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 A格式:MOVC A,A+DPTR ; A (A)+

14、(DPTR) MOVC A,A+PC ; PC (PC)+1 ; A (A)+(PC)特点:这两条指令为单字节查表指令DPTR、PC中存放被查表的始址功能:根据A中项数,查得表中对应值送入累加器A中。 给出每条指令执行后的结果给出每条指令执行后的结果 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=23HXXXXXXXXXXXXXXXXXX

15、XXXXXXXXXXXXXXXXXXDPHDPHDPLDPL45H45H34H34H23H23H12H12HR7R7R1R1R0R0XXXXXXXXXXXXXXXX30303434XXXXXXXX2323XXXXXXXXXXXXXXXX30303434343412122323676712123434343430303434343412122323676712123434343430306767343412121212;R7=34H;R1=12H;A=30H;(34H)=34H;(45H)=34H;DPTR=6712H;(12H)=6767H;R0=1212H;A=6767H内部RAMMOV P

16、1, #0FEH ; 11111110B可以使可以使P1.0上的发光二极管点亮上的发光二极管点亮MOV P1, #0F0H ; 11110000B可以使可以使P1口上的上面口上的上面4个发光二个发光二极管点亮,极管点亮,8051的输入的输入/输出口输出口都是漏极开路输出,其中都是漏极开路输出,其中P1、P2和和P3口内部有口内部有30K欧的上拉电欧的上拉电阻,属于电压输出型。但是从阻,属于电压输出型。但是从外部流入外部流入1020mA的电流是可的电流是可以的。以的。P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 5vP1.0 aP1.1 bP1.2 cP1.3

17、dP1.4 eP1.5 fP1.6 gP1.7 dp5vMOV P1, #00H ; 显示显示 8.MOV P1, #0F8H ; 显示显示 7MOV P1, #88H ; 显示显示 A单片机的一个引脚输出的高低电平,可以通过单片机的一个引脚输出的高低电平,可以通过“光电光电耦合器耦合器”控制继电器,从而以控制继电器,从而以“弱电弱电”控制控制“强电强电”。格式:XCH A,Rn ; (A)(Rn) (n=07) XCH A,direct ; (A) (direct) XCH A,Ri; (A) (Ri) (i=0,1) XCHD A,Ri ; (A30) (Ri)30) (i=0,1) SW

18、AP A ; (A30) (A74) 特点:XCH是Exchange的缩写前三条指令执行后会影响PSW中的P标志。XCHD是Exchange Decimal的缩写, 使用该指令前应预先给Ri中置地址。格式:PUSH direct ; SP (SP)+1 ;(SP) (direct) POP direct ; direct (SP) ;SP (SP)1特点:Rn和A不能直接用在本指令中,A必须用ACC(或E0H),Rn也要用它的物理地址。不带进位加:(ADD 4条)带进位加:(ADDC 4条)增量指令:(INC 5条)十进制调整指令: (DA 1条)减法指令: (SUBB 4条)减量指令: (D

19、EC 4条)乘法指令: (MUL 1条)除法指令: (DIV 1条)格式:ADD A,#data ; A (A)+#data ADD A,Rn; A (A)+(Rn) (n=07) ADD A,Ri ; A (A)+(Ri) (i=0,1) ADD A,direct ; A (A)+(direct) 特点:两个操作数均为8位,其中之一是累加器A;加法操作在ALU中完成,结果送回累加器,运算时产生的标志位在PSW中;不论两操作数是否为带符号数,机器均按带符号数运算。例:请分析如下指令执行后累加器A和PSW中内容是什么?MOV A,#5AHADD A,#6BH求解: A=0 1 0 1 1 0 1

20、 0B + data=0 1 1 0 1 0 1 1BCy 1 1 0 0 0 1 0 1BPSW:CyACF0RS1RS0OV-P01000100格式:ADDC A,#data ; A (A)+#data+Cy ADDC A,Rn; A (A)+(Rn)+Cy (n=07) ADDC A,Ri ; A (A)+(Ri)+Cy (i=0,1) ADDC A,direct ; A (A)+(direct)+Cy特点:注释中的Cy中内容为指令执行前Cy内容,指令执行后形成新的Cy保留在PSW中,其余和不带Cy的加法指令相同;本类指令用于多字节加法程序中。格式:INC A; A (A)+1INC R

21、n; Rn (Rn)+1 (n=07) INC direct ; direct (direct)+1INC Ri ; (Rn) (Rn)+1 (n=0,1) INC DPTR; DPTR (DPTR)+1 特点:INC是Increase的缩写;本指令仅对PSW中P标志有影响。格式:DA A 操作:若累加器低4位大于9或BCD码加时有半进位AC=1,则A (A)+06H 若累加器高4位大于9或BCD码加时有全进位CY=1,则A (A)+60H。特点:DA是Decimal Adjust的缩写;紧跟加法指令后,对加法结果调整;用于BCD加、BCD减运算。ALU只能进行二进制加法(即低4位向高4位逢1

22、6进1),为实现BCD加法,就必须对ALU的加法结果进行BCD调整,使其变成BCD数(BCD加法是逢10进1的)。例:写出85+59=144BCD加法程序,并对加法过程和BCD调整进行分析。求解:ORG1000HMOV A,#85H; A #85HADDA,#59H; A (A)+#59HDAA; A #44H,Cy=1SJMP $END上例加法操作及BCD调整过程: DA A指令只能用在加法指令后,对二进制加法结果进行调整。BCD减法可以采用以下方法:1、求减数的补码;2、进行被减数+减数补数运算;3、对所得两数之和进行BCD调整。例:写出91-34=57的BCD减法程序。求解: ORG10

23、00HCLRC; C 0MOVA,#9AH ; A #9AHSUBBA,#34H; 求-34补ADDA,#91H ;求91+-34补DAA; BCD调整SJMP$END上例减法操作及BCD调整过程:格式:SUBB A,#data ; A (A)#dataCy SUBB A,Rn ; A (A)(Rn)Cy (n=07) SUBB A,direct ; A (A) (direct) Cy SUBB A, Ri ; A (A)(Ri)Cy (n=0,1) 特点:SUBB是Subtraction Borrow的缩写;本指令用于单字节、多字节减法程序;机器按带符号数运算,并产生PSW中标志;形成OV标

24、志的规则为:正数-正数不会溢出,故OV=0;负数-负数不会溢出,故OV=0; 正数-负数若差为负,则OV=1; 负数-正数若差为正,则OV=1。格式:DEC A; A (A)1 DEC Rn ; Rn (Rn)1 (n=07) DEC direct ; direct (direct) 1 DEC Ri ; (Ri) (Ri)1 (n=0,1) 特点:DEC是Decrease的缩写;DEC A指对PSW中P标志有影响。功能:使源地址所对应的RAM单元中内容减1。格式:MUL AB; B A (A)(B) ; Cy0 DIV A B ; A (A)/(B)的商;; B (A)/(B)的余数;; C

25、y 0,OV 0特点:MUL是Multiply的缩写, DIV是Divide的缩写;单字节指令,执行时间为48T(4机器周期);操作数均为8位无符号数。逻辑与指令:(ANL 6条)逻辑或指令:(ORL 6条)逻辑异或指令: (XRL 6条)累加器清除与求反指令: (CLR、CPL 2条)移位指令: ( RL、RLC、RR、RRC 4条)格式:ANL A,#data ; A (A)#data ANL A,Rn ; A (A)(Rn) (n=07) ANL A,direct ; A (A)(direct) ANL A, Ri ; A(A)(Ri) (n=0,1) ANL direct,A; dir

26、ect (direct)(A) ANL direct,#data; direct (direct)#data 特点:ANL是AND Logical的缩写;前四条指令执行后会对PSW中P标志产生影响。用途:可从某字节中取出某几位。格式:ORL A,#data ; A (A) #data ORL A,Rn ; A (A) (Rn) (n=07) ORL A,direct ; A (A) (direct) ORL A, Ri ; A(A) (Ri) (n=0,1) ORL direct,A; direct (direct) (A) ORL direct,#data; direct (direct)

27、#data 特点:ORL是OR Logical的缩写;前四条指令执行后会对PSW中P标志产生影响。用途:给某字节中某几位置1。格式:XRL A,#data ; A (A) #data XRL A,Rn ; A (A) (Rn) (n=07) XRL A,direct ; A (A) (direct) XRL A, Ri ; A (A) (Ri) (n=0,1) XRL direct,A; direct (direct) (A) XRL direct,#data; direct (direct) #data 特点:XRL是XOR Logical的缩写;前四条指令执行后会对PSW中P标志产生影响。

28、用途:令某字节中某几位置取反,其余位不变。+格式:CLR A ; A 0 CPL A ; A 特点:CLR是Clearing的缩写CPL是Complement of ones的缩写;CLR A指令执行后,Cy=0。用途:CLR用于是累加器清零;CPL可用于求某数的补码。)(A 循环移位指令(4 4条)条)RL ARR ARLC ARRC AA.7 A.0A.7 A.0A.7 A.0CYCYA.7 A.0RL是是Rotate Left的缩写,的缩写,RR是是Rotate Right的缩写;的缩写;后两条指令,影响后两条指令,影响P P标志和标志和CYCY。 Rotate Logic instru

29、ction例:若若A=5CHA=5CH,CY=1CY=1,执行,执行RLC ARLC A后,后,v 对对RLCRLC、RRCRRC指令,在指令,在CY=0CY=0时时 RLCRLC相当于相当于乘乘以以2 2 RRCRRC相当于相当于除除以以2 2结果:结果:A=B9HA=B9H,CY=0CY=0,P=1P=10101 11000101 11001 11011 10011011 10010 0用途:用途:对某数扩大或缩小对某数扩大或缩小1 1倍。倍。无条件转移指令:(LJMP、AJMP、SJMP、JMP 4条)条件转移指令:(JZ、JNZ、CJNE、DJNZ 8条)子程序调用及返回指令: (LC

30、ALL、ACALL、RET、RETI 4条)空操作指令: (NOP 1条)格式:LJMP addr16 ; PC addr16 AJMP addr11 ; PC(PC)+2; PC100 指令中的A100 SJMP rel ; PC (PC)+2; PC (PC)+rel JMP A+DPTR ; PC (A)+(DPTR)特点:这类指令执行时不会影响PSW中各标志位;指令的操作对象是PC中地址;第2、3条指令是相对转移指令,汇编时能产生浮动代码,在子程序中很有用。本指令是2KB范围内的绝对转移指令:AJMP addr11 ; PC(PC)+2(形成页面地址PC15-11); PC100 ad

31、dr11 (形成页面地址)说明:本指令是双字节指令。指令码为:a10 a9 a8 0 0 0 0 1 a7 a6 a0 操作码其中a10a0为低11位目标地址。编程时addr11常用符号地址,汇编时翻译成机器码。0000H1 区0 区31 区AJMPPC15 PC14 PC13 PC12 PC11 PC10 PC9 PC8 PC7 PC00800H0FFFH1000H17FFHF800HFFFFHA10 A9 A8 00001 A7 A0在 2 区形成11 位目标地址保持高 5 位地址确定某区 图 3-11 指令 AJMP 执行过程0 0 0 1 0请计算如下程序中的地址偏移量rel。ORG1

32、000H1000H 7401HSTART: MOVA, #01H1002H F8HMOVR0, A1017H 80H relSJMPSTARTEND累加器A判零转移指令: (JZ、JNZ 2条)比较条件转移指令:(CJNE 4条)减1条件转移指令:(DJNZ 2条)格式:JZ rel;若(A)0,则PC (PC)+2 ;若(A)=0,则PC (PC)+2+rel JNZ rel;若(A)=0,则PC (PC)+2 ;若(A)0,则PC (PC)+2+rel特点:双字节指令,第一字节是操作码,第二字节rel是一个带符号数;rel在编程时采用符号地址,汇编时翻译成内存地址。格式:CJNE A,#d

33、ata,rel CJNE Rn,#data,rel (n=07) CJNE Ri,#data,rel (i=0,1) CJNE A,direct,rel 特点:三字节指令,第3字节是rel,转移范围为-125+130;若A、B为带符号数,则Cy的形成原则是:若A=B,则Cy=0;若AB,则Cy=01。格式:DJNZ Rn,rel ; Rn (Rn)-1 (n=07) ;若(Rn)=0,则PC (PC)+2 ;若(Rn)0,则PC (PC)+2+rel DJNZ direct,rel ; direct (direct)-1 ;若(direct)=0,则PC (PC)+3 ;若(direct)0,则PC (PC)+3+rel 特点:在DJNZ中,D是Decrease,J是Jump,N是No

温馨提示

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

评论

0/150

提交评论