C51单片机指令系统.ppt
《C51单片机指令系统.ppt》由会员分享,可在线阅读,更多相关《C51单片机指令系统.ppt(117页珍藏版)》请在三一办公上搜索。
1、教学基本要求:(1)、了解单片机的指令系统、编程语言等基本概念;(2)、熟悉单片机汇编语言指令格式中符号的意义;(3)、熟悉单片机汇编语言指令系统每条指令的功能;(4)、掌握单片机指令系统的7种寻址方式;(5)、掌握单片机指令系统每类指令的用法。教学重点:(1)、单片机指令系统的寻址方式;(2)、片内、外RAM单元之间的数据传送;(3)、加法运算指令组的用法;(4)、逻辑运算指令组的用法;(5)、控制转移指令组的用法。,第3章 80C51单片机指令系统,教学难点:(1)、寄存器间接寻址、变址寻址、相对寻址等概念;(2)、堆栈操作指令的应用。(3)、十进制调整指令DA A的应用;(4)、控制转移
2、指令转移目的地址、偏移量rel的计算;(5)、子程序调用、返回指令的用法。,3.1 单片机指令系统概述,1、指令系统概述 指令:是供用户使用的单片机的软件资源,是单片机所能接受 的软件工作者的命令的最小工作单位。指令系统:单片机所能执行的指令集合。机器语言:指令以二进制码来表示。汇编语言:指令以助记符形式来表示。机器语言程序:使用机器语言编写的程序。汇编语言程序:使用汇编语言编写的程序。注意:MCS-51单片机指令系统不具有通用性,因此,用其编写 的汇编语言程序也不具有通用性,不能移植。,MCS-51系列单片机的汇编语言指令系统共有111条指令,其中49条为单字节指令,45条为双字节指令,17
3、条为三字节指令。从指令执行的时间来看,单机器周期指令64条,双机器周期指令45条,四机器周期指令2条。MCS-51单片机的指令系统共有33个功能,用汇编语言编程时,只需44个助记符。(1)、数据传送类指令(29条)(2)、算术运算类指令(24条)(3)、逻辑运算及移位类指令(24条)(4)、控制转移类指令(17条)(5)、位操作类指令(17条),2、MCS-51单片机指令格式,指令格式:即指令的表示方法,其内容包括指令的长度和指令内部信息的安排。采用助记符表示的汇编语言指令格式如下:,标号:操作码助记符 目的操作数,源操作数;注释,(1)一条指令中标号、操作数、注释部分可有可无,但操作码部分必
4、不可少。(2)标号是程序员根据编程需要给指令设定的符号地址,标号由18个字符组成,不能用系统规定的寄存器名,也不能用指令系统中的助记符名称,它的第一个字符必须是英文字,不能是数字或其它符号,标号后必须用冒号“:”。,(3)操作码表示指令的操作种类,用来规定指令进行什么操作,常用操作码的英文名称或缩写形式来表示,操作码后必须有一个或多哥空格“”作间隔符。例如:MOV 表示数据传送操作,ADD 表示加法操作。(4)操作数表示指令操作的对象,它可能是一个具体的数据,也可能是指出到哪里取得数据的地址或符号。一条指令中,可能没有(RET指令),也可能有一个(CPL A指令)、两个(MOV A,#00H指
5、令,MOV 30H,#50H指令)或三个(CJNE A,#00H,NEXT)操作数。根据操作数的位置的不同,可分为目的(左)操作数和源(右)操作数,操作数之间也以逗号“,”相隔(乘法指令MUL AB和除法指令DIV AB除外)。,(5)注释是对指令的解释说明,用以提高程序的可读性。注释前必须加分号“;”。(6)书写汇编语言指令必须注意以上规则。,3、指令格式中符号意义说明,Rn:当前寄存器组的8个通用寄存器R0R7(n=07)。Ri:当前寄存器组中的2个寄存器RO,R1,可作地址指针,即间接寻址的寄存器(i=0,1)。direct:内部RAM的8位地址,既可以是内部RAM的低128个单元地址(
6、0127),也可以是专用寄存器的单元地址或符号,如I/O端口,控制寄存器,状态寄存器等(128255)。#data:包含在指令中的8位立即数。#data16:包含在指令中的16位立即数。addr16:表示16位目的地址,只限于在LCALL和LJMP指令中使用,目的地址范围是64KB的程序存储器地址空间。,addr11:表示11位目的地址,只限于在ACALL和AJMP指令中使用,目的的地址必须存放在与下一条指令第一个字节同一个2KB程序存储器地址空间之内。Rel:相对转移指令中的偏移量,为8位带符号补码数。DPTR:数据指针,可用作16位的地址寄存器。Bit:内部RAM或专用寄存器中的直接寻址位
7、。A:累加器(直接寻址方式的累加器表示为Acc)B:B寄存器,用于MUL和DIV指令中。C:进位标志位或布尔处理机中的累加位。:为间址寄存器或基址寄存器的前缀标志。/:位操作数的前缀,表示对该位状态取反。(X):某寄存器或某单元中的内容。,(X):由X间接寻址的单元中的内容。:表示将箭头右边的内容传送至箭头的左边。,3.2 80C51单片机指令寻址方式,MCS-51单片机指令系统中的大多数指令执行时都需要使用操作数,而在单片机中只有指定了操作数的存储单元才能得到操作数,因此,要得到操作数,就只需找到操作数存放的单元即可。所谓寻址方式:即如何确定参与操作的数的真正单元。根据操作数单元指定方法的不
8、同,就有了不同的寻址方式。MCS-51单片机共有7种寻址方式。由于指令中的操作数有目的(左)操作数和源(右)操作数之分,因此,在讲解寻址方式时,均以源(右)操作数为例。(1)寄存器寻址方式 a)、寄存器寻址就是指操作数在寄存器中,因此,指定了寄存器就得到了操作数。,b)寄存器寻址的指令中,以符号名称来表示寄存器。例:假设原来(A)=30H,(R1)=40H,现执行指令MOV A,R1;指令功能:将R1中的内容(操作数)送A中;指令执行过程:A(R1);指令执行结果:(A)=(R1)=40H。c)寻址范围:1)当前工作寄存器组R0R7;2)部分专用寄存器A,AB,DPIR等。例:MOV P1,A
9、;将累加器A的内容送到P1口 MOV P1,R4;将寄存器R4的内容送到P1口 CLR A;将累加器A清0 CPL A;将累加器A中的内容取反 MUL AB;将累加器A的内容与寄存器B的内容相乘,(2)直接寻址方式 a)直接寻址即指令所需的操作数直接以操作数存放的单元地址的形式给出。例:假设内部RAM 3AH单元的内容是88H,累加器A的内容是10H,现执行指令 MOV A,3AH。指令功能:将3AH中的内容(操作数)送A中;指令执行过程:A(3AH);指令执行结果:(A)=(3AH)=88H。b)采用直接寻址的指令一般是双字节或三字节指令。c)直接寻址是访问专用寄存器的唯一方法。d)寻址范围
10、:1)内部RAM低128个单元,低128单元地址在指令中须以,直接单元地址形式给出;2)专用寄存器,专用寄存器除以单元地址形式给出外,还可以以寄存器符号的形式给出。例:MOV P1,20H;将内部RAM 20H单元的内容传送到P1口 MOV A,P0;将P0口的内容传送到A MOV A,80H;将P0口的内容传送到A(3)寄存器间接寻址方式 a)寄存器间接寻址是指指令所需的操作数是通过寄存器间接得到的,寄存器中存放的则是操作数存放的单元地址。例:假设内部RAM 3AH单元的内容是65H,寄存器R0的内容是3AH,现执行指令 MOV A,R0。指令功能:先将R0的内容3AH作为内部RAM的单元地
11、址,再将,内部RAM单元地址为3AH中的内容65H(操作数)送A中。指令执行过程:A(R0)或 A(3AH)指令执行结果:(A)=(R0)=(3AH)=65H。b)间址寄存器:R0、R1、DPTR、SP。指令中应在间址寄存器名之前加前缀,SP除外。c)寻址范围:1)内部RAM低128单元,可使用R0,R1作间址寄存器,其通用形式为Ri(I=0或1)。例:MOV A,R1;将R1指示的地址单元中内容传送至A中。假设(R1)=40H,(40H)=90H,即把内部RAM中40H单元中的内容90H送到A。,2)外部(片外)RAM 64KB单元,可使用DPTR作间址寄存器,其形式为DPTR。例:MOVX
12、 A,DPTR;将DPTR指示的外部RAM地址单元中的内容传送至A。假设(DPTR)=1000H,(1000H)=80H,即把外部RAM 1000H单元中的内容80H送到A。3)外部(片外)RAM的低256单元(0000H00FFH),它是一个特殊的寻址区,既可以使用DPTR作间址寄存器寻址,也可以使用R0或R1作间址寄存器寻址。例:假设外部RAM 0020H单元中的内容是45H,现需将其送A中。MOV DPTR,#0020H;MOVX A,DPTR 或 MOV R0,#20H;MOVX A,R0;,4)在执行堆栈操作指令(PUSH,POP)时,也算为寄存器间接寻址,即以堆栈指针(SP)作间址
13、寄存器的间接寻址方式。例:PUSH ACC;将A中的内容压入堆栈 POP ACC;将堆栈中的内容弹出,送到A(4)立即寻址方式 a)立即寻址即指令所需的操作数已在指令中直接给出。通常,把直接出现在指令中的操作数称之为立即数。为了与直接寻址指令中的直接单元地址相区别,一般应在立即数前面加“#”标志。b)采用立即寻址的指令,一般为双字节。第一个字节为指令的操作码,第二个字节为立即数。c)寻址范围:程序存储器空间。,例:MOV A,#40H;指令功能:将程序存储器中某单元的内容3AH(立即数)送A中 指令执行过程:A3AH 指令执行结果:(A)=3AH d)除8位立即数外,MCS-51指令系统中还有
14、一条16位立即寻址指令,即:MOV DPTR,#data16,其功能是把16位立即数送数据指针DPTR。例:MOV DPTR,#1000H;指令功能:将程序存储器中某单元的内容1000H(立即数)送DPTR中 MOV P1,#55H;将立即数55H送P1口 MOV 20H,#55H;将立即数55H送20H单元 MOV R0,#20H;将立即数20H送寄存器R0,(5)变址寻址方式 a)变址寻址用于访问程序存储器中的常数或数据表格。变址寻址即是以DPTR或PC作为基址寄存器,以累加器A为变址寄存器,并以两者的内容相加形成16位地址作为目的操作数地址,以达到访问程序存储器中的常数或数据表格的目的。
15、b)寻址范围:程序存储器空间。c)指令数目:三条,均为一字节指令 MOVC A,A+DPTR;指令执行过程:A(A)+(DPTR)指令执行结果:(A)=(A)+(DPTR)MOVC A,A+PC;指令执行过程:A(A)+(PC),指令执行结果:(A)=(A)+(PC)JMP A+DPTR 指令执行过程:PC(A)+(DPTR)指令执行结果:(PC)=(A)+(DPTR)d)注意:三条指令中A的内容均为8位二进制无符号数。,(6)位寻址方式 a)位寻址即对二进制数据位进行寻址。b)寻址范围:1)、内部RAM中的位寻址区(单元地址20H2FH),128个位,位地址是00H7FH。位地址区中的位有两
16、种表示方法:直接使用位地址表示;单元地址加位数表示 例:MOV C,20H;将位地址为20H的位状态传送给累加位C。例:MOV C,24H.0;将位地址为20H的位状态传累加位C。例:SETB 3DH;将内部RAM位寻址区中的3DH位置1。假设内部RAM 27H单元的内容是00H,执行SETB 3DH后,由于3DH对应内部RAM 27H的第5位,因此该位变为1,也就是27H单元的内容变为20H。该指令的执行过程如图所示。,2)、专用寄存器的可寻址位 可供位寻址的专用寄存器有11个,PSW,IP IE,PO,P1,P2,P3,SCON,A,TCON,B,实有可寻址位83位。专用寄存器的可寻址位有
17、四种表示方法:直接使用位地址表示例:MOV C,D5H;将PSW中位地址为D5H的位状态传给累加位C 单元地址加位数表示例:MOV C,D0H.5;将PSW中位地址为D5H的位状态传给累加位C 位名称表示例:MOV C,F0;将PSW中位地址为D5H的位状态传给累加位C 专用寄存器符号加位数表示例:MOV C,PSW.5;将PSW中位地址为D5H的位状态传给累加位C,(7)相对寻址方式 a)相对寻址是为解决程序转移而设置的,为转移指令所用。相对寻址是将程序计数器PC的当前值与指令中给出的地址偏移量(rel)相加,其和为转移指令的目的地址。注意:PC当前值是指执行完该转移指令后的PC值,即转移指
18、令的PC值加上转移指令的字节数。转移指令转移到的目的地址=转移指令PC当前值+偏移量rel=转移指令首地址+转移指令字节数+rel。偏移量rel是一个带符号的8位二进制补码数,所能表示数的范围为-128+127。b)寻址范围:程序存储器空间 具体地说,相对转移是以转移指令所在地址为基点,向前,(地址增加方向)最大可转移(127+转移指令字节数)个单元地址,向后(地址减少方向)最大可转移(128-转移指令字节数)个单元地址。,3.3 80C51单片机指令分类介绍,MCS-51单片机指令系统包括111条指令,按功能可以划分为以下5类:数据传送类指令(29条);算术运算类指令(24条);逻辑运算类指
19、令(24条);控制转移类指令(17条);位操作类指令(17条);,3.3.1 数据传送类指令,a)指令数目:29条;b)指令通用格式:助记符操作码 目的操作数,源操作数;c)指令功能:数据传送,属于数据复制性质;d)助记符类型(8种):MOV,MOVC,MOVX XCH,XCHD,SWAP,PUSH,POP e)寻址方式 源操作数:寄存器,寄存器间接、直接、立即、变址寻址;目的操作数:寄存器,寄存器间接、直接寻址,1、内部RAM数据传送指令组 a)立即数传送指令,例:MOV A,#20H;指令执行后(A)=20H例:MOV 20H,#20H;指令执行后(20H)=20H例:MOV SP,#60
20、H;指令执行后(SP)=60H例:MOV B,#30H;指令执行后(B)=30H,例:MOV R1,#20H;指令执行后(R1)=20H例:MOV R0,#20H;指令执行后(R0)=20H MOV R0,#30H;指令执行后((R0))=30H或(20H)=30H例:MOV DPTR,#1020H;指令执行后(DPTR)=1020H;(DPH)=10H,(DPL)=20H 本指令是三字节指令,第一个字节是操作码信息,第二、第三字节分别是操作数(立即数)的高、低8位信息,其二进制目标代码存放格式如下:,b)内部RAM单元之间的数据传送指令,例:MOV 30H,20H;指令执行后(30H)=(2
21、0H)例:MOV P1,20H;指令执行后(P1)=(20H)例:MOV P2,P0;指令执行后(P2)=(P0)例:MOV 40H,P3;指令执行后(40H)=(P3)例:MOV 0A0H,R7;指令执行后(P2)=(R7)例:MOV PSW,R1;指令执行后(PSW)=(R1),例:MOV R2,20H;指令执行后(R2)=(20H)例:MOV R3,B;指令执行后(R3)=(B)例:MOV 40H,R0;指令执行后(40H)=(R0)例:MOV P0,R1;指令执行后(P0)=(R1)例:MOV R0,0A0H;指令执行后(R0)=(P2)例:MOV R1,30H;指令执行后(R1)=(
22、30H)c)通过累加器的数据传送指令,例:MOV A,R0;指令执行后(A)=(R0)例:MOV R3,A;指令执行后(R3)=(A)例:MOV A,B;指令执行后(A)=(B)例:MOV A,40H;指令执行后(A)=(40H)例:MOV PSW,A;指令执行后(PSW)=(A)例:MOV 60H,A;指令执行后(60H)=(A)例:MOV A,R0;指令执行后(A)=(R0)例:MOV R1,A;指令执行后(R1)=(A),(3)外部RAM数据传送指令组,例:将外部RAM 2000H单元的内容20H送至A中。MOV DPTR,#2000H;外部RAM 2000H单元地址作为16位立 即数送
23、数据指针DPTR MOVX A,DPTR;外部RAM 2000H单元的内容20H送A(A)=(DPTR)=(2000H)=20H,例:将累加器A中的内容40H送至外部RAM 4000H单元中。MOV DPTR,#4000H;外部RAM 4000H单元地址作为16位立 即数送数据指针DPTR MOVX DPTR,A;A的内容40H送外部RAM 4000H单元(DPTR)=(4000H)=(A)=40H,例:将外部RAM 0050H单元的内容20H送至A中。a)MOV DPTR,#0050H;外部RAM 0050H单元地址作为16位立 即数送数据指针DPTR MOVX A,DPTR;外部RAM 0
24、050H单元的内容20H送A(A)=(DPTR)=(2000H)=20H b)MOV R0,#50H;外部RAM 0050H单元地址作为8位立 即数送间址寄存器R0 MOVX A,R0;外部RAM 0050H单元的内容20H送A(A)=(R0)=(50H)=20H例:将累加器A中的内容40H送至外部RAM 0050H单元中。a)MOV DPTR,#0050H;外部RAM 0050H单元地址作为16位立 即数送数据指针DPTR,MOVX DPTR,A;A的内容40H送外部RAM 0050H单元(DPTR)=(0050H)=(A)=40H b)MOV R1,#50H;外部RAM 0050H单元地址
25、作为8位立 即数送间址寄存器R1 MOVX R1,A;A的内容40H送外部RAM 0050H单元(R1)=(50H)=(A)=40H,例:将内部RAM 60H单元的内容40H送至外部RAM 4000H单元中。MOV A,60H;将60H单元的内容40H先送A中,(A)=40H MOV DPTR,#4000H;外部RAM 4000H单元地址送DPTR MOVX DPTR,A;A的内容40H送外部RAM 4000H单元(DPTR)=(4000H)=(A)=40H,例:将外部RAM 4000H单元的内容40H送至内部RAM 60H单元中。MOV DPTR,#4000H;外部RAM 4000H单元地址
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C51 单片机 指令系统
链接地址:https://www.31ppt.com/p-5417002.html