单片机原理及应用 第三章 80C51单片机的指系统.ppt

上传人:s****8 文档编号:82774146 上传时间:2023-03-26 格式:PPT 页数:118 大小:1,000.50KB
返回 下载 相关 举报
单片机原理及应用 第三章 80C51单片机的指系统.ppt_第1页
第1页 / 共118页
单片机原理及应用 第三章 80C51单片机的指系统.ppt_第2页
第2页 / 共118页
点击查看更多>>
资源描述

《单片机原理及应用 第三章 80C51单片机的指系统.ppt》由会员分享,可在线阅读,更多相关《单片机原理及应用 第三章 80C51单片机的指系统.ppt(118页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、单片机原理及应用单片机原理及应用北京化工大学信息科学与技术学院主讲教师:林伟国E-mail:E-mail:linwgmail.buct.edu,cnlinwgmail.buct.edu,cn第三章第三章 MCS-51指令系统指令系统本章重点本章重点寻址方式寻址方式指令格式指令格式操作结果及对标志位影响操作结果及对标志位影响第一节第一节 概述概述分类分类数据传送类指令数据传送类指令 29数学运算类指令数学运算类指令 24逻辑运算类指令逻辑运算类指令 24控制转移类指令控制转移类指令 17位操作指令位操作指令 17指令格式指令格式标号:操作码标号:操作码 (目的操作数),(源操作数)(目的操作数)

2、,(源操作数);注释;注释指令的符号地址指令的符号地址由字母打头的字母数字串组成,长度一由字母打头的字母数字串组成,长度一般不超过般不超过6个符号个符号指令操作的性质指令操作的性质用规定的汇编语言助记符表示指令操作的对象指令操作的对象按指令长度分类按指令长度分类单字节指令单字节指令双字节指令双字节指令三字节指令三字节指令指令执行时间指令执行时间12个振荡周期个振荡周期 64条条24个振荡周期个振荡周期 45条条48个振荡周期个振荡周期 2条条第二节第二节 MCS-51的寻址方式的寻址方式寻址方式就是确定操作数所在的位置(地址),寻址方式就是确定操作数所在的位置(地址),把操作数提取出来的方法。

3、把操作数提取出来的方法。基本寻址方式:基本寻址方式:1、寄存器寻址、寄存器寻址2、直接寻址、直接寻址3、寄存器间接寻址、寄存器间接寻址4、立即寻址、立即寻址5、基址寄存器加变址寄存器间接寻址、基址寄存器加变址寄存器间接寻址6、相对寻址、相对寻址7、位寻址、位寻址一、寄存器寻址一、寄存器寻址以通用寄存器的内容作为操作数,在指令的助以通用寄存器的内容作为操作数,在指令的助记符中直接以寄存器的名字表示操作数位置记符中直接以寄存器的名字表示操作数位置寻址范围:寻址范围:工作寄存器工作寄存器Rn(R0R7),),寄存器寄存器ACC(累加器累加器A),),B,DPTR,Cy例:例:MOV A,R0二、直接

4、寻址二、直接寻址指令中直接给出操作数地址指令中直接给出操作数地址寻址范围:寻址范围:1、内部数据、内部数据RAM的低的低128个字节单元个字节单元2、特殊功能寄存器、特殊功能寄存器3、位地址空间、位地址空间通用符号:通用符号:direct例:例:MOV A,3AHMOV A,P0MOV A,80H等价等价三、寄存器间接寻址方式三、寄存器间接寻址方式指令指定的寄存器内容为操作数地址指令指定的寄存器内容为操作数地址间址寄存器:间址寄存器:R0,R1,DPTR,SP寻址范围:寻址范围:1、内部、内部RAM的低的低128字节字节(00H7FH)R0,R1 (Ri,i=0,1)2、外部、外部RAM的的6

5、4KB(0000HFFFFH)DPTR,R0,R1例:例:MOV A,R0 设设:(R0)=30H (30H)=6FH操作结果:操作结果:(30H)AA=6FH如指令为如指令为 MOV A,R0 则则 A=30H四、立即寻址方式四、立即寻址方式指令直接给出操作数,操作数为指令直接给出操作数,操作数为8位或位或16位二进制数,称立即数位二进制数,称立即数寻址范围:寻址范围:程序存储器中的立即数程序存储器中的立即数通用符号:通用符号:#data (8位),位),#data16(16位)位)例:例:MOV A,#0FH MOV DPTR,#1000H五、变址间接寻址五、变址间接寻址基址寄存器内容加上

6、间址寄存器内容(地基址寄存器内容加上间址寄存器内容(地址偏移量)为有效地址址偏移量)为有效地址基址寄存器:基址寄存器:PC,DPTR变址寄存器:变址寄存器:A寻址范围:程序存储器寻址范围:程序存储器例:例:MOVC A,A+DPTR 设设 A=11H DPTR=02F1H操作数地址为操作数地址为 02F1H+11H=0302H操作:操作:(0302H)A六、相对寻址方式六、相对寻址方式以以PC当前值为基址,加上指令中给出的偏当前值为基址,加上指令中给出的偏移量(移量(del)形成有效的程序转移地址。形成有效的程序转移地址。仅用在控制转移类指令中仅用在控制转移类指令中转移范围:以转移范围:以PC

7、当前值为起始地址,相对当前值为起始地址,相对偏移在偏移在+127-128个字节单元之间。个字节单元之间。偏移量偏移量rel带符号数,为八位二进制补码带符号数,为八位二进制补码例:例:1005H:JC 80H执行过程:执行过程:读指令,完成后读指令,完成后 (PC)=(PC)+2如如 C=1,则则 (PC)=(PC)+rel 转移至转移至 1007H-80H=0F87H 单元单元如如C=0 则执行则执行1007H单元中的指令单元中的指令1005H 40H1006H 80H1007H 后向后向128个单元个单元前向前向127个单元个单元七、位寻址七、位寻址MCS-51设有独立的位处理器,位地址一般

8、用直设有独立的位处理器,位地址一般用直接位地址方式给出,可归入直接寻址方式接位地址方式给出,可归入直接寻址方式寻址范围:寻址范围:位寻址内部位寻址内部RAM 128位位可位寻址的可位寻址的SFR 82位位通用符号:通用符号:bit 指令中位地址的表示方式:指令中位地址的表示方式:1、直接地址(位地址)、直接地址(位地址)2、位名称、位名称3、第几单元第几位,寄存器名、第几单元第几位,寄存器名+位位4、用伪指令指定的符号地址、用伪指令指定的符号地址例:例:PSW中中F0(用户标志)可表示如下:用户标志)可表示如下:D5HF0PSW.5AF(AF EQU F0)第三节第三节 数据传送类指令数据传送

9、类指令按操作方式,分为三种:按操作方式,分为三种:数据传送数据传送数据交换数据交换栈操作栈操作一、普通传送类指令格式:MOV (目的操作数),(源操作数)操作码助记符操作码助记符操作:将源操作数单元内容,传送到目的操作数单元中,源操作数内容不变。不影响标志位Cy,AC和OV。操作数的组合关系操作数的组合关系1、立即数的传送、立即数的传送MOV A,#data(A)#dataMOV Rn,#data(Rn)#dataMOV Ri,#data(Ri)#dataMOV direct,#data(direct)#dataMOV DPTR,#data16(DPTR)#data说明:说明:a、MOV A,

10、#data将将8位立即数送入累加器位立即数送入累加器A中中例:例:MOV A,#80H 操作结果:操作结果:(A)=80Hb、MOV Rn,#data n=07将将8位立即数送入工作寄存器位立即数送入工作寄存器Rn中中例:例:MOV R4,#80H操作结果:操作结果:(R4)=80Hc、MOV Ri,#data将将8位立即数送入由位立即数送入由Ri指定的地址单元指定的地址单元中,中,i=0,1。Ri中的地址为中的地址为00H7FH(8051)00HFFH(8052)注:仅寻址内部注:仅寻址内部RAM,不能寻址不能寻址SFR例:例:MOV R0,#32H 设设 (R0)=70H,(70H)=11

11、H执行结果执行结果:(:(70H)=32Hd:MOV direct,#data将将8位立即数送入由位立即数送入由direct直接寻址的地直接寻址的地址单元中。址单元中。direct:00HFFH,8位二进制地址码位二进制地址码 寻址内部寻址内部RAM(00H7FH)及)及SFR例:例:MOV 70H,#70HMOV P0,#70HMOV 80H,#70He:MOV DPTR,#data唯一的唯一的16位数据传送指令,把位数据传送指令,把16位立即位立即数送入数送入DPTR中中例:例:MOV DPTR,#2034H执行结果:执行结果:(DPH)=20H (DPL)=34H2、内部数据存储器与累加

12、器、内部数据存储器与累加器A传送数据传送数据MOV A,direct(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指令错误。因为指令错误。因为82H是是DPL的地址值,的地址值,对于对于SFR,不能使用间接寻址方式不能使用间接寻址方式正确指令:正确指令:MOV A,DPL 或或 MOV A,82H3、内部数据存储器中、内部数据存储器中Rn、SFR和片内数据和片内数据RAM之间的数据传送之间的数据传送MOV

13、direct,direct(direct目的目的)(direct源)源)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,R0MOV 40H,18H等价等价用立即寻址指令为片内用立即寻址指令为片内RAM中中20H,25H和和P1口上置数口上置数例例2:MOV 20H,#25HMOV 25H,#10HMOV P1,#0CAH

14、执行结果执行结果(20H)=25H,(,(25H)=10H (P1)=CAH将以上状态作为初值,执行以下程序,将以上状态作为初值,执行以下程序,结果如何结果如何MOV R0,#20HMOV A,R0MOV R1,AMOV B,R1MOV R1,P1MOV P3,P1(R0)=20H(A)=(R0)=(20H)=25H(R1)=A(B)=(R1)=(25H)=10H(R1)=P1 (25H)=CAHP3=P1=CAH(A)=?(R1)=?(B)=?(25H)=?(P3)=?(P1)=?(20H)=?25H25H10HCAHCAHCAH25H二、外部数据存储器的数据传送指令二、外部数据存储器的数据

15、传送指令只能采用间接寻址方式,且只能与累加器只能采用间接寻址方式,且只能与累加器A进行进行数据传送数据传送格式:格式:MOVX (目的操作数),(源操作数)目的操作数),(源操作数)MOVX A,DPTR(A)(DPTR)MOVX DPTR,A(DPTR)(A)MOVX A,Ri(A)(Ri)MOVX Ri,A(Ri)(A)例:例:若片外数据存储单元中,(若片外数据存储单元中,(3007H)=60H执行:执行:MOV DPTR,#3007HMOVX A,DPTR结果:结果:(A)=60H使用使用Ri作间址寄存器,此时需用作间址寄存器,此时需用P2口输出高口输出高八位地址,应事先预置八位地址,应

16、事先预置P2,Ri的值的值以下程序功能与上例相同:以下程序功能与上例相同:MOV P2,#30HMOV R0,#07HMOVX A,R0三、程序存储器向累加器三、程序存储器向累加器A传送指令传送指令MOVCMOVC A,A+PC(PC)(PC)+1(A)(A)+(PC)MOVC A,A+DPTR(A)(A)+(DPTR))功能:把功能:把A中内容与基址寄存器(中内容与基址寄存器(PC,DPTR)内容相加,求得程序存储器某单元地址,再将该内容相加,求得程序存储器某单元地址,再将该地址单元内容送累加器地址单元内容送累加器A8位无符号整位无符号整数数说明:说明:1、以、以PC作为基址寄存器,因为作为

17、基址寄存器,因为PC值不能任意更值不能任意更改,所以查表范围为改,所以查表范围为PC当前值开始后的当前值开始后的256字节。字节。偏移量计算式:偏移量计算式:DIS=表首地址(该指令所在地址表首地址(该指令所在地址+1)2、以、以DPTR作为基址寄存器,因为作为基址寄存器,因为DPTR的内的内容可以通过赋值改变,使表格可以设置在容可以通过赋值改变,使表格可以设置在64KB程序存储器的任意地址空间。程序存储器的任意地址空间。3、以上两条指令中,表格长度均受到变址寄、以上两条指令中,表格长度均受到变址寄存器存器A的限制,不超过的限制,不超过256字节。字节。例例1:编制根据累加器:编制根据累加器A

18、中的数(中的数(09)查其平方)查其平方表的子程序。表的子程序。COUNT:PUSH DPH;保护保护DPTR内容内容 PUSH DPL;MOV DPTR,#TABLE ;赋表首地址给赋表首地址给DPTR MOVC A,A+DPTR ;根据根据A中内容查表中内容查表 POP DPL;恢复恢复DPTR内容内容 POP DPH RET;返回主程序返回主程序 ORG 1000HTABLE:DB 00 DB 01 DB 04 DB 09 DB 16 DB 25 DB 36 DB 49 DB 64 DB 81DB:伪指令,作用伪指令,作用是把其后的值存入是把其后的值存入由标号开始的连续由标号开始的连续单

19、元中单元中例例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,46HRETTABLE:BARET:四、数据交换指令四、数据交换指令1、字节交换指令、字节交换指令XCH A,RnXCH A,directXCH A,Ri (A)(Rn)(A)(direct)(A)(Ri)例:设(例:设(R0)=20H,(,(A)=3FH,(,(20H)=75H执行指令:执行指

20、令:XCH A,R0执行结果执行结果:(:(A)=75H,(,(20H)=3FH2、半字节交换指令、半字节交换指令XCHD A,Ri (A30)(Ri)30)例:设(例:设(R1)=30H,(,(A)=67H,(,(30H)=84H执行指令:执行指令:XCHD A,R1执行结果执行结果:(:(A)=64H (30H)=87H3、累加器、累加器A高高4位与低位与低4位内容互换指令位内容互换指令SWAP A ;(;(A 03)(A 03)例:设(例:设(A)=0CAH执行指令:执行指令:SWAP A执行结果执行结果:(A)=0ACH5、堆栈操作类指令、堆栈操作类指令PUSH direct(SP)(

21、SP)+1(SP)(direct)POP direct(direct)(SP)(SP)(SP)-1要点:入栈操作,先执行要点:入栈操作,先执行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堆栈操

22、作需遵循先入后出,后入先出原则,堆栈操作需遵循先入后出,后入先出原则,才能保持原单元内容不变才能保持原单元内容不变例:设(例:设(DPTR)=0123HPUSH DPHPUSH DPL.POP DPLPOP DPH执行结果:执行结果:(DPTR)=0123H如执行:如执行:PUSH DPHPUSH DPLPOP DPHPOP DPL执行结果:执行结果:(DPTR)=2301H第四节第四节 算术运算类指令算术运算类指令类型:加,减,乘,除,增量、减量以及二类型:加,减,乘,除,增量、减量以及二十进制调整指令十进制调整指令ADD、ADDC、SUBB指令的执行将影响标指令的执行将影响标志位(志位(P

23、SW中的中的OV,Cy,AC及及P)一、加法指令一、加法指令ADD目的操作数为目的操作数为A内容,源操作数可以采用内容,源操作数可以采用4种寻址方式,结果存放于种寻址方式,结果存放于A中中ADD A,Rn (A)(A)+(Rn)ADD A,direct (A)(A)+(direct)ADD A,Ri (A)(A)+(Ri)ADD A,#data (A)(A)+#data运算均针对无符号二进制数进行,但结合运算均针对无符号二进制数进行,但结合OV标志可实现有符号数运算。结果将影标志可实现有符号数运算。结果将影响响OV,Cy,AC,P标志标志当最高位有进位,当最高位有进位,Cy=1位位3向位向位4

24、有进位,有进位,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 1C=1AC=0OV=1P=1(A)=6DH只对有符号数运算有只对有符号数运算有意义。两负数相加,意义。两负数相加,结果为

25、正数,溢出结果为正数,溢出二、带进位加法指令二、带进位加法指令ADDCADDC A,Rn ;(A)(A)+(C)+(Rn)ADDC A,direct;(A)(A)+(C)+(direct)ADDC A,Ri;(A)(A)+(C)+(Ri)ADDC A,#data;(A)(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

26、1 1 1 0C=1AC=0OV=1P=1(A)=6EH三、带借位减法指令三、带借位减法指令SUBBSUBB A,Rn ;(A)(A)-(C)-(Rn)SUBB A,direct;(A)(A)-(C)-(direct)SUBB A,Ri ;(A)(A)-(C)-(Ri)SUBB A,#data;(A)(A)-(C)-#data影响标志位:影响标志位:最高位有借位,最高位有借位,Cy=1位位3向位向位4有借位,有借位,AC=1最高两位同时有借位或无借位,最高两位同时有借位或无借位,OV=0;只有一位有借位,只有一位有借位,OV=1例:设(例:设(A)=0C9H,(,(30H)=54H,C=1 执

27、行:执行: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 0C=0AC=0OV=1P=0(A)=74H只有在符号数相减时,只有在符号数相减时,OV才意味着溢出与否,才意味着溢出与否,如出现以下两种情况,如出现以下两种情况,OV置置1:负:负-正正=正正 正正-负负=负负四、增量指令四、增量指令INCINC A ;(A)(A)+1INC Rn ;(Rn)(Rn)+1INC direct;(direct)(direct)+1INC Ri ;(Ri)

28、(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运行结果:运行结果:(R0)=7FH,(,(7EH)=00H(7FH)=41H例:执行指令序列例:执行指令序列MOV DPTR,#

29、1FFEH;INC DPTR;INC DPTR;INC DPTR;(DPTR)=1FFEH(DPTR)=1FFFH(DPTR)=2000H(DPTR)=2001H五、减量指令五、减量指令DECDEC A ;(A)(A)-1DEC Rn ;(Rn)(Rn)-1DEC direct;(direct)(direct)-1DEC Ri ;(Ri)(Ri)-1操作:指定变量减操作:指定变量减1,结果送回原地址单元,结果送回原地址单元,不影响标志位(除不影响标志位(除P)。)。设(设(40H)=00H 执行执行 DEC 40H结果结果:(40H)=FFH不影响标志位不影响标志位六、乘法指令六、乘法指令MU

30、L 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)=00H19HOV=Cy=P=100七、除法指令七、除法指令DIV AB ;(A)(B)商商余数余数(A)/(B)对标志位影响:对标志位影响:当当B中除数为中除数为00H,除法运算结果为不定值,则除法运算结果为不定值,则A、B中内容均为不定值,中

31、内容均为不定值,OV置置1C=0例:例:(A)=87H(135),(),(B)=0CH(12)DIV AB(A)=(B)=0BH(11)03HOV=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中的

32、数值及中的数值及PSW相应标志位的状态,可能相应标志位的状态,可能的操作为的操作为A加加06H,60H,66H例:例:(A)=0101 0110B(56)(R3)=0110 0111B(67)以上均为以上均为ASCII码码 (C)=0执行指令:执行指令:ADDC A,R3 DA A (A)0 1 0 1 0 1 1 0+(R3)0 1 1 0 0 1 1 1 1 0 1 1 1 1 0 1A309,AC=0A749,C=0+66H调整调整+0 1 1 0 0 1 1 0 0 0 1 0 0 0 1 1结果:结果:(A)=23H (C)=1对于无符号对于无符号BCD码运算,码运算,56+67=1

33、23使用此指令条件:使用此指令条件:1、两个操作数均为压缩、两个操作数均为压缩BCD码码2、不适合减法和增、不适合减法和增1运算运算例:对于十进制减法运算,可采用补码相加的方法例:对于十进制减法运算,可采用补码相加的方法 即用即用9AH减去减数得到以十为模的补码减去减数得到以十为模的补码设被减数存设被减数存30H单元,减数存单元,减数存40H单元,结果单元,结果存存50H单元。程序如下:单元。程序如下:CLR C ;MOV A,#9AH;SUBB A,40H;ADD A,30H;DA A;MOV 50H,A清进位位清进位位求减数的十补码求减数的十补码补码相加补码相加调整至调整至BCD码码第五节

34、第五节 逻辑运算类指令逻辑运算类指令按操作数分为两类:按操作数分为两类:单操作数指令单操作数指令双操作数指令双操作数指令针对累加器针对累加器A进行进行A与第二操作数之间进行与第二操作数之间进行操作:清零、求反、移位,与、或、异或操作:清零、求反、移位,与、或、异或一、单操作数逻辑运算类指令一、单操作数逻辑运算类指令1、累加器、累加器A清零指令清零指令 CLR A;(A)02、累加器求反指令、累加器求反指令 CPL A;(A)(A)例:设(例:设(A)=0AAH(10101010B)执行:执行:CPL A结果:结果:(A)=01010101B(55H)3、累加器、累加器A循环左移指令循环左移指令

35、 RL A;4、累加器、累加器A连同进位位连同进位位C循环左移指令循环左移指令RLC A;例:例:(A)=0C5H(1100 0101B)RL A(A)=1000 1011B=8BH例:例:(A)=45H(0100 0101 B),(),(C)=1RLC A ;(A)=1000 1011B=8BH(C)=05、累加器、累加器A循环右移指令循环右移指令RR A ;6、累加器、累加器A连同进位位连同进位位C循环右移指令循环右移指令RRC A ;例:例:(A)=0C5H(1100 0101B),(),(C)=1执行指令:执行指令:RRC A结果:结果:(A)=1110 0010B=0E2H(C)=1

36、二、双操作数逻辑运算类指令二、双操作数逻辑运算类指令1、逻辑、逻辑“与与”指令指令 ANL A,Rn ANL A,directANL A,RiANL A,#data 以以A为第一操作数,为第一操作数,逻辑逻辑“与与”运算的结运算的结果存入果存入AANL direct,AANL direct,#data目的操作数为目的操作数为direct,源操作数为源操作数为A和立即数和立即数与指令常用于屏蔽某些不用位。与指令常用于屏蔽某些不用位。方法是将该位与方法是将该位与“0”相相“与与”,保留位与,保留位与“1”相相“与与”如如 ANL A,#1111 0000B;屏蔽低屏蔽低4位,高位,高4位不变位不变

37、2、逻辑、逻辑“或或”指令指令ORL A,RnORL A,directORL A,RiORL A,#dataORL direct,AORL direct,#dataORL指令常用于使字节中某些位置指令常用于使字节中某些位置1方法:欲置方法:欲置1的位与的位与“1”相或,欲保留不变的位相或,欲保留不变的位与与“0”相或相或如如 ORL A,#0FH;高高4位不变,低位不变,低4位置位置13、逻辑、逻辑“异或异或”指令指令XRL A,RnXRL A,directXRL A,RiXRL A,#dataXRL direct,AXRL direct,#dataXRL 指令可用于对某些位取反指令可用于对某

38、些位取反方法:欲取反的位用方法:欲取反的位用“1”去异或,保留位用去异或,保留位用“0”去去异或异或如如 XRL A,#0FH;高高4位不变,低位不变,低4位取反位取反例:例:设(设(A)=0C3H(1100 0011B)(R0)=0AAH(1010 1010B)分别执行以下指令:分别执行以下指令:ANL A,R0;ORL A,R0;XRL A,R0;(A)=1000 0010B=82H(A)=1110 1011B=0EBH(A)=0110 1001B=69H第六节第六节 控制转移类指令控制转移类指令3类:类:无条件转移无条件转移条件转移条件转移子程序调用及返回子程序调用及返回一、无条件转移指

39、令一、无条件转移指令1、绝对无条件转移、绝对无条件转移AJMP addr11;(PC)(PC)+2(PC 010)addr 010(PC 1115)不变不变addr11:11位地址,是转移目的地址的低位地址,是转移目的地址的低11位。位。在汇编语言程序中,可写成在汇编语言程序中,可写成4位位16进制地址,进制地址,也可写成代表也可写成代表16位地址的标号(符号地址)形式。位地址的标号(符号地址)形式。转移范围:转移范围:2K字节字节例例1:0345H:AJMP addr11 addr11取值可为取值可为000 0000 0000B111 1111 1111B执行时执行时 (PC)=(PC)+2

40、=0347H15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 00347H:0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 1 B转移目标地址范转移目标地址范围:围:PC 1115不变不变0 0 0 0 0 0 0 0 0 0 0 B 1 1 1 1 1 1 1 1 1 1 1 B有效转移地址范围:有效转移地址范围:0000H07FFH例例2:07FFH:AJMP adr11(PC)+2=07FFH+2=0801H0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1B0 0 0 0 0 0 0 0 0 0 1B1 1 1 1 1 1 1 1 1 1

41、1B0801H0801H0FFFH转移转移范围范围转移范围:包括当前指令的下一条指令在内的转移范围:包括当前指令的下一条指令在内的同一同一2K字节内字节内 addr11:在在0801H0FFFH范围内范围内例例3:0345H:AJMP 0123H 2567H:AJMP 29ABH是否正确是否正确正确正确错误错误2567H:0 0 1 0 0 1 0 1 0 1 1 0 0 1 1 1 B1 1 1 1 1 1 1 1 1 1 1 B27FFH转移地址最大为转移地址最大为27FFH,29ABH大于大于27FFH,超出有效转移地址范围超出有效转移地址范围2、长转移指令、长转移指令LIMP addr

42、16;(PC)addr16转移范围:转移范围:64KB 3、相对转移指令、相对转移指令SJMP rel ;(PC)(PC)+2(PC)(PC)+relrel:8位二进制补码,可写成符号地址的形式位二进制补码,可写成符号地址的形式转移范围:转移范围:PC当前值为基准,当前值为基准,-128+127例:例:0345H:SJMP relPC 当前值:当前值:0347H向后向后128字节字节 02C7H向前向前127字节字节 03C6Hrel=80Hrel=7FH当当rel取值为取值为FEH(-2),),则目的地址与源地址相则目的地址与源地址相同同如如 设设rel=FEH,执行指令执行指令 HERE:

43、SJMP HERE程序在此指令处无限循环程序在此指令处无限循环4、间接转移指令、间接转移指令JMP A+DPTR ;(PC)(A)+(DPTR)多分支转移指令,多分支转移指令,DPTR内容为多分支转移程内容为多分支转移程序的首地址,由累加器序的首地址,由累加器A的内容来选择其中的的内容来选择其中的某一个分支转移指令某一个分支转移指令例:例:MOV DPTR,#JMP_TBLJMP A+DPTR.AJMP LABEL0AJMP LABEL1AJMP LABEL2AJMP LABEL3JMP_TBL:AJMP 为两字节指令,所以为两字节指令,所以A中内容为偶数中内容为偶数JMPTBL为分支转移表的

44、起始地址,分支表的为分支转移表的起始地址,分支表的长度应不超过长度应不超过256字节字节二、条件转移指令二、条件转移指令均为相对寻址方式,指令提供偏移量均为相对寻址方式,指令提供偏移量rel,转转移范围为移范围为PC当前值的当前值的-128+1271、判零转移指令、判零转移指令JZ rel ;(PC)(PC)+2如(如(A)=0,则(则(PC)=(PC)+rel否则,程序顺序执行否则,程序顺序执行JNZ rel ;(PC)(PC)+2如(如(A)=0,则(则(PC)=(PC)+rel否则,程序顺序执行否则,程序顺序执行例:将外部数据存储器的一个数据块传送到内部数例:将外部数据存储器的一个数据块

45、传送到内部数据据RAM,两者的首地址分别为两者的首地址分别为DATA1和和DATA2,遇到传送的数据为遇到传送的数据为0时停止传送。时停止传送。分析:数据块传送,长度较短,均采用间接寻分析:数据块传送,长度较短,均采用间接寻址方式,其中址方式,其中R0寻址外部数据存储器,寻址外部数据存储器,R1寻寻址内部址内部RAM。传送时,要以累加器传送时,要以累加器A作为过渡,利用判零转作为过渡,利用判零转移可以判别是否继续传送还是终止移可以判别是否继续传送还是终止程序如下:程序如下:MOV R0,#DATA1 ;MOV R1,#DATA2 ;MOVX A,R0 ;JZ STOP;MOV R1,A;INC

46、 R0 ;INC R1 ;SJMP LOOP ;LOOP:HERE:外部数据块首址外部数据块首址内部数据块首址内部数据块首址外部数据传入外部数据传入A为零则终止为零则终止不为零则传送至内部不为零则传送至内部RAM单元单元修改地址指针修改地址指针继续循环继续循环STOP:2、比较转移指令、比较转移指令格式:格式:CJNE (目的操作数),(源操作数),目的操作数),(源操作数),rel根据目的和源操作数的寻址方式不同,共有根据目的和源操作数的寻址方式不同,共有4条条CJNE A,#data,relCJNE A,direct,relCJNE Rn,#data,relCJNE Ri,#data,re

47、l均为三字节指令均为三字节指令例:设(例:设(R7)=56H,执行指令执行指令CJNE R7,#60H,K1K1:例例2、设、设P1口口P10P13为准备就绪信号输入端,为准备就绪信号输入端,当该当该4位输入全位输入全“1”说明各项工作准备好,单说明各项工作准备好,单片机可顺序执行主程序,否则循环等待。片机可顺序执行主程序,否则循环等待。程序片段如下:程序片段如下:L0:MOV A,P1 ;ANL A,#0FH;CJNE A,#0FH,L0;MAN1:读读P1口内容口内容高高4位无意义,屏蔽位无意义,屏蔽低低4位不全为位不全为1,返回,返回L0,否则继续执行否则继续执行3、循环转移指令(减、循

48、环转移指令(减1条件转移指令)条件转移指令)DJNZ Rn,rel ;(PC)(PC)+2(Rn)(Rn)-1If(Rn)=0,(,(PC)(PC)+relElse,程序向下执行程序向下执行DJNZ direct,rel;(PC)(PC)+3(direct)(direct)-1If(direct)=0,(PC)(PC)+relElse,程序向下执行程序向下执行若循环变量为若循环变量为00H,则循环次数为则循环次数为256次次例例1:(40H)=01H,(,(50H)=70H (60H)=15H,以下程序片段的执行结果以下程序片段的执行结果DJNZ 40H,LABEL1;DJNZ 50H,LAB

49、EL2;DJNZ 60H,LABEL3;结束循环向下执行结束循环向下执行转向转向LABEL2执行,继续循环执行,继续循环需等上条指令执行完,才执行需等上条指令执行完,才执行本指令本指令各单元内容变为:各单元内容变为:(40H)=00H,(,(50H)=6FH,(,(60H)=15H例例2:MOV R2,#8 ;CPL P17 ;DJNZ R2,TOGGLF;TOGGLF:循环次数送循环次数送R2P17取反,取反,1个机周个机周R2控制循环,控制循环,2个机周期个机周期执行结果:执行结果:三、子程序调用及返回指令三、子程序调用及返回指令1、长调用指令、长调用指令LCALL addr16 ;(PC

50、)=(PC)+3(SP)=(SP)+1(SP)=(PC 07)(SP)=(SP)+1(SP)=(PC 815)(PC)=addr 01564KB范围内子程序调用范围内子程序调用例:设(例:设(SP)=53H,子程序首址在子程序首址在3000H单元,单元,并以标号并以标号STR表示。即表示。即 2000H:LCALL STR执行时:执行时:(PC)=(PC)+3=2003H(SP)+1,(54H)=03H(SP)+1,(,(55H)=20H执行结果:执行结果:(SP)=(54H)=(55H)=(PC)=55H03H20H3000HSTR (PC)2、绝对调用指令、绝对调用指令ACALL addr

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁