




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、教学基本要求:教学基本要求:(1 1)、了解单片机的指令系统、编程语言等基本概念;)、了解单片机的指令系统、编程语言等基本概念;(2 2)、熟悉单片机汇编语言指令格式中符号的意义;)、熟悉单片机汇编语言指令格式中符号的意义;(3 3)、熟悉单片机汇编语言指令系统每条指令的功能;)、熟悉单片机汇编语言指令系统每条指令的功能;(4 4)、掌握单片机指令系统的)、掌握单片机指令系统的7 7种寻址方式;种寻址方式;(5 5)、掌握单片机指令系统每类指令的用法。)、掌握单片机指令系统每类指令的用法。教学重点:教学重点:(1 1)、单片机指令系统的寻址方式;)、单片机指令系统的寻址方式;(2 2)、片内、
2、外)、片内、外RAMRAM单元之间的数据传送;单元之间的数据传送;(3 3)、加法运算指令组的用法;)、加法运算指令组的用法;(4 4)、逻辑运算指令组的用法;)、逻辑运算指令组的用法;(5 5)、控制转移指令组的用法。)、控制转移指令组的用法。第3 3章 80C5180C51单片机指令系统教学难点:教学难点:(1 1)、寄存器间接寻址、变址寻址、相对寻址等概念;)、寄存器间接寻址、变址寻址、相对寻址等概念;(2 2)、堆栈操作指令的应用。)、堆栈操作指令的应用。(3 3)、十进制调整指令)、十进制调整指令DA ADA A的应用;的应用;(4 4)、控制转移指令转移目的地址、偏移量)、控制转移
3、指令转移目的地址、偏移量relrel的计算;的计算;(5 5)、子程序调用、返回指令的用法。)、子程序调用、返回指令的用法。3.1 3.1 单片机指令系统概述1 1、指令系统概述、指令系统概述 指令指令: :是供用户使用的单片机的软件资源,是单片机所能接受是供用户使用的单片机的软件资源,是单片机所能接受 的软件工作者的命令的最小工作单位。的软件工作者的命令的最小工作单位。 指令系统指令系统: :单片机所能执行的指令集合。单片机所能执行的指令集合。 机器语言机器语言: :指令以二进制码来表示。指令以二进制码来表示。 汇编语言汇编语言: :指令以助记符形式来表示。指令以助记符形式来表示。 机器语言
4、程序机器语言程序: :使用机器语言编写的程序。使用机器语言编写的程序。 汇编语言程序汇编语言程序: :使用汇编语言编写的程序。使用汇编语言编写的程序。 注意:注意:MCS-51MCS-51单片机指令系统不具有通用性,因此,用其编写单片机指令系统不具有通用性,因此,用其编写 的汇编语言程序也不具有通用性,不能移植。的汇编语言程序也不具有通用性,不能移植。 MCS-51MCS-51系列单片机的汇编语言指令系统共有系列单片机的汇编语言指令系统共有111111条指令条指令, ,其中其中4949条为单字节指令条为单字节指令,45,45条为双字节指令条为双字节指令,17,17条为三字节指令。条为三字节指令
5、。 从指令执行的时间来看从指令执行的时间来看, ,单机器周期指令单机器周期指令6464条条, ,双机器周期指令双机器周期指令4545条条, ,四机器周期指令四机器周期指令2 2条。条。 MCS-51MCS-51单片机的指令系统共有单片机的指令系统共有3333个功能个功能, ,用汇编语言编程时用汇编语言编程时, ,只只需需4444个助记符。个助记符。 (1 1)、数据传送类指令()、数据传送类指令(2929条)条) (2 2)、算术运算类指令()、算术运算类指令(2424条)条) (3 3)、逻辑运算及移位类指令()、逻辑运算及移位类指令(2424条)条) (4 4)、控制转移类指令()、控制转
6、移类指令(1717条)条) (5 5)、位操作类指令()、位操作类指令(1717条)条) 2 2、MCS-51MCS-51单片机指令格式 指令格式:即指令的表示方法,其内容包括指令的长度和指令指令格式:即指令的表示方法,其内容包括指令的长度和指令内部信息的安排。内部信息的安排。采用助记符表示的汇编语言指令格式如下:采用助记符表示的汇编语言指令格式如下: 标号:标号: 目的操作数目的操作数 , 源操作数源操作数 ;注释;注释 (1 1)一条指令中标号、操作数、注释部分可有可无,但操作码一条指令中标号、操作数、注释部分可有可无,但操作码部分必不可少。部分必不可少。(2 2)标号是程序员根据编程需要
7、给指令设定的符号地址,标号)标号是程序员根据编程需要给指令设定的符号地址,标号由由1 18 8个字符组成,不能用系统规定的寄存器名,也不能用指令个字符组成,不能用系统规定的寄存器名,也不能用指令系统中的助记符名称,它的第一个字符必须是英文字,不能是数系统中的助记符名称,它的第一个字符必须是英文字,不能是数字或其它符号,标号后必须用冒号字或其它符号,标号后必须用冒号“:”。(3 3)操作码操作码表示指令的操作种类,表示指令的操作种类,用来规定指令进行什么操作用来规定指令进行什么操作,常用常用操作码操作码的英文名称或缩写形式来表示,的英文名称或缩写形式来表示,操作码操作码后必须有一个后必须有一个或
8、多或多个个空格空格“ ”“ ”作间隔符。作间隔符。 例如:例如:MOV MOV 表示数据传送操作,表示数据传送操作,ADD ADD 表示加法操作。表示加法操作。(4 4)操作数表示指令操作的对象,它可能是一个具体的数据操作数表示指令操作的对象,它可能是一个具体的数据,也可能是指出到哪里取得数据的地址或符号也可能是指出到哪里取得数据的地址或符号。 一条指令中,可能没有(一条指令中,可能没有(RETRET指令),也可能有一个(指令),也可能有一个(CPL CPL A A指令)、两个(指令)、两个(MOV A,#00HMOV A,#00H指令,指令, MOV 30H,#50H MOV 30H,#50
9、H指令)或三指令)或三个(个(CJNE A,#00H,NEXTCJNE A,#00H,NEXT)操作数。)操作数。 根据操作数的位置的不同,可分为目的(左)操作数和源根据操作数的位置的不同,可分为目的(左)操作数和源(右)操作数,(右)操作数,操作数之间也以逗号操作数之间也以逗号“,”相隔(相隔(乘法指令乘法指令MUL ABMUL AB和除法指令和除法指令DIV ABDIV AB除外)。除外)。(5 5)注释是对指令的解释说明,用以提高程序的可读性。注释注释是对指令的解释说明,用以提高程序的可读性。注释前必须加分号前必须加分号“;”。 (6)书写汇编语言指令必须注意以上规则。)书写汇编语言指令
10、必须注意以上规则。 3 3、指令格式中符号意义说明 RnRn:当前寄存器组的:当前寄存器组的8 8个通用寄存器个通用寄存器R0R0R7R7(n=0n=07 7)。)。 RiRi:当前寄存器组中的:当前寄存器组中的2 2个寄存器个寄存器RORO,R1R1,可作地址指针,即,可作地址指针,即间接寻址的寄存器(间接寻址的寄存器(i=0,1i=0,1)。)。 direct:direct:内部内部RAMRAM的的8 8位地址,既可以是内部位地址,既可以是内部RAMRAM的低的低128128个单元个单元地址(地址(0 0127127),也可以是专用寄存器的单元地址或符号,如),也可以是专用寄存器的单元地址
11、或符号,如I/OI/O端口,控制寄存器,状态寄存器等(端口,控制寄存器,状态寄存器等(128128255255)。)。 #data:#data:包含在指令中的包含在指令中的8 8位立即数。位立即数。 #data16:#data16:包含在指令中的包含在指令中的1616位立即数。位立即数。 addr16:addr16:表示表示1616位目的地址,只限于在位目的地址,只限于在LCALLLCALL和和LJMPLJMP指令中使用,指令中使用,目的地址范围是目的地址范围是64KB64KB的程序存储器地址空间。的程序存储器地址空间。 addr11addr11:表示:表示1111位目的地址,只限于在位目的地
12、址,只限于在ACALLACALL和和AJMPAJMP指令中使指令中使用,目的的地址必须存放在与下一条指令第一个字节同一个用,目的的地址必须存放在与下一条指令第一个字节同一个2KB2KB程序存储器地址空间之内。程序存储器地址空间之内。 Rel:Rel:相对转移指令中的偏移量,为相对转移指令中的偏移量,为8 8位带符号补码数。位带符号补码数。 DPTRDPTR:数据指针,可用作:数据指针,可用作1616位的地址寄存器。位的地址寄存器。 Bit:Bit:内部内部RAMRAM或专用寄存器中的直接寻址位。或专用寄存器中的直接寻址位。 A A:累加器(直接寻址方式的累加器表示为:累加器(直接寻址方式的累加
13、器表示为AccAcc) B B:B B寄存器,用于寄存器,用于MULMUL和和DIVDIV指令中。指令中。 C C:进位标志位或布尔处理机中的累加位。:进位标志位或布尔处理机中的累加位。 :为间址寄存器或基址寄存器的前缀标志。:为间址寄存器或基址寄存器的前缀标志。 / /:位操作数的前缀,表示对该位状态取反。:位操作数的前缀,表示对该位状态取反。 (X X):某寄存器或某单元中的内容。):某寄存器或某单元中的内容。 (X X):由):由X X间接寻址的单元中的内容。间接寻址的单元中的内容。 :表示将箭头右边的内容传送至箭头的左边。:表示将箭头右边的内容传送至箭头的左边。 3.2 80C513.
14、2 80C51单片机指令寻址方式 MCS-51MCS-51单片机指令系统中的大多数指令执行时都需要使用操作单片机指令系统中的大多数指令执行时都需要使用操作数,而在单片机中只有指定了操作数的存储单元才能得到操作数,数,而在单片机中只有指定了操作数的存储单元才能得到操作数,因此,要得到操作数,就只需找到操作数存放的单元即可。因此,要得到操作数,就只需找到操作数存放的单元即可。 所谓寻址方式:即如何确定参与操作的数的真正所谓寻址方式:即如何确定参与操作的数的真正单元。单元。 根据操作数单元指定方法的不同,就有了不同的寻址方式。根据操作数单元指定方法的不同,就有了不同的寻址方式。 MCS-51MCS-
15、51单片机共有单片机共有7 7种寻址方式。种寻址方式。 由于指令中的操作数有目的(左)操作数和源(右)操作数之由于指令中的操作数有目的(左)操作数和源(右)操作数之分,因此,在讲解寻址方式时,均以源(右)操作数为例。分,因此,在讲解寻址方式时,均以源(右)操作数为例。(1 1)寄存器寻址方式)寄存器寻址方式 a a)、寄存器寻址就是指操作数在寄存器中,因此,指定了)、寄存器寻址就是指操作数在寄存器中,因此,指定了寄存器就得到了操作数。寄存器就得到了操作数。 b b)寄存器寻址的指令中寄存器寻址的指令中,以符号名称来表示寄存器以符号名称来表示寄存器。例例: : 假设原来(假设原来(A A)=30
16、H=30H,(,(R1R1)=40H=40H,现执行指令,现执行指令MOV AMOV A, R1 R1; 指令功能指令功能: :将将R1R1中的内容中的内容( (操作数操作数) )送送A A中;中; 指令执行过程:指令执行过程:AA(R1R1);); 指令执行结果指令执行结果:(A)=(A)=(R1R1)=40H=40H。 c c)寻址范围:)寻址范围:1 1)当前工作寄存器组)当前工作寄存器组R0R0R7R7; 2 2)部分专用寄存器)部分专用寄存器A A,ABAB,DPDPT TR R等。等。例:例:MOV P1, AMOV P1, A; 将累加器将累加器A A的内容送到的内容送到P1P1
17、口口 MOV P1, R4 MOV P1, R4;将寄存器;将寄存器R4R4的内容送到的内容送到P1P1口口 CLR A CLR A; 将累加器将累加器A A清清0 0 CPL A CPL A; 将累加器将累加器A A中的内容取反中的内容取反 MUL AB MUL AB; 将累加器将累加器A A的内容与寄存器的内容与寄存器B B的内容相乘的内容相乘(2 2)直接寻址方式)直接寻址方式 a a)直接寻址即指令所需的操作数直接以操作数存放的单元)直接寻址即指令所需的操作数直接以操作数存放的单元地址的形式给出。地址的形式给出。例:假设内部例:假设内部RAM 3AHRAM 3AH单元的内容是单元的内容
18、是88H88H,累加器,累加器A A的内容是的内容是10H10H,现执行指令现执行指令 MOV AMOV A,3AH3AH。 指令功能指令功能: :将将3AH3AH中的内容中的内容( (操作数操作数) )送送A A中;中; 指令执行过程:指令执行过程:AA(3AH3AH);); 指令执行结果指令执行结果:(A)=(A)=(3AH3AH)=88H=88H。 b b)采用直接寻址的指令一般是双字节或三字节指令采用直接寻址的指令一般是双字节或三字节指令。 c c)直接寻址是访问专用寄存器的唯一方法。直接寻址是访问专用寄存器的唯一方法。 d d)寻址范围寻址范围: 1 1)内部内部RAMRAM低低12
19、8128个单元个单元,低低128128单元单元地址地址在指令中在指令中须须以以直接单元地址形式给出;直接单元地址形式给出; 2 2)专用寄存器,专用寄存器除以单元地址形式给出外,)专用寄存器,专用寄存器除以单元地址形式给出外,还可以以寄存器符号的形式给出。还可以以寄存器符号的形式给出。例:例:MOV P1, 20HMOV P1, 20H;将内部;将内部RAM 20HRAM 20H单元的内容传送到单元的内容传送到P1P1口口 MOV AMOV A, P0P0; 将将P0P0口的内容传送到口的内容传送到A A MOV A MOV A, 80H80H;将;将P0P0口的内容传送到口的内容传送到A A
20、(3 3)寄存器间接寻址方式)寄存器间接寻址方式 a a)寄存器间接寻址是指指令所需的操作数是通过寄存器间)寄存器间接寻址是指指令所需的操作数是通过寄存器间接得到的,寄存器中存放的则是操作数存放的单元地址。接得到的,寄存器中存放的则是操作数存放的单元地址。例:假设内部例:假设内部RAM 3AHRAM 3AH单元的内容是单元的内容是65H65H,寄存器,寄存器R0R0的内容是的内容是3AH3AH,现执行指令现执行指令 MOV AMOV A, R0R0。 指令功能指令功能: :先将先将R0R0的内容的内容3AH3AH作为内部作为内部RAMRAM的单元地址,再将的单元地址,再将内部内部RAMRAM单
21、元地址为单元地址为3AH3AH中的内容中的内容65H(65H(操作数操作数) )送送A A中。中。 指令执行过程:指令执行过程: AA(R0R0)或)或 AA(3AH3AH) 指令执行结果指令执行结果:(A)=(A)=(R0R0)= =(3AH3AH)=65H=65H。 b b)间址寄存器:)间址寄存器:R0R0、R1R1、DPTRDPTR、SPSP。 指令中应在间址寄存器名之前加前缀指令中应在间址寄存器名之前加前缀,SP,SP除外除外。 c c)寻址范围:)寻址范围: 1 1)内部)内部RAMRAM低低128128单元,可使用单元,可使用R0R0,R1R1作间址寄存器,作间址寄存器,其其通用
22、形式为通用形式为Ri(I=0Ri(I=0或或1 1) )。例:例:MOV AMOV A, R1 R1 ;将;将R1R1指示的地址单元中内容传送至指示的地址单元中内容传送至A A中。中。 假设(假设(R1R1)=40H=40H,(,(40H40H)=90H=90H,即把内部,即把内部RAMRAM中中40H40H单元中单元中的内容的内容90H90H送到送到A A。 2 2)外部(片外)外部(片外)RAM 64KBRAM 64KB单元,可使用单元,可使用DPTRDPTR作间址寄存作间址寄存器,器,其形式为其形式为DPTRDPTR。 例:例:MOVX AMOVX A, DPTRDPTR;将;将DPTR
23、DPTR指示的外部指示的外部RAMRAM地址单元中的地址单元中的内容传送至内容传送至A A。 假设(假设(DPTRDPTR)=1000H=1000H,(,(1000H1000H)=80H=80H,即把外部,即把外部RAM 1000HRAM 1000H单元中的内容单元中的内容80H80H送到送到A A。 3 3)外部(片外)外部(片外)RAMRAM的低的低256256单元(单元(0000H0000H00FFH00FFH),它),它是一个特殊的寻址区,既可以使用是一个特殊的寻址区,既可以使用DPTRDPTR作间址寄存器寻址,也可作间址寄存器寻址,也可以使用以使用R0R0或或R1R1作间址寄存器寻址
24、。作间址寄存器寻址。 例:假设外部例:假设外部RAM 0020HRAM 0020H单元中的内容是单元中的内容是45H45H,现需将其送,现需将其送A A中。中。 MOV DPTRMOV DPTR, #0020H#0020H; MOVX AMOVX A, DPTRDPTR 或或 MOV R0MOV R0, #20H#20H; MOVX AMOVX A, R0R0; 4 4)在执行堆栈操作指令(在执行堆栈操作指令(PUSHPUSH,POPPOP)时,也算为寄存器)时,也算为寄存器间接寻址间接寻址 ,即以堆栈指针(,即以堆栈指针(SPSP)作间址寄存器的间接寻址方式。)作间址寄存器的间接寻址方式。
25、例:例:PUSH ACCPUSH ACC;将;将A A中的内容压入堆栈中的内容压入堆栈 POP ACCPOP ACC;将堆栈中的内容弹出,送到;将堆栈中的内容弹出,送到A A(4 4)立即寻址方式)立即寻址方式 a a)立即寻址即立即寻址即指令所需的指令所需的操作数操作数已已在指令中直接给出。在指令中直接给出。 通常,把通常,把直接直接出现在指令中的操作出现在指令中的操作数数称之为立即数。为了称之为立即数。为了与直接寻址指令中的直接与直接寻址指令中的直接单元单元地址相区别,地址相区别,一般应一般应在立即数前面在立即数前面加加“#”#”标志。标志。 b b)采用立即寻址的指令,一般为双字节。第一
26、个字节为指采用立即寻址的指令,一般为双字节。第一个字节为指令的操作码,第二个字节为立即数。令的操作码,第二个字节为立即数。 c c)寻址范围:程序存储器寻址范围:程序存储器空间空间。 例:例:MOV AMOV A, #40H#40H; 指令功能指令功能: :将程序存储器中某单元的内容将程序存储器中某单元的内容3AH (3AH (立即数立即数) )送送A A中中 指令执行过程:指令执行过程: A3AHA3AH 指令执行结果:指令执行结果:(A)=(A)=3AH3AH d d)除除8 8位立即数外,位立即数外,MCS-51MCS-51指令系统中还有一条指令系统中还有一条1616位立即寻位立即寻址指
27、令,即:址指令,即:MOV DPTRMOV DPTR,#data16#data16,其功能是把,其功能是把1616位立即数送位立即数送数据指针数据指针DPTRDPTR。 例:例:MOV DPTRMOV DPTR, #1000H#1000H;指令功能指令功能: :将程序存储器中某单元的内容将程序存储器中某单元的内容1000H(1000H(立即数立即数) )送送DPTRDPTR中中 MOV P1, #55HMOV P1, #55H ;将立即数;将立即数55H55H送送P1P1口口 MOVMOV 20H, #55H 20H, #55H ;将立即数;将立即数55H55H送送20H20H单元单元 MOV
28、MOV R0, #20H R0, #20H ;将立即数;将立即数20H20H送寄存器送寄存器R0R0(5 5)变址寻址方式)变址寻址方式 a a)变址寻址变址寻址用于访问程序存储器中的常数或数据表格。用于访问程序存储器中的常数或数据表格。 变址寻址即是以变址寻址即是以DPTRDPTR或或PCPC作为基址寄存器,以累加器作为基址寄存器,以累加器A A为为变址寄存器,并以两者的内容相加形成变址寄存器,并以两者的内容相加形成1616位地址作为位地址作为目的目的操作数操作数地址地址,以达到访问程序存储器中的常数或数据表格的目的,以达到访问程序存储器中的常数或数据表格的目的。 b b)寻址范围寻址范围:
29、程序存储器程序存储器空间空间。 c c)指令数目)指令数目:三条,均为一字节指令三条,均为一字节指令 MOVC AMOVC A, A+DPTRA+DPTR; 指令执行过程:指令执行过程: AA(A A)+ +(DPTRDPTR) 指令执行结果:(指令执行结果:(A A)= =(A A)+ +(DPTRDPTR) MOVC A, A+PCMOVC A, A+PC; 指令执行过程:指令执行过程: AA(A A)+ +(PCPC) 指令执行结果:(指令执行结果:(A A)= =(A A)+ +(PCPC) JMP A+DPTRJMP A+DPTR 指令执行过程:指令执行过程: PCPC(A A)+
30、+(DPTRDPTR) 指令执行结果:(指令执行结果:(PCPC)= =(A A)+ +(DPTRDPTR) d d)注意:三条指令中)注意:三条指令中A A的内容均为的内容均为8 8位二进制无符号数。位二进制无符号数。 (6 6)位寻址方式)位寻址方式 a a)位寻址即对二进制数据位进行寻址。)位寻址即对二进制数据位进行寻址。 b b)寻址范围:)寻址范围: 1)1)、内部、内部RAMRAM中的位寻址区(单元地址中的位寻址区(单元地址20H20H2FH2FH),),128128个个位,位地址是位,位地址是00H00H7FH7FH。位地址区中的位有两种表示方法:。位地址区中的位有两种表示方法:
31、 直接使用位地址表示;单元地址加位数表示直接使用位地址表示;单元地址加位数表示 例:例:MOV CMOV C, 20H20H;将位地址为;将位地址为20H20H的位状态传送给累加位的位状态传送给累加位C C。 例:例:MOV CMOV C, 24H.024H.0;将位地址为;将位地址为20H20H的位状态传累加位的位状态传累加位C C。 例:例:SETB 3DHSETB 3DH;将内部;将内部RAMRAM位寻址区中的位寻址区中的3DH3DH位置位置1 1。 假设内部假设内部RAM 27HRAM 27H单元的内容是单元的内容是00H00H,执行,执行SETB 3DHSETB 3DH后,由于后,由
32、于3DH3DH对应内部对应内部RAM 27HRAM 27H的第的第5 5位,因此该位变为位,因此该位变为1 1,也就是,也就是27H27H单元单元的内容变为的内容变为20H20H。该指令的执行过程如图所示。该指令的执行过程如图所示。 2)2)、专用寄存器的可寻址位、专用寄存器的可寻址位 可供位寻址的专用寄存器有可供位寻址的专用寄存器有1111个,个,PSWPSW,IP IEIP IE,POPO,P1P1,P2P2,P3P3,SCONSCON,A A,TCONTCON,B B,实有可寻址位,实有可寻址位8383位。位。 专用寄存器的可寻址位有四种表示方法:专用寄存器的可寻址位有四种表示方法: 直
33、接使用位地址表示直接使用位地址表示例:例:MOV CMOV C,D5HD5H;将;将PSWPSW中位地址为中位地址为D5HD5H的位状态传给累加位的位状态传给累加位C C 单元地址加位数表示单元地址加位数表示例:例:MOV CMOV C,D0H.5D0H.5;将;将PSWPSW中位地址为中位地址为D5HD5H的位状态传给累加位的位状态传给累加位C C 位名称表示位名称表示例:例:MOV CMOV C, F0F0;将;将PSWPSW中位地址为中位地址为D5HD5H的位状态传给累加位的位状态传给累加位C C 专用寄存器符号加位数表示专用寄存器符号加位数表示例:例:MOV CMOV C,PSW.5P
34、SW.5;将;将PSWPSW中位地址为中位地址为D5HD5H的位状态传给累加位的位状态传给累加位C C(7 7)相对寻址方式)相对寻址方式 a a)相对寻址是相对寻址是为解决程序转移而设置的,为转移指令所用。为解决程序转移而设置的,为转移指令所用。 相对寻址是将程序计数器相对寻址是将程序计数器PCPC的当前的当前值值与指令与指令中给出的地址中给出的地址偏偏移量移量(relrel)相加,其和为转移指令的目的地址。相加,其和为转移指令的目的地址。 注意:注意:PCPC当前值是指执行完该转移指令后的当前值是指执行完该转移指令后的PCPC值,即转移指值,即转移指令的令的PCPC值加上转移指令的字节数。
35、值加上转移指令的字节数。 转移指令转移转移指令转移到的目的地址到的目的地址= =转移指令转移指令PCPC当前值当前值+ +偏移量偏移量relrel= =转移指令转移指令首首地址地址+ +转移指令字节数转移指令字节数+rel+rel。 偏移量偏移量relrel是一个带符号的是一个带符号的8 8位二进制补码数,所能表示数的位二进制补码数,所能表示数的范围范围为为-128-128+127+127。 b b)寻址范围:)寻址范围:程序存储器程序存储器空间空间 具体地说,相对转移是以转移指令所在地址为基点,向前具体地说,相对转移是以转移指令所在地址为基点,向前 (地址增加方向)最大可转移(地址增加方向)
36、最大可转移(127+127+转移指令字节数)个单元地转移指令字节数)个单元地址,向后(地址减少方向)最大可转移(址,向后(地址减少方向)最大可转移(128-128-转移指令字节数)转移指令字节数)个单元地址。个单元地址。3.3 80C513.3 80C51单片机指令分类介绍 MCS-51MCS-51单片机指令系统包括单片机指令系统包括111111条指令,按功能可以划分为条指令,按功能可以划分为以下以下5 5类:类: 数据传送类指令(数据传送类指令(2929条);条); 算术运算类指令(算术运算类指令(2424条);条); 逻辑运算类指令(逻辑运算类指令(2424条);条); 控制转移类指令(控
37、制转移类指令(1717条);条); 位操作类指令(位操作类指令(1717条);条);3.3.1 3.3.1 数据传送类指令 a a)指令数目:)指令数目:2929条条; b b)指令通用格式:)指令通用格式: 助记符操作码助记符操作码 目的操作数,目的操作数, 源操作数;源操作数; c c)指令功能:数据传送,属于数据复制性质;)指令功能:数据传送,属于数据复制性质; d d)助记符类型()助记符类型(8 8种):种): MOVMOV, MOVCMOVC, MOVXMOVX XCHXCH, XCHDXCHD, SWAPSWAP, PUSHPUSH, POPPOP e e)寻址方式)寻址方式 源
38、操作数源操作数:寄存器,寄存器间接、直接、立即、变址寄存器,寄存器间接、直接、立即、变址寻址;寻址; 目的目的操作数操作数:寄存器,寄存器间接、直接寄存器,寄存器间接、直接寻址寻址1 1、内部、内部RAMRAM数据传送指令组数据传送指令组 a a)立即数传送指令)立即数传送指令指令格式相应操作操作结果说明MOV AMOV A, #data #data Adata Adata (A A)=data=dataMOV direct, #data MOV direct, #data directdata directdata (directdirect)=data=dataMOV RnMOV Rn,
39、#data #data Rndata Rndata ( Rn Rn )=data=datan=0n=07 7MOV Ri, #dataMOV Ri, #data(Ri)data(Ri)data( RiRi)=data=datai=0,1i=0,1MOV DPTRMOV DPTR,#data16 #data16 DPTRdata16 DPTRdata16 (DPTRDPTR)=data16=data16例:例:MOV A, #20HMOV A, #20H; 指令执行后(指令执行后(A A)=20H=20H例:例:MOV 20HMOV 20H, #20H#20H;指令执行后(;指令执行后(20H2
40、0H)=20H=20H例:例:MOV SPMOV SP, #60H#60H;指令执行后(;指令执行后(SPSP)=60H=60H例:例:MOV BMOV B, #30H#30H;指令执行后(;指令执行后(B B)=30H=30H例:例:MOV R1, #20HMOV R1, #20H; 指令执行后(指令执行后(R1R1)=20H=20H例:例:MOV R0, #20HMOV R0, #20H; 指令执行后(指令执行后(R0R0)=20H=20H MOV R0, #30H MOV R0, #30H; 指令执行后指令执行后( ((R0R0))=30H)=30H或(或(20H)=30H20H)=30
41、H例:例:MOV DPTRMOV DPTR, #1020H#1020H; 指令执行后指令执行后(DPTR)= 1020H(DPTR)= 1020H; (DPHDPH)=10H=10H, (DPLDPL)=20H=20H 本指令是三字节指令,第一个字节是操作码信息,第二、第本指令是三字节指令,第一个字节是操作码信息,第二、第三字节分别是操作数(立即数)的高、低三字节分别是操作数(立即数)的高、低8 8位信息,其二进制目位信息,其二进制目标代码存放格式如下:标代码存放格式如下:操作码1001000010010000程序存储器立即数高8 8位(DPHDPH)0001000000010000立即数低8
42、 8位(DPLDPL)0010000000100000 b b)内部)内部RAMRAM单元之间的数据传送指令单元之间的数据传送指令指令格式相应操作操作结果MOV direct2MOV direct2, direct1direct1direct2(direct1) direct2(direct1) (direct2direct2)=(direct1)=(direct1)MOV direct, RnMOV direct, Rndirect(Rn) direct(Rn) (directdirect)=(Rn)=(Rn)MOV RnMOV Rn, directdirectRn(direct)Rn(di
43、rect)(RnRn)=(direct)=(direct)MOV direct, RiMOV direct, Ridirectdirect( RiRi)(directdirect)= =( RiRi)MOV RiMOV Ri, directdirect(RiRi)(direct)(direct)(RiRi)=(direct)=(direct)例:例:MOV 30H, 20HMOV 30H, 20H; 指令执行后(指令执行后(30H30H)= =(20H20H)例:例:MOV P1, 20HMOV P1, 20H; 指令执行后(指令执行后(P1P1)= =(20H20H)例:例:MOV P2,
44、P0MOV P2, P0; 指令执行后(指令执行后(P2P2)= =(P0P0)例:例:MOV 40H, P3MOV 40H, P3; 指令执行后(指令执行后(40H40H)= =(P3P3)例:例:MOV 0A0H, R7MOV 0A0H, R7; 指令执行后(指令执行后(P2P2)= =(R7R7)例:例:MOV PSW, R1MOV PSW, R1; 指令执行后(指令执行后(PSWPSW)= =(R1R1)例:例:MOV R2, 20HMOV R2, 20H; 指令执行后(指令执行后(R2R2)= =(20H20H)例:例:MOV R3, BMOV R3, B; 指令执行后(指令执行后(
45、R3R3)= =(B B)例:例:MOV 40H, R0MOV 40H, R0; 指令执行后(指令执行后(40H40H)= =(R0R0)例:例:MOV P0, R1MOV P0, R1; 指令执行后(指令执行后(P0P0)= = (R1R1)例:例:MOV R0, 0A0HMOV R0, 0A0H;指令执行后(;指令执行后(R0R0)= =(P2P2)例:例:MOV R1, 30HMOV R1, 30H; 指令执行后(指令执行后(R1R1)= =(30H30H) c c)通过累加器的数据传送指令)通过累加器的数据传送指令指令格式相应操作操作结果MOV AMOV A, RnRnA(Rn) A(
46、Rn) (A)=(Rn)(A)=(Rn)MOV Rn, AMOV Rn, ARn Rn (A A)(RnRn)= =(A A)MOV AMOV A, directdirectA(direct)A(direct)(A A)=(direct)=(direct)MOV direct, AMOV direct, Adirectdirect(A A)(directdirect)= =(A A)MOV A, Ri MOV A, Ri AA(RiRi)(A A)= = (RiRi)MOV RiMOV Ri, A A(RiRi)(A)(A)(RiRi)=(A)=(A)例:例:MOV A, R0MOV A, R
47、0; 指令执行后(指令执行后(A A)= =(R0R0)例:例:MOV R3, AMOV R3, A; 指令执行后(指令执行后(R3R3)= =(A A)例:例:MOV A, BMOV A, B; 指令执行后(指令执行后(A A)= =(B B)例:例:MOV A, 40HMOV A, 40H; 指令执行后(指令执行后(A A)= = (40H40H)例:例:MOV PSW, AMOV PSW, A; 指令执行后(指令执行后(PSWPSW)= = (A A)例:例:MOV 60H, AMOV 60H, A; 指令执行后(指令执行后(60H60H)= = (A A)例:例:MOV A, R0MO
48、V A, R0; 指令执行后(指令执行后(A A)= = (R0R0)例:例:MOV R1, AMOV R1, A; 指令执行后(指令执行后(R1R1)= =(A A)(3 3)外部RAMRAM数据传送指令组指令格式相应操作操作结果MOVX AMOVX A, DPTRDPTRAA((DPTR)(DPTR)) (A A)= =((DPTR)(DPTR))MOVX DPTRMOVX DPTR, A A(DPTR)(A) (DPTR)(A) ( (DPTR)(DPTR))=(A)=(A)MOVX AMOVX A, RiRiAA((Ri)(Ri)) (A A)= =((Ri)(Ri)) MOVX Ri
49、MOVX Ri, A A(Ri)(Ri)(A A)((Ri)(Ri))= =(A A)例:将外部例:将外部RAM 2000HRAM 2000H单元的内容单元的内容20H20H送至送至A A中。中。 MOV DPTRMOV DPTR, #2000H#2000H;外部;外部RAM 2000HRAM 2000H单元地址作为单元地址作为1616位立位立 即数送数据指针即数送数据指针DPTRDPTR MOVX A MOVX A, DPTRDPTR; 外部外部RAM 2000HRAM 2000H单元的内容单元的内容20H20H送送A A (A A)= =(DPTRDPTR)= =(2000H2000H)=
50、20H=20H例:将累加器例:将累加器A A中的内容中的内容40H40H送至外部送至外部RAM 4000HRAM 4000H单元中。单元中。 MOV DPTRMOV DPTR, #4000H#4000H;外部;外部RAM 4000HRAM 4000H单元地址作为单元地址作为1616位立位立 即数送数据指针即数送数据指针DPTRDPTR MOVX DPTR MOVX DPTR, A A ; A A的内容的内容40H40H送外部送外部RAM 4000HRAM 4000H单元单元 (DPTRDPTR)= =(4000H4000H)= =(A A)=40H=40HA A外外部部R RA AM M2 2
51、0 0H H外外部部R RA AM M4 40 00 00 0H H单单元元A A4 40 0H H2 20 00 00 0H H单单元元例:将外部例:将外部RAM 0050HRAM 0050H单元的内容单元的内容20H20H送至送至A A中。中。 a a)MOV DPTRMOV DPTR, #0050H#0050H;外部;外部RAM 0050HRAM 0050H单元地址作为单元地址作为1616位立位立 即数送数据指针即数送数据指针DPTRDPTR MOVX A MOVX A, DPTRDPTR; 外部外部RAM 0050HRAM 0050H单元的内容单元的内容20H20H送送A A (A A
52、)= =(DPTRDPTR)= =(2000H2000H)=20H=20H b b)MOV R0MOV R0, #50H#50H; 外部外部RAM 0050HRAM 0050H单元地址作为单元地址作为8 8位立位立 即数送间址寄存器即数送间址寄存器R0R0 MOVX A MOVX A, R0R0; 外部外部RAM 0050HRAM 0050H单元的内容单元的内容20H20H送送A A (A A)= =(R0R0)= =(50H50H)=20H=20H例:将累加器例:将累加器A A中的内容中的内容40H40H送至外部送至外部RAM 0050HRAM 0050H单元中。单元中。 a a)MOV D
53、PTRMOV DPTR, #0050H#0050H;外部;外部RAM 0050HRAM 0050H单元地址作为单元地址作为1616位立位立 即数送数据指针即数送数据指针DPTRDPTR MOVX DPTRMOVX DPTR, A A ; A A的内容的内容40H40H送外部送外部RAM 0050HRAM 0050H单元单元 (DPTRDPTR)= =(0050H0050H)= =(A A)=40H=40H b b)MOV R1MOV R1, #50H#50H; 外部外部RAM 0050HRAM 0050H单元地址作为单元地址作为8 8位立位立 即数送间址寄存器即数送间址寄存器R1R1 MOVX
54、 R1 MOVX R1, A A; A A的内容的内容40H40H送外部送外部RAM 0050HRAM 0050H单元单元 (R1R1)= =(50H50H)= =(A A)=40H=40HA A外外部部R RA AM M2 20 0H H外外部部R RA AM M0 00 05 50 0H H单单元元A A4 40 0H H0 00 05 50 0H H单单元元例:将内部例:将内部RAM 60HRAM 60H单元的内容单元的内容40H40H送至外部送至外部RAM 4000HRAM 4000H单元中。单元中。 MOV AMOV A, 60H60H; 将将60H60H单元的内容单元的内容40H4
55、0H先送先送A A中,(中,(A A)=40H=40H MOV DPTR MOV DPTR, #4000H#4000H;外部;外部RAM 4000HRAM 4000H单元地址送单元地址送DPTRDPTR MOVX DPTR MOVX DPTR, A A ; A A的内容的内容40H40H送外部送外部RAM 4000HRAM 4000H单元单元 (DPTRDPTR)= =(4000H4000H)= =(A A)=40H=40H内内部部R RA AM M4 40 0H H外外部部R RA AM M4 40 00 00 0H H单单元元A A4 40 0H H6 60 0H H单单元元例:将外部例:
56、将外部RAM 4000HRAM 4000H单元的内容单元的内容40H40H送至内部送至内部RAM 60HRAM 60H单元中。单元中。 MOV DPTRMOV DPTR, #4000H#4000H;外部;外部RAM 4000HRAM 4000H单元地址送单元地址送DPTRDPTR MOVX A MOVX A, DPTR DPTR ;外部;外部RAM 4000HRAM 4000H单元的内容单元的内容40H40H送送A A (A A)= =(DPTRDPTR)= =(4000H4000H)=40H=40H MOV 60H MOV 60H, A A ;将;将A A的内容的内容40H40H送送60H6
57、0H单元,(单元,(60H60H)=40H=40H内内部部R RA AM M4 40 0H H外外部部R RA AM M4 40 00 00 0H H单单元元A A4 40 0H H6 60 0H H单单元元例:将外部例:将外部RAM 4000HRAM 4000H单元内容单元内容40H40H送至外部送至外部RAM 0050HRAM 0050H单元中。单元中。 MOV DPTRMOV DPTR, #4000H#4000H;外部;外部RAM 4000HRAM 4000H单元地址送单元地址送DPTRDPTR MOVX A MOVX A, DPTR DPTR ;外部;外部RAM 4000HRAM 40
58、00H单元的内容单元的内容40H40H送送A A (A A)= =(DPTRDPTR)= =(4000H4000H)=40H=40H MOV R0 MOV R0, #50H #50H ;外部;外部RAM 0050HRAM 0050H单元地址送间址寄存器单元地址送间址寄存器R0R0 MOVX R0 MOVX R0,A A; 外部外部RAMRAM(0050H0050H)= =(A A)=40H=40H外外部部R RA AM M4 40 0H H外外部部R RA AM M4 40 00 00 0H H单单元元A A4 40 0H H0 00 05 50 0H H单单元元例:将内部例:将内部RAM 6
59、0HRAM 60H单元内容单元内容40H40H送至内部送至内部RAM 50HRAM 50H单元中。单元中。 a a)MOV 50HMOV 50H, 60H60H;内部;内部RAM 60HRAM 60H单元内容单元内容40H40H送至内部送至内部RAM RAM 50H 50H单元中,(单元中,(50H50H)= =(60H60H)=40H=40H b b)MOV AMOV A,60H60H;先将内部;先将内部RAM 60HRAM 60H单元内容单元内容40H40H送送A A,(A(A)=40H=40H MOV 50H MOV 50H,A A;再将;再将A A的内容送内部的内容送内部RAM 50H
60、RAM 50H单元,单元,(50H(50H)=40H=40H内内部部R RA AM M4 40 0H H内内部部R RA AM M6 60 0H H单单元元A A4 40 0H H5 50 0H H单单元元 注意:注意: 1 1)外部)外部RAMRAM与外部与外部RAMRAM单元之间、外部单元之间、外部RAMRAM与内部与内部RAMRAM单元之单元之间的数据传送必须采用寄存器间接寻址的方式,而且必须通过累间的数据传送必须采用寄存器间接寻址的方式,而且必须通过累加器加器A A进行;进行; 2 2)MCS-51MCS-51指令系统中没有专用的存储器读写指令,实际上指令系统中没有专用的存储器读写指令
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论