指令系统李朝青单片机原理及接口技术北京航空航天大学出社第.pptx

上传人:莉*** 文档编号:87270368 上传时间:2023-04-16 格式:PPTX 页数:123 大小:528.32KB
返回 下载 相关 举报
指令系统李朝青单片机原理及接口技术北京航空航天大学出社第.pptx_第1页
第1页 / 共123页
指令系统李朝青单片机原理及接口技术北京航空航天大学出社第.pptx_第2页
第2页 / 共123页
点击查看更多>>
资源描述

《指令系统李朝青单片机原理及接口技术北京航空航天大学出社第.pptx》由会员分享,可在线阅读,更多相关《指令系统李朝青单片机原理及接口技术北京航空航天大学出社第.pptx(123页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、3.1 3.1 汇编语言汇编语言指令和程序设计语言指令和程序设计语言指令格式指令格式BACK第1页/共123页指令和程序设计语言指令和程序设计语言指令:是CPU根据人的意图来执行某种操作的命令。程序设计语言:是实现人机交换信息的基本工具,分为机器语言、汇编语言和高级语言。机器语言:用二进制编码表示每条指令,是计算机能直接识别和执行的语言。汇编语言:是用助记符、符号和数字等来表示指令的程序设计语言。它与机器语言指令是一一对应的。BACK第2页/共123页指令格式指令格式89C51汇编语言指令格式操作码 目的操作数,源操作数;注释汇编语言指令对应的二进制代码格式单字节指令双字节指令三字节指令BAC

2、K第3页/共123页单字节指令1、指令码中隐含着对某一种寄存器的操作如:指令“INC DPTR”的指令代码格式为:A3H=1 0 1 0 0 0 1 12、由指令中的rrr三位的不同编码指定某一寄存器如:指令“MOV A,Rn”的指令代码格式为:1 1 1 0 1 r r r BACK第4页/共123页双字节指令用一个字节表示操作码,另一个字节表示操作数或操作数所在的地址。格式为:操作码立即数或地址BACK第5页/共123页三字节指令一个字节操作码,两个字节操作数。格式为:操作码立即数或地址立即数或地址BACK第6页/共123页3.2 3.2 寻址方式寻址方式什么是寻址方式:如何找到存放操作数

3、的地址,把操作数提取出来的方法。1、7种寻址方式:2、寻址空间及符号注释:BACK第7页/共123页1、7种寻址方式:1)寄存器寻址2)直接寻址3)立即数寻址4)寄存器间接寻址 5)变址寻址6)相对寻址 7)位寻址BACK第8页/共123页1)寄存器寻址寄存器寻址:由指令指出寄存器组R0R7中的某一个或其他寄存器(A,B,DPTR等)的内容作为操作数。例如:MOV A,R0;(R0)A MOV P1,A;(A)P1口 ADD A,R0;(A)+(R0)ABACK第9页/共123页2)直接寻址直接寻址方式:在指令中直接给出操作数所在存储单元的地址。指令中操作数部分是操作数所在地址。直接寻址方式可

4、访问片内RAM的 128个单元以及所有的SFR。对于SFR,既可以使用它们的地址,也可以使用它们的名字。例如:MOV A,3AH;(3AH)A MOV A,P1;(P1口)A 或:MOV A,90H;90H是P1口的地址BACK第10页/共123页3)立即数寻址立即数寻址:指令操作码后面紧跟的是一字节或两字节操作数,用“#”号表示,以区别直接地址。例如:MOV A,3AH;(3AH)AMOV A,#3AH;3AHAMOV DPTR,#2000H;2000HDPTR ;(DPH)=20H ;(DPL)=00HBACK第11页/共123页4)寄存器间接寻址 寄存器间接寻址:操作数的地址事先存放在某

5、个寄存器中,寄存器间接寻址是把指定寄存器的内容作为地址,由该地址所指定的单元内容作为操作数。89C51规定R0或R1为间接寻址寄存器,它可寻址内部地址RAM低位的128B单元内容。还可采用DPTR作为间接寻址寄存器,寻址外部数据存储器的64KB空间。例如BACK第12页/共123页例如:将片内RAM 65H单元内容47H送A,可执行指令“MOV A,R0”。其中R0内容为65H。如图所示:65H47HR0A47H数据存储器地址65H以指令中所指定的R0内容(65H)为指针将片内RAM65H单元内容47H送ABACK第13页/共123页5)变址寻址(基址寄存器+变址寄存器间接寻址)变址寻址:以某

6、个寄存器的内容为基地址,在这个基地址的基础上加上地址偏移量形成真正的操作数地址。89C51中采用DPTR或PC为变址寄存器,A的内容为地址偏移量。变址寻址只能访问程序存储器,访问范围为64KB。例如BACK第14页/共123页例如:MOVC A,A+DPTR;(A)+(DPTR)A如图所示1EH0302HROMDPTRAA02F1H11H1EH+DPTR内容与A的内容之和为程序存储器地址程序存储器内容送ABACK第15页/共123页6)相对寻址 相对寻址:是以当前的PC值加上指令中规定的偏移量rel而形成实际的转移地址。相对寻址只出现在相对转移指令中。当前的PC值是指执行完相对指令后的PC值;

7、相对转移指令操作码所在地址称为源地址;转移后的地址称为目的地址。目的地址=源地址+相对转移指令字节数+relrel为补码表示的有符号数。BACK第16页/共123页7)位寻址位寻址:采用位寻址方式的指令的操作数是8位二进制数中的某一位,指令中给出的是位地址。位地址在指令中用bit表示。例如:CLR bit;位地址的两种表示方法:直接使用位地址,如D3H;直接用寄存器名字加位数,如PSW.3。位寻址区域:片内RAM的20H-2FH的16个单元中的128位;字节地址能被8整除的SFR。BACK第17页/共123页2、寻址空间及符号注释1)寻址空间:见表3-1。2)符号注释:BACK第18页/共12

8、3页表3-2 操作数寻址方式和有关空间BACK第19页/共123页符号注释Rn(n=07):当前选中的工作寄存器组R0R7。Ri(I=0,1):作为地址指针的两个工作寄存器R0,R1。#data:8位立即数。#data16:16位立即数。direct:8位片内RAM单元(包括SFR)的直接地址。addr11:11位目的地址,用于ACALL和AJMP指令中。addr16:16位目的地址。用于LCALL和LJMP指令中。rel:补码表示的8位地址偏移量。范围:-128+127D。bit:片内RAM或SFR的直接寻址位地址。:间接寄存器的符号。/:位操作指令中对该位先取反再参与操作,不影响原值。()

9、:中的内容。():指出的地址单元中的内容。:指令操作流程方向。BACK第20页/共123页概述:89C51指令系统由111条指令组成。其中,单字节指令49条,双字节指令45条,三字节指令17条。从指令执行时间看,单周期指令64条,双周期45条,只有乘、除指令为4个周期。3.3 89C51指令系统Back第21页/共123页89C51 89C51 指令系统可分为五大类指令系统可分为五大类1 1 数据传送指令:数据传送指令:2828条条2 2 算术运算指令:算术运算指令:2424条条3 3 逻辑运算及移位指令:逻辑运算及移位指令:2525条条4 4 控制转移指令:控制转移指令:1717条条5 5

10、位操作指令(布尔操作):位操作指令(布尔操作):1717条条Back第22页/共123页数据传送指令数据传送指令1.1.以累加器A A为目的操作数的指令(4(4条,即4 4种寻址方式)2.2.以寄存器RnRn为目的操作数的指令(3 3条)3.3.以直接地址为目的操作数的指令(5 5条)4.4.以间接地址为目的操作数的指令(3 3条)5.5.十六位数据传送指令(1(1条)6.6.查表指令(2 2条)7.7.累加器A A与片外RAMRAM传送指令(4(4条)8.8.栈操作指令(二条)9.9.交换指令(5(5条)Back第23页/共123页1.以累加器A为目的操作数的指令(4条,即4种寻址方式)汇编

11、指令格式MOVA,Rn;MOVA,direct;MOVA,Ri;MOVA,#data机器码格式1110 1rrr1110 0101direct1110 011i0111 0100data操作(Rn)A(direct)A(Ri)A#dataA注释将工作寄存器Rn(即R0R7)内容传送到累加器A中将直接寻址所得的片内RAM单元内容或特殊功能寄存器中的内容传送到累加器A中将间接寻址(Ri为R0或R1)所得的片内RAM单元内容或特殊功能积存器中的内容传送到累加器A中将立即数传送到累加器A中例:Back第24页/共123页 MOV AMOV A,#30H#30H ;(;(A A)=30H=30H MOV

12、 A MOV A,30H30H ;(;(A A)=11H =11H MOV A MOV A,R1R1 ;(;(A A)=11H=11H MOV A MOV A,R1 R1 ;(;(A A)=30H=30H例:起始30H单元内容为11H,R1中为30HBack第25页/共123页 2 2、以寄存器、以寄存器RnRn为目的操作数的指令(为目的操作数的指令(3 3条)条)汇编指令格式MOVRn,A;MOVRn,direct;MOVRn,#data;机器码格式1111 1rrr1010 1rrrdirect0111 1rrrdata操作(A)Rn(direct)Rn#dataRn注释将累加器A中内容传

13、送到工作寄存器Rn(即R0-R7)中将直接寻址所得的片内RAM单元内容或特殊功能寄存器中的内容传送到工作寄存器Rn(即R0-R7)中将立即数传送到工作寄存器Rn(即R0-R7)中这组指令的功能是把源操作数所指定的内容送到当前工作寄存器组R0-R7中的某个寄存器。源操作数有寄存器寻址、直接寻址和立即数寻址三种方式。Back第26页/共123页如:(如:(A A)=78H=78H,(,(R5R5)=47H=47H,(,(70H70H)=F2H=F2H,执行指,执行指令:令:MOV R5MOV R5,A A ;(;(A A)R5R5,(,(R5R5)=78H=78HMOV R5MOV R5,70H

14、70H;(;(70H70H)R5R5,(,(R5R5)=F2H=F2HMOV R5MOV R5,#A3H#A3H;A3HR5A3HR5,(,(R5R5)=A3H=A3H注注意意:在在89C5189C51指指令令系系统统中中没没有有“MOV MOV RnRn,RnRn”传送指令。传送指令。Back第27页/共123页 3 3、以直接地址为目的操作数的指令(、以直接地址为目的操作数的指令(5 5条)条)机器码格式1111 0101direct 1000 1rrrdirect1000 0101direct2direct11000 011idirect0111 0101directdata汇编指令格式

15、MOV direct,A;MOVdirect,Rn;MOVdirect1,direct2;MOVdirect,Ri;MOVdirect,#data;操作(A)directRndirectdirect2direct1(Ri)direct#datadirect注释将A中内容传送到直接地址direct所指出的片内存储单元中。将工作寄存器Rn(即R0-R7)中内容传送到直接地址direct所指出的片内存储单元中。将直接地址源direct所指出的片内存储单元中内容传送到直接地址目的direct所指出的片内存储单元中将间接寻址(Ri为R0或R1)所得的片内RAM单元内容传送到直接地址direct所指出的片

16、内存储单元中将立即数传送到直接地址direct所指出的片内存储单元中这组指令的功能是把源操作数所指定的内容送入由直接地址direct所指出的片内存储单元中。源操作数有寄存器寻址,直接寻址,寄存器间接寻址和立即寻址等方式。Back第28页/共123页4 4、以间接地址为目的操作数的指令(、以间接地址为目的操作数的指令(3 3条)条)(Ri)表示Ri中的内容为指定的RAM单元。汇编格式机器码格式操作注释MOVRi,A;1111011i(A)(Ri)将累加器A中内容传送到间接寻址(Ri为R0或R1)所得的片内RAM单元中。MOVRi,direct;0101011i(direct)(Ri)将直接寻址得

17、的片内RAM direct 单元内容或特殊功能寄存器中内容传送到间接寻址(Ri为R0或R1)所得的片内RAM单元中。MOVRi,#data;0111011i#data(Ri)将立即数传送到间接寻data 址(Ri为R0或R1)所得的片内RAM单元中。Back第29页/共123页MOV指令在片内存储器的操作功能如图3.2-1示。图3.2-1 传送指令在片内存储器的操作功能RidirectRn#dataACCBack第30页/共123页5 5、十六位数据传送指令十六位数据传送指令(1(1条条)这这条条指指令令的的功功能能是是把把1616位位常常数数送送入入DPTRDPTR。DPTRDPTR由由DP

18、HDPH和和DPLDPL组成组成。例:MOVDPTR#1000H;(DPTR)=1000H,(DPH)=10H,(DPL)=00H汇编指令格式MOVDPTR,#data16;机器码格式1001 0000data(h)data(l)操作#data16DPTR注释将16位立即数传送到DPTR中Back第31页/共123页6 6、查表指令(2 2条)例如汇编指令格式MOVCA,A+DPTR;MOVCA,A+PC;机器码格式1001 00111000 0011操作(A)+(DPTR)A先(PC)+1PC(A)+(PC)A注释将程序存储器内容传送到A中(远程查表)将程序存储器内容传送到A中(进程查表)上

19、述两条指令的操作过程如图3.2-2所示。Back第32页/共123页基地址寄存器+变址寄存器间接寻址PC+A(程序存储器0-64K)基地址寄存器+变址寄存器间接寻址DPTR+A(程序存储器0-64K)A寄存器图3.2-2 程序存贮器传送Back第33页/共123页执行下面程序段后结果如何?MOV DPTR,#2000H;(DPTR)=2000HMOV A ,#0AH ;(A)=0AHMOVC A,A+DPTR;(A)=(200AH)=11H例1:若:初始 ROM 内容:2000H 00H2001H 01H2002H 09H2003H 04H2004H 06H2005H 08H2006H FFH

20、2007H 66H2008H 45H2009H ABH200AH 11HBack第34页/共123页例2:2:若初始ROMROM内容为:100FH100FH 01H01H1010H 1010H 02H02H1011H 1011H 03H03H1012H 1012H 04H04H所以,最后结果为:(A)=01 (R0)=01 (PC)=1004执行下面程序后的结果如何?1000H740DMOVA,#0DH;(A)=0DH1002H83MOVCA,A+PC;(PC)=1002+1=1003H,(A)=(A)+(PC)=(0D+1003)=(1010H)(A)=01H1003HF8MOVR0,A;(

21、R0)=(A)=01HBack第35页/共123页7、累加器累加器A与片外与片外RAM传送指令传送指令(4条条)在89C51指令系统中,CPU对片外RAM的访问只能用寄存器间接寻址的方式,且仅有四条指令:汇编指令格式 机器码格式 操作MOVXA,Ri1110001i(Ri)AMOVXA,DPTR11100000(DPTR)AMOVXRi,A1111001i(A)(Ri)MOVXDPTR,A11110000(A)(DPTR)第2,4两条指令以DPTR为片外数据存储器16位地址指针,寻址范围达64KB。其功能是DPTR所指定的片外数据存储器与累加器A之间传送数据。第1,3两条指令是用R0或R1作低

22、8位地址指针,由P0口送出,寻址范围是256字节。这两条指令完成以R0或R1为地址指针的片外数据存储器与累加器A之间的传送数据。上述四条指令的操作如 图3.2-3所示:例如Back第36页/共123页A寄存器寄存器间接寻址R1.R0片内 RAM 0-255寄存器间接寻址DPTR片外 RAM 0-64K 图 3.2-3 外部数据存储器传送操作Back第37页/共123页例例:若片内若片内RAM(30H)=01HRAM(30H)=01H,片外,片外RAM RAM(30H)=02H(30H)=02H,执行下面程序段后的结果如何。,执行下面程序段后的结果如何。MOVR1,#30H;(R1)=30HMO

23、VXA,R1;(A)=02HMOVR0,A;(R0)=(A)=02HMOVA,R1;(A)=(R1)=01HMOVR2,A;(R2)=(A)=01HBack第38页/共123页 8 8、栈操作指令(二条)、栈操作指令(二条)汇编指令格式 机器码格式 操作 注释PUSHdirect11000000先(SP)+1SP将direct内容压入堆栈direct后(direct)(SP)POPdirect11010000先(SP)direct将堆栈内容弹出到direct后(SP)-1SPdirect单元中Back第39页/共123页例:MOV SP,#18H;(SP)=18HMOV A,#30H;(A)=

24、30HMOV DPTR,#1000H;(DPTR)=1000HPUSH A;(SP)=19H(19H)=30HPUSH DPH;(SP)=1AH(1AH)=10HPUSH DPL;(SP)=1BH(1BH)=00H POP DPL;(DPL)=00H (SP)=1AHPOP DPH;(DPH)=10H (SP)=19HPOP A;(A)=30H (SP)=18HBack第40页/共123页 9 9、交换指令交换指令(4(4条条)(1)字节变换指令汇编指令格式 机器码格式 操作 注释XCHA,Rn11001rrr(A)(Rn)A的内容与Rn的内容互换XCHA,direct11000101(A)(

25、direct)A的内容与direct的内容互换directXCHA,Ri1100011i(A)(Ri)A的内容与(Ri)t的内容互换例:初始时:(A)=34H,(30H)=11HXCH A,30H ;(A)=11H,(30H)=34HMOV R1,#30H;(R1)=30HXCH A,R1 ;(A)=34H,(30H)=11HBack第41页/共123页(2)(2)半字节交换指令半字节交换指令第一条指令为低半字节交换指令。该指令将累加器A的低4位与R0或R1所指出的片内RAM单元的低4位数据相互交换,各自的高4位不变,其操作表示为:如:(R1)=30H,(30H)=11H,(A)=34H则:X

26、CHD A,R1;(A)=31H;(30H)=14HSWAPA;(A)=13HA半字节半字节RAM汇编指令格式 机器码格式 操作 XCHDA,Ri1101011i(A)0-3(Ri)0-3SWAPA11000100(A)0-3(A)4-7第二条指令为A的低四位与高四位交换指令。该指令将累加器A的低4位与A的高4位数据相互交换。Back第42页/共123页算术运算指令算术运算指令1.1.不带进位加法指令(四条)2.2.带进位加法指令(四条)带进位加法指令(四条)3.3.带借位减法指令(四条)带借位减法指令(四条)4.4.乘法指令(乘法指令(1 1条)条)5 5、除法指令(、除法指令(1 1条)条

27、)6 6、加、加1 1指令(指令(5 5条)条)7 7、减、减1 1指令指令(4(4条条)8 8、十进制调整指令、十进制调整指令(1(1条条)Back第43页/共123页1 1、不带进位加法指令(四条)汇编指令格式 机器码格式 操作 注释ADDA,Rn;00101rrr(A)+(Rn)A将工作寄存器内容和累加器A中的数相加,“和”存放于累加器A中ADDA,direct;00100101(A)+(direct)A将内部RAM单元内容和direct累加器A中的数相加,“和”存放于累加器A中ADDA,Ri;0010011i(A)+(Ri)A将间接寻址(Ri为R0或R1)所得的片内RAM单元中内容和累

28、加器A中的数相加,“和”存放于累加器A中ADDA,#data;00100100(A)+#dataA将立即数的8位无符号二进制data数和累加器A中的数相加,“和”存放于累加器A中第44页/共123页说明:上述指令的执行将影响标志位AC,Cy,OV,P。当“和”的第3位或第7位有进位时,分别将AC,CY标志位置1,否则为0。溢出标志位OV=C7+C6(异或),该标志位只有带符号数运算时才有用。例:若:(A)=78H ,(R0)=64H执行ADD A,R0 后,结果及PSW=?(A):78H=0111 1000 B+(R0):64H=0110 0100 B (A):DCH=1101 1100 B标

29、志位:CY=0,AC=0,OV=1,P=1,即:PSW=05H 结果:(A)=DCH (R0)=64HBack第45页/共123页2 2 、带进位加法指令(四条)、带进位加法指令(四条)汇编指令格式 机器码格式 操作 注释ADDCA,Rn;00111rrr(A)+CY+(Rn)A将工作寄存器内容与CY及累加器A中的数相加,“和”存放于累加器A中ADDCA,direct;00110101(A)+CY+(direct)A将内部RAM单元内容与directCY及累加器A中的数相加,“和”存放于累加器A中ADDCA,Ri;0011011i(A)+CY+(Ri)A将间接寻址(Ri为R0或R1)所得的片内

30、RAM单元中内容与CY及累加器A中的数相加,“和”存放于累加器A中ADDCA,#data;00110100(A)+CY+#dataA将立即数的8位无符号二进data制数与CY及累加器A中的数相加,“和”存放于累加器A中第46页/共123页说明:本组指令的功能是同时把源操作数所指出的内容和进位标志未CY都加到累加器A中,结果存放到A中,其余的功能和上面的ADD指令相同。本组指令常用于多字节加法。例:设(A)=0C3H,(R0)=0AAH,(CY)=1。执行指令“ADDC A,R0”后的结果及标志位如何?解:(A):C3H=1100 0011+(CY):1=0000 0001 1100 0100+

31、(R0):AAH=1010 1010 (A):6EH=0110 1110标志位:CY=1,OV=1,AC=0,结果:(A)=6EH,(R0)=0AAH。第47页/共123页例:编程,将例:编程,将(30H),(31H)(30H),(31H)单元中的数与单元中的数与(40H40H),(41H,(41H)单元中的数相加,结果存于)单元中的数相加,结果存于(30H30H),(31H,(31H)单元中。)单元中。解:MOV A,30HADD A,40HMOV 30H,AMOV A,31HADDC A,41HMOV 31H,ABack第48页/共123页3 3 、带借位减法指令(四条)、带借位减法指令(

32、四条)汇编指令格式 机器码格式 操作 注释SUBBA,Rn;10011rrr(A)-CY-(Rn)A将工作寄存器内容与CY及累加器A中的数相减,“差”存放于累加器A中SUBBA,direct;10010101(A)-CY-(direct)A将内部RAM单元内容与directCY及累加器A中的数相减,“差”存放于累加器A中SUBBA,Ri;1001011i(A)-CY-(Ri)A将间接寻址(Ri为R0或R1)所得的片内RAM单元中内容与CY及累加器A中的数相减,“差”存放于累加器A中SUBBA,#data;10010100(A)-CY-#dataA将立即数的8位无符号二进data制数与CY及累加

33、器A中的数相减,“差”存放于累加器A中第49页/共123页 说明:这这组组指指令令的的功功能能是是从从累累加加器器A A中中减减去去源源操操作作数数所所指指出出的数及进位位的数及进位位CYCY的值的值,差保留在累加器差保留在累加器A A中。中。由由于于89C5189C51指指令令系系统统中中没没有有不不带带借借位位的的减减法法指指令令,如如需需要要的的话话,可可以以在在“SUBBSUBB”指指令令前前用用“CLR CLR C C”指指令令将将CyCy清清0 0,这这一一点点必必须注意须注意。第50页/共123页例:设(A A)=0C9H,=0C9H,(R2R2)=54H,Cy=1=54H,Cy

34、=1。执行指令“SUBB ASUBB A,R2R2”的结果如何?解:(A)=0C9H=11001001 B-)Cy=1=00000001 B 11001000 B-)(R2)=54H=01010100 B (A)=74H=01110100 B结果为:(A)=74H标志位为:Cy=0 AC=0 OV=1 P=0Back第51页/共123页 4 4、乘法指令(乘法指令(1 1条)条)该指令若乘积大于0FFH,则OV置1,否则OV清0。Cy位总是被清0。汇编指令格式 机器码格式 操作 MULAB;10100100(A)(B)B15-8A7-0该指令将累加器A和寄存器B中两个无符号数相乘,所得16位积

35、的低字节存放在A中,高字节存放中B中。例:(A)=4EH,(B)=5DH,执行指令“MUL AB”后结果如何?解:结果为:(B)=1CH,(A)=56H,表示积(BA)=1C56H,OV=1。Back第52页/共123页5 5、除法指令(除法指令(1 1条)条)例:(A)=BFH,(B)=32H。执行指令“DIV AB”后:结果为(A)=03H,(B)=29H;标志位 CY=0,OV=0。汇编指令格式 机器码格式 操作 DIVAB;10000100(A)/(B)的商A,(A)/(B)的余数BA中内容除以B中内容,整数商存于A中,余数存于B中。该指令执行后,CY和OV均被清0。若原(B)=00H

36、,则结果无法确定,用OV=1表示,CY仍为0。Back第53页/共123页 6 6、加加1 1指令(指令(5 5条)条)该组指令的操作不影响PSW。若原单元内容为FFH,加1后溢出为00H,也不影响PSW标志。汇编指令格式 机器码格式 操作 注释INC A;0000 0100 (A)+1 A A中内容加1。INC Rn;0000 1rrr (Rn)+1 Rn Rn中内容加1。INC direct;0000 0101 (direct)+1direct direct单元中内容加1。directINC Ri;0000 011i (Ri)+1(Ri)Ri间接寻址所得的片内RAM 单元中内容加1。INC

37、 DPTR;1010 0011 (DPTR)+1 DPTR DPTR中内容加1例:比较指令“INC A”和“ADD A,#01H”的结果。解:“INC A”指令只将A的内容加1,标志位没有变化。而“ADD A,#01H”指令不仅将A的内容加1,还影响标志位变化。第54页/共123页例:例:若:(若:(R1R1)=30H=30H,(,(30H30H)=11H=11H 求执行下面指令后的结果。求执行下面指令后的结果。INC R1INC R1;(30H)=12H(30H)=12HINC R1 INC R1;(R1)=31H(R1)=31H解:结果为:(30H)=12H,(R1)=31H。不影响PWS

38、.Back第55页/共123页7 7、减减1 1指令指令(4(4条条)汇编指令格式 机器码格式 操作 注释DEC A;0001 0100 (A)-1 A A中内容减1。DEC Rn;0001 1rrr (Rn)-1 Rn Rn中内容减1。DEC direct;0001 0101 (direct)-1direct direct单元中内容减1。directDEC Ri;0001 011i (Ri)-1(Ri)Ri间接寻址所得的片内RAM 单元中内容减1。该组指令的操作不影响PSW。Back第56页/共123页8 8、十进制调整指令十进制调整指令(1(1条条)汇编指令格式 机器码格式 操作 DA A

39、;1101 0100若(A0-3)9或AC=1,则(A0-3)+6A0-3同时,若(A4-7)9或CY=1,则(A4-7)+6A4-7 该指令调整累加器内容为BCD码。这条指令跟在ADD或ADDC指令后,将相加后存放在累加器中的结果进行十进制调整,完成十进制加法运算功能。必须注意,本指令不能简单地把累加器A的16进制数变换成BCD码,也不能用于十进制减法的调整。第57页/共123页例:设累加器A A内容为:01010110B01010110B(即为5656的BCDBCD码),寄存器R3R3的内容为01100111B01100111B(即6767的BCDBCD码),CYCY内容为1 1。求执行下

40、列指令后的结果。ADDC AADDC A,R3R3;DA ADA A;解:先执行ADDC A,R3;(A):0101 0110 BCD:56 (R3):0110 0111 BCD:67 (+)(CY):0000 0001 BCD:01 和:1011 1110即(A)=1011 1110 且影响标志位 CY=0,AC=0;再执行DA A;因为A中的高四位值为11,大于9,低四位值为14,也大于9,所以内部调整自动进行加66H的操作:1011 1110 调整+)0110 0110 1 0010 0100 BCD:124即(A)=0010 0100=24BCD,CY=1;AC=1。Back第58页/

41、共123页逻辑操作指令逻辑操作指令逻辑操作指令包括:与、或、异或、清除、求反、移位等操作。该指令组全部操作数都是8位25条指令。1.简单操作指令(2条)2.移位指令(4条)3.逻辑“与”指令(6条)4.逻辑“或”指令(6条)5.逻辑“异或”指令(6条)Back第59页/共123页1.1.简单操作指令(简单操作指令(2 2条)条)Back汇编指令格式 机器码格式 操作 注释CLR A;1110 0100 0 A 累加器A清0指令,只影响标志位P。CPL A;11110100(A)A累加器A取反指令,不影响标志位第60页/共123页2.2.移位指令(移位指令(4 4条)条)汇编指令格式 机器码格式

42、 操作 注释RL A;0010 0011 A中内容循环左移一位。a7 a0 RR A;0000 0011 A中内容循环右移一位。a7 a0 RLC A;0011 0011 A中内容连同进位位CY一起循 CY a7 a0 环左移一位。RRC A;0001 0011 A中内容连同进位位CY一起循 CY a7 a0 环右移一位。我们通常用RLCA指令将累加器A的内容做乘2运算。例如:无符号8位二进制数(A)=10111101B=BDH,(CY)=0。将(A)乘2,执行指令“RLCA”后结果:(A)=01111010B=7AH,(CY)=1,而17AH正是BDH的2倍。Back第61页/共123页3.

43、3.逻辑逻辑“与与”指令(指令(6 6条)条)汇编指令格式机器码格式 操作ANL A,Rn;01011rrr(A)(Rn)AANL A,direct;01010101(A)(direct)AdirectANL A,Ri;0101011i(A)(Ri)AANL A,#data;01010100(A)dataAdataANL direct,A;01010010(direct)(A)directdirectANL direct,#data;01010011(direct)#datadirectdirectdata这组指令中前四条指令是将累加器A的内容和操作数所指出的内容按位进行逻辑“与”,结果存放在

44、A中。后两条指令是将直接地址单元中的内容和操作数所指出的单元的内容按位进行逻辑“与”,结果存入直接地址单元中。若直接地址正好是I/O端口,则为“读改写”操作。Back第62页/共123页4.逻辑“或”指令(6条)汇编指令格式机器码格式 操作ORL A,Rn;01001rrr(A)(Rn)AORL A,direct;01000101(A)(direct)AdirectORL A,Ri;0100011i(A)(Ri)AORL A,#data;01000100(A)dataAdataORL direct,A;01000010(direct)(A)directdirectORL direct,#dat

45、a;01000011(direct)#datadirectdirectdata这组指令的功能是将两个指定的操作数按位进行逻辑“或”,前四条指令的操作结果存放在累加器A中,后两条指令的操作结果存放在直接地址单元中。Back第63页/共123页5.5.逻辑“异或”指令(6 6条)汇编指令格式机器码格式 操作XRL A,Rn;01101rrr(A)(Rn)AXRL A,direct;01100101(A)(direct)AdirectXRL A,Ri;0110011i(A)(Ri)AXRL A,#data;01100100(A)dataAdataXRL direct,A;01100010(direc

46、t)(A)directdirectXRL direct,#data;01100011(direct)#datadirectdirectdata这组指令的功能是将两个指定的操作数按位进行“异或”,前四条指令的结果存放在累加器A中,后两条指令的操作结果存放在直接地址单元中这类指令的操作均只影响标志位P。Back第64页/共123页控制程序转移类指令 1.无条件转移指令(4条)2.空操作指令(1条)3.条件转移指令(8条)4.调用和返回指令89C51单片机有丰富的转移类指令(17条),包括无条件转移、条件转移和调用指令及返回指令等。所有这些指令的目标地址都是在64K字节程序存储器地址空间范围内。Ba

47、ck第65页/共123页1、无条件转移指令(4条)无条件转移指令是当程序执行到该指令时,程序无条件的转移到指令所提供的地址处执行。无条件转移指令有长转移、短转移、相对转移和间接转移4条指令。(1)长转移指令指令格式机器码注释LJMPaddr16;00000010addr16PCa15-a8a7-a0指令提供16位目标地址,将指令的第二、第三字节地址码分别装入PC的高8位和低8位中,程序无条件转向指定的目标地址去执行。由于直接提供16位目标地址,所以程序可转向64K程序存储器地址空间的任何单元。第66页/共123页00:26例:若程序存储器中,指令 LJMP LOOP 的首地址为1000H,其转

48、向的目标地址为1234H,执行下列程序:ORG 1000H LJMP LOOP ORG 1234H LOOP:MOV A,R2 此时指令 的指令码(机器码)为:02H 12H 34H即:1000H1001H1002H1234HROM02H12H34HEAH第67页/共123页(2)短转移指令(绝对转移)AJMPaddr11;a10a9a800001先(PC)+2PCa7-a0后addr11PC10-0(PC15-11)不变这条指令提供了11位地址,可在2K范围内无条件转移到由a10-a0所指出的地址单元中。因为指令只提供低11位地址,高5位为原PC11-15位值,因此,转移的目标地址必须在AJ

49、MP指令后面指令的第一个字节开始的同一2K字节范围内。第68页/共123页00:26例1:ORG0500H0500H:AJMP 0703H;0703H=0000011100000011B;Addr11=11100000011B;指令地址PC=0500H;即:PC=0000010100000000B;该指令为二字节指令在执行时先PC+2,(PC=0502H=0000010100000010B,PC的高五位为:00000B,于0703H的高五位相同,在同一个2k范围内。)然后将Addr11送PC的低11位:PC=0000011100000011B.指令的机器码:a10 a9 a8 0 0001 1

50、110 0001 E1Ha7-a0 0000 0011 03H 例2:ORG0700H0700H:AJMP 0832H;0832H=0000100000110010B;Addr11=00000110010B;指令地址PC=0700H;即:PC=0000011100000000B;该指令为二字节指令在执行时先PC+2,(PC=0702H=0000011100000010B,PC的高五位为:00000B,于0832H的高五位不同,不在同一个2k范围内。)该指令跨越2k的范围,错误。第69页/共123页(3)相对转移指令(短转移)指令的操作数是相对地址,rel是一个带符号的偏移字节数(补码表示),其

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

当前位置:首页 > 应用文书 > PPT文档

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com