单片机原理及应用 第三章 80C51指令系统课件.ppt
《单片机原理及应用 第三章 80C51指令系统课件.ppt》由会员分享,可在线阅读,更多相关《单片机原理及应用 第三章 80C51指令系统课件.ppt(125页珍藏版)》请在三一办公上搜索。
1、1,单片机原理及应用,第三章 80C51指令系统,本章重点寻址方式指令格式操作结果及对标志位影响,3.1 概述,分类,数据传送类指令 29,数学运算类指令 24,逻辑运算类指令 24,控制转移类指令 17,位操作指令 17,111条指令,按指令长度分类,单字节指令,双字节指令,三字节指令,指令执行时间,12个振荡周期 64,24个振荡周期 45,48个振荡周期 2,指令格式,标号:操作码 (目的操作数),(源操作数);注释,指令的符号地址,由字母打头的字母数字串组成,长度一般不超过6个符号,指令操作的性质,用规定的汇编语言助记符表示,指令操作的对象,3.2 寻址方式和寻址空间,概念:说明操作数
2、所在的位置(地址),把操作数提取出来的方法,基本寻址方式:,1、寄存器寻址2、直接寻址3、寄存器间接寻址4、立即寻址5、相对寻址 6、变址寻址7、位寻址,一、寄存器寻址,操作数 通用寄存器的内容表示符号 寄存器名称,寻址范围,工作寄存器Rn(R0R7)寄存器ACC(累加器A)寄存器B,DPTR,位寄存器Cy,8,(SFR),RAM64KB,FFFFH,0000H,片内数据存储器,片外数据存储器,ACC,DPTR,B,二、直接寻址,操作数 指令中直接地址的内容,寻址范围:,1、内部数据RAM的低128个字节单元2、特殊功能寄存器3、位地址空间,通用符号:direct,10,80C52,片内数据R
3、AM,位寻址区,R7R0 3组,R7R0 2组,R7R0 1组,R7R0 0组,20H18H10H08H00H,寄存器,30H,7FH,80H,FFH,特殊功能寄存器,(SFR),RAM64KB,FFFFH,0000H,片内数据存储器,片外数据存储器,三、寄存器间接寻址方式,指令指定的寄存器内容为操作数地址,间址寄存器 ,R0,R1,DPTR,SP,寻址范围,1、内部RAM的低128字节(00H7FH) R0, R1 (Ri ,i=0,1),2、外部RAM的64KB(0000HFFFFH) DPTR, R0, R1,符号 寄存器名,3、堆栈区 SP为间址寄存器,12,(SFR),RAM64KB
4、,FFFFH,0000H,片内数据存储器,片外数据存储器,四、立即寻址方式,指令直接给出操作数,操作数为8位或16位二进制数,称立即数,寻址范围,程序存储器中的立即数,通用符号:#data (8位),#data16(16位),五、相对寻址方式,以PC当前值为基址,加上指令中给出的偏移量(rel)形成有效的程序转移地址。,控制转移类指令,转移范围:以PC当前值为起始地址,相对偏移在+127 -128个字节单元之间。,偏移量rel 八位二进制补码,1005H:JC 80H,执行过程:,读指令,完成后 (PC)=(PC)+2,如 C=1,则 (PC)=(PC)+rel 转移至 1007H-80H=0
5、F87H 单元,如C=0 则执行1007H单元中的指令,后向128个单元前向127个单元,六、变址间接寻址,基址寄存器内容加上间址寄存器内容(地址偏移量)为有效地址,基址寄存器:PC,DPTR变址寄存器:A,寻址范围:程序存储器,例: MOVC A,A+DPTR 设 A=11H DPTR=02F1H,操作数地址为 02F1H+11H=0302H,操作:,(0302H),A,七、位寻址,MCS-51设有独立的位处理器,位地址一般用直接位地址方式给出,可归入直接寻址方式,寻址范围:,位寻址内部RAM 128位 可位寻址的SFR 82位,位地址的表示方式:,1、直接地址(位地址)2、位名称3、第几单
6、元第几位,寄存器名+位4、用伪指令指定的符号地址,通用符号 bit,例:,PSW中F0(用户标志)可表示如下:,D5HF0PSW.5AF(AF EQU F0),19,3.3 指令系统,3.3.1 数据传送类指令,按操作方式,分为三种:,数据传送,数据交换,栈操作,一、普通传送类指令,格式:,MOV (目的操作数),(源操作数),操作码助记符,操作:,将源操作数单元内容,传送到目的操作数单元中,源操作数内容不变。不影响标志位Cy,AC和OV。,操作数的组合关系,1、立即数的传送,MOV A, #data,(A),#data,MOV Rn, #data,(Rn),#data,MOV Ri, #da
7、ta,(Ri),#data,MOV direct, #data,(direct),#data,MOV DPTR, #data16,(DPTR),#data,说明:,a、MOV A,#data,将8位立即数送入累加器A中,例:MOV A,#80H,操作结果: (A)= 80H,b、MOV Rn,#data n=07,将8位立即数送入工作寄存器Rn中,例:MOV R4,#80H,操作结果: (R4)= 80H,c、MOV Ri, #data,将8位立即数送入由Ri指定的地址单元中,i=0,1。,Ri中的地址为00H7FH(8051),00HFFH(8052),注:仅寻址内部RAM,不能寻址SFR,
8、例:MOV R0,#32H 设 (R0)=70H , (70H)=11H,执行结果:(70H)=32H,d:MOV direct,#data,将8位立即数送入由direct直接寻址的地址单元中。,direct:00HFFH,8位二进制地址码 寻址内部RAM(00H7FH)及SFR,例:MOV 70H,#70H,MOV P0,#70H MOV 80H,#70H,e:MOV DPTR,#data,唯一的16位数据传送指令,把16位立即数送入DPTR中,例:MOV DPTR,#2034H,执行结果:(DPH)=20H (DPL)=34H,2、内部数据存储器与累加器A传送数据,MOV A, direc
9、t,(A),(direct),MOV direct, A,(A),(direct),MOV A, Rn,(A),(Rn),MOV Rn, A,(A),(Rn),MOV A, Ri,(A),(Ri),MOV Ri, A,(Ri),(A),寻址方式的组合,例:MOV R1,#82H MOV A,R1,80C51指令错误因为82H是DPL的地址值,对于SFR,不能使用间接寻址方式,正确指令:MOV A,DPL 或 MOV A,82H,80C52 正确,寻址内部RAM,3、内部数据存储器中Rn、SFR和片内数据RAM之间的数据传送,MOV direct,direct,(direct目的),(direc
10、t源),MOV direct, Rn,(direct),(Rn),MOV Rn, direct,(direct),(Rn),MOV direct, Ri,(direct),(Ri),MOV Ri, direct,(Ri),(direct),例1:设PSW中标志位RS1,RS0为“11”,则选中第三组工作寄存器,MOV 40H,R0,MOV 40H,18H,结果相同,用立即寻址指令为片内RAM中20H,25H和P1口上置数,例2:,MOV 20H, #25HMOV 25H, #10HMOV P1, #0CAH,执行结果 (20H)=25H,(25H)=10H (P1)=CAH,将以上状态作为初值
11、,执行以下程序,结果如何,MOV R0, #20HMOV A, R0MOV R1, AMOV B, R1MOV R1, P1MOV P3, P1,(R0)=20H,(A)=(R0)=(20H)=25H,(R1)=(A)=25H,(B)=(R1)=(25H)=10H,(R1)=P1 (25H)=CAH,P3=P1=CAH,(A)=?(R1)=?(B)=?(25H)=?(P3)=?(P1)=?(20H)=?,25H25H10HCAHCAHCAH25H,二、外部数据存储器的数据传送指令,只能间接寻址,且只能与累加器A进行数据传送,格式:MOVX (目的操作数),(源操作数),例:,若片外数据存储单元
12、中,(3007H)=60H,MOV DPTR, #3007HMOVX A, DPTR,结果:,(A)=60H,使用Ri作间址寄存器,此时需用P2口输出高八位地址,应事先预置P2,Ri的值,以下程序功能与上例相同:MOV P2 , #30HMOV R0 , #07HMOVX A, R0,三、程序存储器向累加器A传送指令MOVC,MOVC A , A+PC,(PC),(PC)+1,(A),(A)+(PC),MOVC A, A+DPTR,(A),(A)+(DPTR)),功能:把A中内容与基址寄存器(PC,DPTR)内容相加,求得程序存储器某单元地址,再将该地址单元内容送累加器A,8位无符号整数,说明
13、:,1、以PC作为基址寄存器,因为PC值不能任意更改,所以查表范围为PC当前值开始后的256字节。,偏移量计算式:DIS=表首地址(该指令所在地址+1),2、以DPTR作为基址寄存器,因为DPTR的内容可以通过赋值改变,使表格可以设置在64KB程序存储器的任意地址空间。,例1:编制根据累加器A中的数(09)查其平方表的子程序。,COUNT:PUSH DPH; 保护DPTR内容 PUSH DPL; MOV DPTR,#TABLE ;赋表首地址给DPTR MOVC A, A+DPTR ; 根据A中内容查表 POP DPL; 恢复DPTR内容 POP DPH RET; 返回主程序,ORG 1000H
14、TABLE:DB 00 DB 01 DB 04 DB 09 DB 16 DB 25 DB 36 DB 49 DB 64 DB 81,DB:伪指令,作用是把其后的值存入由标号开始的连续单元中,例2:编子程序根据A中二进制数查其ASCII码,BITOASC:,ADD A,#02HMOVC A, A+PCSJMP BARETDB 30H, 31H, 32H, 33HDB 34H, 35H, 36H, 37HDB 38H, 39H, 41H, 42HDB 43H, 44H, 45H, 46HRET,TABLE:,BARET:,;加偏移量调整;查表;返回主程序,四、数据交换指令,1、字节交换指令,XCH
15、 A, RnXCH A, directXCH A, Ri,(A) (Rn) (A) (direct) (A) (Ri),例:设(R0)=20H,(A)=3FH,(20H)=75H,执行指令:XCH A,R0,执行结果:(A)=75H,(20H)=3FH,2、半字节交换指令,XCHD A, Ri (A30) (Ri)30)常用于BCD码处理,例:设(R1)=30H,(A)=67H,(30H)=84H,执行指令:XCHD A, R1,执行结果:(A)=64H (30H)=87H,3、累加器A高4位与低4位内容互换指令,SWAP A ;( A 47) (A 03),例:设(A)=0CAH,执行指令:
16、SWAP A执行结果:(A)=0ACH,5、堆栈操作类指令,要点:入栈操作,先执行SP+1,再入栈 出栈操作,先出栈,再执行SP-1,例:在中断响应时,(SP)=09H,数据指针DPTR的内容为0123H,执行以下指令:,PUSH DPLPUSH DPH,(SP)+1,使(SP)=0AH(DPL)压入0AH单元,(SP)+1,(SP)=0BH(DPH)压入0BH单元,执行结果:,(0AH)=23H(0BH)=01H(SP)=0BH,堆栈操作需遵循先入后出,后入先出原则,才能保持原单元内容不变,例:设(DPTR)=0123H,PUSH DPHPUSH DPL.POP DPLPOP DPH,执行结
17、果:(DPTR)=0123H,如执行:,PUSH DPHPUSH DPLPOP DPHPOP DPL,执行结果:(DPTR)=2301H,3.3.2 算术运算类指令,类型:加,减,乘,除,增量、减量以及二十进制调整指令,ADD、ADDC、SUBB指令的执行将影响标志位(PSW中的OV,Cy,AC及P),一、加法指令ADD,目的操作数 累加器A 源操作数 4种寻址方式,ADD A,Rn (A) (A)+(Rn) ADD A,direct (A) (A)+(direct)ADD A,Ri (A) (A)+(Ri)ADD A,#data (A) (A)+#data,运算均针对无符号二进制数进行,但结
18、合OV标志可实现有符号数运算。结果将影响OV,Cy,AC,P标志,A,源+A,当最高位有进位,Cy=1位3向位4有进位,AC=1OV取决于6、7两位的进位情况,同时有进位或无进位,则OV=0;只有一位有进位,OV=1A中有偶数个1,P=0;否则,P=1,例:设(A)=0C3H,(R0)=0AAH 执行指令:ADD A,R0 写出执行结果及对标志位影响,(A) 1 1 0 0 0 0 1 1 + (R0) 1 0 1 0 1 0 1 0,0 1 1 0 1 1 0 1,C=1,AC=0,OV=1,P=1,(A)=6DH,只对有符号数运算有意义。两负数相加,结果为正数,溢出,例:设(A)=0C3H
19、,(R0)=0AAH 执行指令:ADD A,R0 写出执行结果及对标志位影响,(A) 1 1 0 0 0 0 1 1 + (R0) 1 0 1 0 1 0 1 0,0 1 1 0 1 1 0 1,C=1,AC=0,OV=1,P=1,(A)=6DH,无符号数 195 + 170 = 365有符号数 -61 + (-86) = -147,109,溢出,二、带进位加法指令ADDC,ADDC A, Rn ; (A) (A)+(C)+(Rn)ADDC A,direct ; (A) (A)+(C)+(direct)ADDC A,Ri ; (A) (A)+(C)+(Ri)ADDC A, #data ; (A
20、) (A)+(C)+(#data),常用于多字节加法,例:设(A)=0C3H,(R0)=0AAH,C=1 执行指令:ADDC A,R0,(A) 1 1 0 0 0 0 1 1+ (C) 0 0 0 0 0 0 0 1,1 1 0 0 0 1 0 0,+(R0) 1 0 1 0 1 0 1 0,0 1 1 0 1 1 1 0,C=1,AC=0,OV=1,P=1,(A)=6EH,三、带借位减法指令SUBB,SUBB A,Rn ; (A) (A)-(C)-(Rn)SUBB A,direct ; (A) (A)-(C)-(direct)SUBB A,Ri ; (A) (A)-(C)-(Ri)SUBB
21、A,#data ; (A) (A)-(C)-#data,影响标志位:,最高位有借位,Cy=1位3向位4有借位,AC=1最高两位同时有借位或无借位,OV=0;只有一位有借位,OV=1,例:设(A)=0C9H,(30H)=54H,C=1 执行:SUBB A,30H,(A) 1 1 0 0 1 0 0 1- (C) 0 0 0 0 0 0 0 1,1 1 0 0 1 0 0 0,- (30H) 0 1 0 1 0 1 0 0,0 1 1 1 0 1 0 0,C=0,AC=0,OV=1,P=0,(A)=74H,只有在符号数相减时,OV才意味着溢出与否,如出现以下两种情况,OV置1:负-正=正 正-负=
22、负,四、增量指令INC,INC A ; (A) (A)+1INC Rn ; (Rn) (Rn)+1INC direct ; (direct) (direct)+1INC Ri ; (Ri) (Ri)+1INC DPTR; (DPTR) (DPTR)+1,操作:指定变量加1,结果仍存于原地址单元中。除P外,不影响任何标志位。,例:设(R0)=7EH,(7EH)=0FFH (7FH)=40H,执行下列指令:,INC R0 ;INC R0 ;INC R0 ;,(R0)=(R0)+1, (7EH)=00H,(R0)=(R0)+1, (7FH)=41H,(R0)=(R0)+1, (R0)=7FH,运行结
23、果:(R0)=7FH,(7EH)=00H(7FH)=41H,例:执行指令序列,MOV DPTR,#1FFEH;INC DPTR ;INC DPTR ;INC DPTR ;,(DPTR)=1FFEH,(DPTR)=1FFFH,(DPTR)=2000H,(DPTR)=2001H,五、减量指令DEC,DEC A ; (A) (A)-1DEC Rn ; (Rn) (Rn)-1DEC direct ; (direct) (direct)-1DEC Ri ; (Ri) (Ri)-1,操作:指定变量减1,结果送回原地址单元,不影响标志位(除P)。,设(40H)=00H 执行 DEC 40H,结果:(40H)
24、=FFH不影响标志位,六、乘法指令,MUL AB ;,(A)07(B)815,(A)*(B),影响标志位:如乘积255 (0FFH) (即B0) ,OV=1C总是被清0,即C=0AC不变,影响P,例:设(A)=80H(128),(B)=32H(50),执行指令:MUL AB,结果:乘积为1900H(6400),(A)=(B)=,00H,19H,OV=Cy=P=,1,0,0,七、除法指令,DIV AB ;,(A)(B),商余数,(A)/(B),对标志位影响:当B中除数为00H,除法运算结果为不定值,则A、B中内容均为不定值,OV置1C=0,例: (A)=87H(135),(B)=0CH(12)
25、DIV AB,(A)=(B)=,0BH(11),03H,OV=C=,00,八、二十进制调整指令,DA A ; 调整A中内容为BCD码,调整方法:根据C和AC的状态,并结合A的内容,IF (A03)9 OR (AC)=1, THEN (A03)=(A03)+06H;,IF (A47)9 OR (C)=1 ,THEN (A47)=(A47)+60H,因为指令要利用C和AC,所以必须跟在加法指令(ADD,ADDC)后面,根据A中的数值及PSW相应标志位的状态,可能的操作为A加06H,60H,66H,例: (A)=0101 0110B(56) (R3)=0110 0111B(67)以上均为BCD码 (
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机原理及应用 第三章 80C51指令系统课件 单片机 原理 应用 第三 80 C51 指令系统 课件
链接地址:https://www.31ppt.com/p-1917273.html