单片机3 1ppt课件.ppt
《单片机3 1ppt课件.ppt》由会员分享,可在线阅读,更多相关《单片机3 1ppt课件.ppt(177页珍藏版)》请在三一办公上搜索。
1、第三章 89C51单片机指令系统,Exit,3.3 89C51单片机指令系统,3.1 汇编语言,3.2 寻址方式,3.4 程序设计举例,指令学习要点 了解指令的操作 了解指令的寻址格式 了解指令对程序状态字的影响 合理使用指令,3.1 汇编语言,3.1.1 指令和程序设计语言3.1.2 指令格式,BACK,3.1 汇编语言,计算机指令系统是一套控制计算机操作的编码,称为机器语言。 计算机只能识别和执行机器语言的指令。 为了便于记忆和使用,通常用符号指令(即汇编语言)来描述计算机的指令系统。 不同的计算机有不同的汇编语言。,BACK,3.1.1 指令和程序设计语言,指令: 是CPU根据人的意图来
2、执行某种操作的 命令。指令系统:一台计算机所能执行的全部指令的集合。要使计算机按照人的思维完成一项工作,就必须让CPU按顺序执行各种操作。 即一步步地执行一条条的指令。,3.1.1 指令和程序设计语言,程序:按人的要求编排的指令操作序列称为程序。程序设计:编写程序的过程就叫作程序设计。,3.1.1 指令和程序设计语言,程序设计语言是实现人机交换信息的基本工具,分为:机器语言汇编语言高级语言,3.1.1 指令和程序设计语言,机器语言:用二进制编码表示每条指令,是计算机能直接识别和执行的语言。用机器语言编写的程序称为机器语言程序或指令程序(机器码程序)。 因为机器只能直接识别机器码程序,所以又称它
3、为目标程序。,3.1.1 指令和程序设计语言,机器语言举例:要做“10+20”的加法,在MCS-51中可用机器码指令编程:01110100 00001010 把10放到累加器A中;00100100 00010100 A加20,结果仍放在A中为了便于书写和记忆,可采用十六进制表示指令码:74 0AH24 14H,3.1.1 指令和程序设计语言,机器语言特点:用机器语言编写程序不易记忆,不易查错,不易修改。,3.1.1 指令和程序设计语言,汇编语言:用助记符、符号和数字等来表示指令的程序设计语言。它与机器语言指令是一一对应的。它与机器语言指令是一一对应的。,3.1.1 指令和程序设计语言,汇编语言
4、举例:例如:“10+20”例子可写成:汇编语言程序 机器语言程序MOV A,#0AH 74 0AHADD A,#14H 24 14H,3.1.1 指令和程序设计语言,汇编语言特点:用与CPU的硬件结构紧密相关。不同的CPU其汇编语言是不同的。 汇编语言程序不能移植,使用不便。用汇编语言进行程序设计必须了解所使用的CPU硬件的结的与性能,对程序设计人员有较高的要求。,3.1.1 指令和程序设计语言,高级语言:脱离具体机器的语言。,3.1.2 指令格式,89C51汇编语言指令由操作码助记符字段和操作数字段两部分组成。指令格式如下: 操作码 目的操作数,源操作数;注释例如:MOVA,#00H,3.1
5、.2 指令格式,操作码部分 规定了指令所实现的操作功能,由2-5个英文字母表示。例如,JB, MOV,DJNZ,LCALL等。,3.1.2 指令格式,操作数部分 指出了参与操作的数据来源和操作结果存放的目的单元。 操作数可以直接是一个数(立即数), 或者是一个数据所在的空间地址,即在执行指令时从指定的地址空间取出操作数。,3.1.2 指令格式,操作码和操作数都有对应的二进制代码,指令代码由若干字节组成。 对于不同的指令,指令的字节数不同。89C51指令系统中,有: 1、单字节指令 、双字节指令 、三字节指令。,1、单字节指令,单字节指令中的8位二进制代码 既包含操作码的信息,也包含操作数的信息
6、。 这种指令有两种情况。1)指令码中隐含着对某一种寄存器的操作2)由指令中的rrr三位的不同编码指定某一寄存器,1、单字节指令,1)指令码中隐含着对某一种寄存器的操作INC DPTR指令代码:A3H=,1 1 1 0 1 r r r,1、单字节指令,2)由指令中的rrr三位的不同编码指定某一寄存器 MOV A,Rn指令代码:,2、双字节指令,用一个字节表示操作码,另一个字节表示操作数或操作数所在的地址。格式为:,操作码,立即数或地址,3、三字节指令,一个字节操作码,两个字节操作数。格式为:,操作码,立即数或地址,立即数或地址,3.2 寻址方式,3.2.0 寻址的概念3.2.1 寻址方式的种类3
7、.2.2 寻址空间及符号注释,3.2.0 寻址的概念,寻址:就是寻找指令中操作数或操作数所在地址。寻址方式:就是如何找到存放操作数的地址,把操作数提取出来的方法。 寻址方式是计算机的重要性能指标之一,也是汇编语言程序设计中最基本的内容之一,必须十分熟悉,牢固掌握。,3.2.1 寻址方式的种类,1、寄存器寻址2、直接寻址3、立即数寻址4、寄存器间接寻址 5、变址寻址6、相对寻址 7、位寻址,1、寄存器寻址,由指令指出寄存器组R0R7中的某一个或其他寄存器(A,B,DPTR等)的内容作为操作数。例如: MOV A,R0; (R0)A MOV P1,A; (A)P1口 ADD A,R0; (A)+(
8、R0)A,2、直接寻址,在指令中直接给出操作数所在存储单元的地址。指令中操作数部分是操作数所在地址。例如: MOV A,3AH; (3A) A MOV A,P1; (P1口) A 或: MOV A,90H; 90H是P1口的地址,2、直接寻址,直接寻址方式可访问:片内RAM的128个单元、所有的SFR。对于SFR,既可以使用它们的地址,也可以使用它们的名字。直接寻址的地址占一字节,所以,一条直接寻址方式的指令至少占内存两个单元。,2、直接寻址,注意下面指令的区别:MOV A,20HMOV C,20H,3、立即数寻址,指令操作码后面紧跟的是一字节或两字节操作数,用“#”号表示,以区别直接地址。例
9、如:MOV A,3AH;(3AH)AMOV A,#3AH;3AHAMOV DPTR,#2000H;2000HDPTR ;(DPH)=20H ;(DPL)=00H,4、寄存器间接寻址,操作数的地址事先存放在某个寄存器中,寄存器间接寻址是把指定寄存器的内容作为地址,由该地址所指定的单元内容作为操作数。89C51规定R0、R1为间接寻址寄存器,它可寻址内部地址RAM低位的128B单元内容。还可采用DPTR作为间接寻址寄存器,寻址外部数据存储器的64KB空间。例如,例如:将片内RAM 65H单元内容47H送A,可执行指令“MOV A,R0”。其中R0内容为65H。如图所示:,5、变址寻址(基址寄存器+
10、变址寄存器间接寻址),以某个寄存器的内容为基地址,在这个基地址的基础上加上地址偏移量形成真正的操作数地址。89C51中没有专门的变址寄存器。而是采用DPTR或PC为变址寄存器,A的内容为地址偏移量。变址寻址只能访问程序存储器,访问范围为64KB。例如,例如:MOVC A,A+DPTR,0302H,ROM,DPTR,A,A,02F1H,11H,1EH,+,DPTR内容与A的内容之和为程序存储器地址,程序存储器内容送A,6、相对寻址,相对寻址只出现在相对转移指令中。以当前的PC值加上指令中规定的偏移量rel而形成实际的转移地址。当前的PC值是指执行完相对指令后的PC值;相对转移指令操作码所在地址称
11、为源地址;转移后的地址称为目的地址。,6、相对寻址,目的地址=源地址+相对转移指令字节数+relrel为补码表示的有符号数。,7、位寻址,采用位寻址方式的指令的操作数是8位二进制数中的某一位,指令中给出的是位地址。位地址在指令中用bit表示。例如:CLR bit;位地址的两种表示方法:直接使用位地址,如D3H;直接用寄存器名字加位数,如PSW.3。,7、位寻址,位寻址空间:片内RAM的20H-2FH的16个字节单元中的128位(位地址:00HFFH)部分SFR(字节地址能被8整除的SFR),3.2.2 寻址空间及符号注释,1、寻址空间2、符号注释,1、寻址空间,2、符号注释,Rn(n=0-7)
12、:当前选中的工作寄存器组R0-R7。Ri(i=0,1):作为地址指针两个工作寄存器R0, R1。#data:8位立即数。#data16:16位立即数。direct:8位片内RAM单元(包括SFR)的直接地址。addr11:11位目的地址,用于ACALL和AJMP指 令中。addr16:16位目的地址。用于LCALL和LJMP指 令中。,2、符号注释,rel:补码表示的8位地址偏移量。 范围:-128 +127D。bit:片内RAM或SFR的直接寻址位地址。:间接寄存器的符号。/:位操作指令中对该位先取反再参与操作,不影响原值。():中的内容。():指出的地址单元中的内容。:指令操作流程方向。,
13、3.3 89C51单片机指令系统,3.3.0 绪3.3.1 数据传送指令3.3.2 算术运算指令3.3.3 逻辑运算及移位指令3.3.4 控制程序转移指令3.3.5 位操作指令(布尔操作),3.3.0 绪,89C51指令系统由111条指令组成。单字节指令49条,双字节指令45条,三字 节指令17条。 单周期指令64条,双周期45条, 只有乘、除指令为4个周期。,3.3.0 绪,指令系统可分为五大类:数据传送指令:28条算术运算指令:24条逻辑运算及移位指令:25条控制转移指令:17条位操作指令(布尔操作):17条,3.3.1 数据传送指令,1.以累加器A为目的操作数的指令 (4条,即4种寻址方
14、式) 2.以寄存器Rn为目的操作数的指令(3条) 3.以直接地址为目的操作数的指令(5条) 4.以间接地址为目的操作数的指令(3条),最基本、最重要的操作。,3.3.1 数据传送指令,5.十六位数据传送指令(1条)6.查表指令(2条)7.累加器A与片外RAM传送指令(4条)8.栈操作指令(2条)9.交换指令(4条),1、以累加器A为目的操作数的指令 (4条,即4种寻址方式),MOV A, Rn MOV A, directMOV A, RiMOV A, #data,例:(30H)=11H, (R1)=30H,MOV A,#30H ;(A)=30H MOV A, 30H ;(A)=11H MOV
15、A,R1 ;(A)=11H MOV A,R1 ;(A)=30H,2 、以寄存器Rn为目的操作数的指令(3条),MOV Rn, A MOV Rn, directMOV Rn, #data,注意: 在8051指令系统中没有 “MOV Rn,Rn”传送指令。,例如:(A)=78H,(R5)=47H,(70H)=F2H,执行指令:,MOV R5,A ; (R5)=78HMOV R5,70H ; (R5)=F2HMOV R5,#A3H; (R5)=A3H,3 、以直接地址为目的操作数的指令(5条),MOV direct, A MOV direct, Rn MOV direct, direct MOV d
16、irect, Ri MOV direct, #data,这组指令的功能是把源操作数所指定的内容送入由直接地址direct所指出的片内存储单元中。源操作数有寄存器寻址,直接寻址,寄存器间接寻址和立即寻址等方式。,3 、以直接地址为目的操作数的指令(5条),4 、以间接地址为目的操作数的指令(3条),MOV Ri, A MOV Ri, direct MOV Ri, #data,(Ri)表示Ri中的内容为指定的RAM单元。 Ri 为 R0, R1,5、 十六位数据传送指令(1条),这条指令的功能是把16位常数送入DPTR。DPTR由DPH和DPL组成。,MOV DPTR, #data16,例: MO
17、V DPTR, #1000H(DPTR)=1000H, (DPH)=10H, (DPL)=00H,5、 十六位数据传送指令(1条),6 、查表指令(2条),MOVC A,A+DPTR; 先(PC)+1PC, 后(A)+(DPTR) A (远程查表),MOVC A, A+PC; 先(PC)+1PC, 后(A)+(PC) A (近程查表),基地址寄存器+变址寄存器间接寻址PC+A(程序存储器0-64K),基地址寄存器+变址寄存 器间接寻址DPTR+A(程序存储器0-64K),A寄存器,程序存贮器传送,例:若初始ROM内容为:,执行程序:,所以,最后结果为:(A)=02 (R0)=02 (PC)=1
18、004H,例:若初始ROM内容为:,执行程序:,所以,最后结果为:(A)=02 (PC)=100EH (DPTR)=原值,7、 累加器A与片外RAM传送指令(4条),MOVX A, RiMOVX A, DPTRMOVX Ri, AMOVX DPTR, A,在8051指令系统中,CPU对片外RAM的访问只 能用寄存器间接寻址的方式,且仅有四条指令.第2,4两条指令以DPTR为片外数据存储器16位 地址指针,寻址范围达64KB。其功能是DPTR所 指定的片外数据存储器与累加器A之间传送数据第1,3两条指令是用R0或R1作低8位地址指针, 由P0口送出,寻址范围是256字节。这两条指令 完成以R0或
19、R1为地址指针的片外数据存储器与 累加器A之间的传送数据。上述四条指令的操作如图,7、 累加器A与片外RAM传送指令(4条),累加器,寄存器间接寻址R1、R0(片外RAM0-255字节),寄存器间接寻址DPTR (片外RAM0-64KB),外部数据存储器传送操作,MOV R1, #30H;(R1)=30HMOVX A, R1 ;(A)=02HMOV R0, A ;(R0)=(A)=02HMOV A,R1 ;(A)=(R1)=01HMOV R2, A ;(R2)=(A)=01H,例: 若:片内RAM (30H)=01H,片外RAM (30H)=02H,执行下面程序段后的结果如何。,8 、栈操作指
20、令(条),PUSH direct ; 先(SP)+1(SP) 后(direct)(SP)POP direct ; 先(SP) (direct) 后(SP) -1(SP),8 、栈操作指令(条),片内RAM128B单元中,可设定一个区域作为堆栈 一般可设在30H-7FH单元中, 栈顶由堆栈指针SP指出。 89C51复位后,(SP)=07H,若要更改则需重新 给SP赋值。 本操作不影响标志位。 堆栈中数据的压入和弹出遵循“先进后出”规则。,例:设(SP)=60H,(ACC)=40H, (B)=80H,执行下面指令: PUSH ACC PUSH B结果:(61H)=40H,(62H)=80H, (S
21、P)=62H,例:设(SP)=62H,(61H)=40H, (62H)=80H,执行下面指令: POP DPH POP DPL结果:(DPTR)=8040H,(SP)=60H,例:,继续上例:,9、 交换指令(4条),XCH A, RnXCH A, directXCH A, Ri,(1) 字节交换指令,将第二操作数所指定的工作寄存器Rn(R0R7),直接寻址和间接寻址的单元内容与累加器A中内容互换.,9、 交换指令(4条),XCHD A, Ri,(2) 半字节交换指令,Ri间接寻址的单元内容与累加器A中内容的低4位互换,高4位内容不变。该指令影响标志位P。,例:,例:设(A)=16H,(R0)
22、=40H, (40H)=35H执行下面指令: XCHD A, R0结果:(A)=15H,(40H)=36HA: 0001 0110 (40H): 0011 0101 0001 0101 (15H) 0011 0110 (36H),3.3.2 算术运算指令,1、不带进位加法指令(条)2、带进位加法指令(条)3、带借位减法指令(条)4、乘法指令(1条)5、除法指令(1条)6、加1指令(5条)7、减1指令(4条)8、十进制调整指令(1条),1、不带进位加法指令(条),ADD A, Rn ; (A)+(Rn)AADD A, direct ; (A)+(direct)AADD A, Ri ;(A)+(R
23、i)AADD A,#data ;(A)+#dataA,1、不带进位加法指令(条),这些指令是将工作寄存器、内部RAM单元内容或立即数的8位无符号二进制数和累加器A中的数相加, 所得的“和”存放于累加器A中。 当“和”的第3位或第7位有进位时,分别将AC,CY标志位置1,否则为0。 上述指令的执行将影响标志位AC,CY,OV,P。 溢出标志OV只有带符号数运算时才有用。,例:,2、带进位加法指令(条),ADDC A, Rn ;(A)+CY+(Rn)AADDC A, direct ; (A)+CY+(direct)AADDC A, Ri ; (A)+(Ri)+CYAADDC A,#data ;(A
24、)+#data+CYA,2、带进位加法指令(条),这组指令的功能是同时把源操作数所指出的内容和进位标志位CY都加到累加器A中, 结果存放在A中, 其余功能和ADD指令相同。当运算结果第3,7位产生进位或溢出时,分别置位AC,CY和OV标志位。 本指令的执行将影响标志位AC,CY,OV,P。本指令常用于多字节加法。,例:设(A)=0C3H,(R0)=0AAH,(CY)=1。执行指令“ADDC A,R0”后的结果及标志位如何?,例:编程,将(30H),(31H)单元中的数与 (40H),(41H)单元中的数相加,结果存于(30H),(31H)单元中。,、带借位减法指令(条),SUBB A, Rn
25、; (A)-CY-(Rn)ASUBB A, direct ;(A)-CY-(direct)ASUBB A, Ri ; (A)-CY-(Ri)ASUBB A,#data ;(A)-CY-#dataA,、带借位减法指令(条),这组指令的功能是, 从累加器A中减去源操作数所指出的内容及进位位CY的值,差保留在累加器A中。 由于89C51指令系统中没有不带借值的减法指令,如需要的话, 可以在“SUBB”指令前用“CLR C”指令将CY清0。 两个数相减,如果位7有借位,则CY置1,否则清0若位3有借位,则AC置1,否则清0。 两个带符号数相减,还要考查OV标志,若OV为l,表示差数溢出,即破坏了正确结
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机3 1ppt课件 单片机 ppt 课件
链接地址:https://www.31ppt.com/p-1552717.html