MCS51单片机的指令与程序设计课件.ppt

上传人(卖家):三亚风情 文档编号:3347624 上传时间:2022-08-22 格式:PPT 页数:94 大小:670.50KB
下载 相关 举报
MCS51单片机的指令与程序设计课件.ppt_第1页
第1页 / 共94页
MCS51单片机的指令与程序设计课件.ppt_第2页
第2页 / 共94页
MCS51单片机的指令与程序设计课件.ppt_第3页
第3页 / 共94页
MCS51单片机的指令与程序设计课件.ppt_第4页
第4页 / 共94页
MCS51单片机的指令与程序设计课件.ppt_第5页
第5页 / 共94页
点击查看更多>>
资源描述

1、1第七章第七章 MCS-51单片机的指令与程序设计单片机的指令与程序设计本章教学基本要求本章教学基本要求1掌握掌握MCS-51单片机汇编语言的特点和格式。单片机汇编语言的特点和格式。2掌握掌握MCS-51单片机汇编指令的单片机汇编指令的7种寻址方式和种寻址方式和111条指令的使用方法。条指令的使用方法。3掌握掌握MCS-51单片机汇编程序的设计方法。单片机汇编程序的设计方法。4掌握掌握MCS-51单片机单片机C语言程序设计方法。语言程序设计方法。重点与难点重点与难点汇编指令的寻址方式与指令的使用方法。汇编指令的寻址方式与指令的使用方法。汇编程序和汇编程序和C程序的结构设计。程序的结构设计。第1

2、页,共94页。27.1 MCS-51汇编指令格式和寻址方式汇编指令格式和寻址方式AT89C51单片机的基本指令共单片机的基本指令共111条,按指令在程序存储器条,按指令在程序存储器所占的字节来分,可分为以下所占的字节来分,可分为以下3种:种:(1)单字节指令)单字节指令49条;条;(2)双字节指令)双字节指令45条;条;(3)三字节指令)三字节指令17条。条。按指令的执行时间来分,可分为以下按指令的执行时间来分,可分为以下3种:种:(1)1个机器周期(个机器周期(12个时钟振荡周期)的指令个时钟振荡周期)的指令64条;条;(2)2个机器周期(个机器周期(24个时钟振荡周期)的指令个时钟振荡周期

3、)的指令45条;条;(3)只有乘、除两条指令的执行时间为)只有乘、除两条指令的执行时间为4个机器周期(个机器周期(48个时钟振荡周期)。个时钟振荡周期)。第2页,共94页。3MCS-51单片机的指令格式与8086类似,一条指令通常由两部分组成:操作码和操作数。AT89C51单片机的汇编语言指令的书写格式如下:标号:操作码 操作数;注释例如,一条数据传送指令:MOV A,4CH;将4CH存储单元的内容送到累加器A中,其中:MOV是操作码,A和3AH是操作数,“;”的后面是注释。需要注意是在汇编程序中使用的注释符号“;”,“:”和“,”为英文下的分号,冒号和逗号,而非中文下的“;”,“:”和“,”

4、。一、指令格式一、指令格式第3页,共94页。41操作码操作码操作码是由助记符表示的字符串,它规定了指令操作码是由助记符表示的字符串,它规定了指令的操作功能。操作码是指令的核心,不可或缺。的操作功能。操作码是指令的核心,不可或缺。2操作数操作数操作数是指参加操作的数据或数据的地址。操作数是指参加操作的数据或数据的地址。MCS-51单片机的指令系统中指令的操作数可以是单片机的指令系统中指令的操作数可以是03个。不同功能的指令,操作数的个数和作用有所个。不同功能的指令,操作数的个数和作用有所不同。例如,传送类指令多数有两个操作数。紧跟不同。例如,传送类指令多数有两个操作数。紧跟在操作码后面的第一操作

5、数称为目的操作数,表示在操作码后面的第一操作数称为目的操作数,表示操作结果存放的地址;后面的第二操作数称为源操操作结果存放的地址;后面的第二操作数称为源操作数,给出操作数或操作数的来源地址。作数,给出操作数或操作数的来源地址。第4页,共94页。53标号标号标号用符号代表其后面的指令的首地址。标号由标号用符号代表其后面的指令的首地址。标号由18个字符组个字符组成,第一个字符必须是字母,其余字符可以是字母、数字或其成,第一个字符必须是字母,其余字符可以是字母、数字或其他特定符号,标号放在操作码前面,与操作码之间必须用他特定符号,标号放在操作码前面,与操作码之间必须用“:”号隔开。标号起标记作用,在

6、指令中是可选项,一般用在一段号隔开。标号起标记作用,在指令中是可选项,一般用在一段功能程序的第一条指令前面。功能程序的第一条指令前面。4注释注释 注释是为了便于阅读该条指令所作的说明,注释项是可选项,注释是为了便于阅读该条指令所作的说明,注释项是可选项,即可有可无。但为提高程序可读性,多数程序需要进行适当注即可有可无。但为提高程序可读性,多数程序需要进行适当注释。释。5其他其他由指令格式可见,操作码与操作数之间必须用空格分隔;操作由指令格式可见,操作码与操作数之间必须用空格分隔;操作数与操作数之间必须用逗号数与操作数之间必须用逗号“,”分开;注释与指令之间必须用分开;注释与指令之间必须用“;”

7、号分开。操作码和操作数有对应的二进制代码,指令代码号分开。操作码和操作数有对应的二进制代码,指令代码由若干字节组成。不同的指令字节数不一定相同,由若干字节组成。不同的指令字节数不一定相同,51单片机的单片机的指令系统中有单字节、双字节和指令系统中有单字节、双字节和3字节指令。字节指令。第5页,共94页。6寻址方式就是在指令中说明操作数所在地址的方法。寻址方式就是在指令中说明操作数所在地址的方法。AT89C51单片机的指令系统有以下单片机的指令系统有以下7种寻址方式,下面分别予以介绍。种寻址方式,下面分别予以介绍。寄存器寻址方式寄存器寻址方式寄存器寻址方式就是操作数在寄存器中,因此指定了寄存器就

8、能得寄存器寻址方式就是操作数在寄存器中,因此指定了寄存器就能得到操作数。例如,指令到操作数。例如,指令MOV A,Rn;(Rn)A,n=07表示把寄存器表示把寄存器Rn的内容传送到累加器的内容传送到累加器A中,由于操作数在中,由于操作数在Rn中,中,因此在指令中指定了从寄存器因此在指令中指定了从寄存器Rn中取得源操作数,所以称为寄存器中取得源操作数,所以称为寄存器寻址方式。寄存器寻址方式的寻址范围包括:寻址方式。寄存器寻址方式的寻址范围包括:(1)4组通用工作寄存器区,共组通用工作寄存器区,共32个工作寄存器。但只能寻址当前个工作寄存器。但只能寻址当前工作寄存器区的工作寄存器区的8个工作寄存器

9、,因此指令中的寄存器名称只能是个工作寄存器,因此指令中的寄存器名称只能是R0R7。(2)部分特殊功能寄存器,如累加器)部分特殊功能寄存器,如累加器A、寄存器、寄存器B以及数据指针寄以及数据指针寄存器存器DPTR等。等。二、寻址方式二、寻址方式第6页,共94页。72直接寻址方式直接寻址方式在直接寻址方式中,指令中直接以单元地址的形式给出操作数。该单在直接寻址方式中,指令中直接以单元地址的形式给出操作数。该单元地址中的内容就是操作数。例如,指令元地址中的内容就是操作数。例如,指令MOV A,26H表示把内部表示把内部RAM的的26H字节单元的内容传送到寄存器字节单元的内容传送到寄存器A。源操作。源

10、操作数采用的是直接寻址方式。需要区分数采用的是直接寻址方式。需要区分8086直接寻址指令格式中直接直接寻址指令格式中直接地址要加地址要加“”,如,如8086指令:指令:MOV AX,1000H。直接寻址的操作数在指令中以存储单元的形式出现,因为直接寻址直接寻址的操作数在指令中以存储单元的形式出现,因为直接寻址方式只能使用方式只能使用8位二进制表示的地址,因此,直接寻址方式的寻址范围位二进制表示的地址,因此,直接寻址方式的寻址范围只限于:只限于:(1)内部)内部RAM的的128个单元。个单元。(2)特殊功能寄存器。特殊功能寄存器除了以单元地址的形式给出外)特殊功能寄存器。特殊功能寄存器除了以单元

11、地址的形式给出外,还可以用寄存器符号的形式给出。,还可以用寄存器符号的形式给出。第7页,共94页。8例如,指令例如,指令MOV A,90H表示把表示把P1口(字节地址为口(字节地址为90H)的内容传送给)的内容传送给A。也可写为。也可写为MOV A,P1这也表示把这也表示把P1口(地址为口(地址为90H)的内容传送给)的内容传送给A,两条指令是等价的。应当说明的是,直接寻址,两条指令是等价的。应当说明的是,直接寻址方式是能对所有特殊功能寄存器读写的唯一寻址方式是能对所有特殊功能寄存器读写的唯一寻址方式。方式。第8页,共94页。93寄存器间接寻址方式寄存器间接寻址方式 前述的寄存器寻址方式,在寄

12、存器中存放的是操作数,而寄存前述的寄存器寻址方式,在寄存器中存放的是操作数,而寄存器间接寻址方式,在寄存器中存放的是操作数的地址,即先从寄存器间接寻址方式,在寄存器中存放的是操作数的地址,即先从寄存器中找到操作数的地址,再按该地址找到操作数。由于操作数是通器中找到操作数的地址,再按该地址找到操作数。由于操作数是通过寄存器间接得到的,因此称为寄存器间接寻址。为了区别寄存器过寄存器间接得到的,因此称为寄存器间接寻址。为了区别寄存器寻址和寄存器间接寻址,在寄存器间接寻址方式中,应在寄存器名寻址和寄存器间接寻址,在寄存器间接寻址方式中,应在寄存器名称前面加前缀标志称前面加前缀标志“”。例如,指令。例如

13、,指令 MOV A,Ri;i=0或或1其中,其中,Ri中的内容为中的内容为26H,即从,即从Ri中找到源操作数所在单元的地址中找到源操作数所在单元的地址26H,把该地址中的内容传送给,把该地址中的内容传送给A,即把内部,即把内部RAM中中26H单元的内单元的内容送到容送到A。第9页,共94页。104立即寻址方式立即寻址方式 立即寻址方式就是直接在指令中给出操作数。出现在指令中立即寻址方式就是直接在指令中给出操作数。出现在指令中的操作数也称立即数。为了与直接寻址指令中的直接地址加以区的操作数也称立即数。为了与直接寻址指令中的直接地址加以区别,需在操作数前面加前缀标志别,需在操作数前面加前缀标志“

14、#”。例如,指令。例如,指令 MOV A,#55H 表示把立即数表示把立即数55H送给送给A,55H这个常数是指令代码的一部分。采用这个常数是指令代码的一部分。采用立即寻址方式的指令是双字节的。第一个字节是操作码,第二个字节是立即寻址方式的指令是双字节的。第一个字节是操作码,第二个字节是立即数。因此,立即数就是放在程序存储器内的常数。在立即数。因此,立即数就是放在程序存储器内的常数。在8086的直接寻的直接寻址中,源操作数前面没有址中,源操作数前面没有“#”,如,如8086指令:指令:MOV AX,7A3BH。第10页,共94页。115基址寄存器加变址寄存器间接寻址方式基址寄存器加变址寄存器间

15、接寻址方式基址寄存器加变址寄存器间接寻址方式用于读出程序基址寄存器加变址寄存器间接寻址方式用于读出程序存储器中的数据到累加器中。该寻址方式是以存储器中的数据到累加器中。该寻址方式是以DPTR或或PC作为基址作为基址寄存器,以累加器寄存器,以累加器A作为变址寄存器,并以两者内容相加形成的作为变址寄存器,并以两者内容相加形成的16位位地址作为操作数的地址,以达到访问数据表格的目的。例如,指令地址作为操作数的地址,以达到访问数据表格的目的。例如,指令 MOVC A,A+DPTR假设假设A的原有内容为的原有内容为10H,DPTR的内容为的内容为0210H,该指令执行,该指令执行的结果是把程序存储器的结

16、果是把程序存储器0220H单元的内容传送给单元的内容传送给A。第11页,共94页。12下面对该寻址方式做如下说明。下面对该寻址方式做如下说明。(1)该寻址方式只能对程序存储器进行寻址,)该寻址方式只能对程序存储器进行寻址,寻址范围可达到寻址范围可达到64KB。(2)该寻址方式的指令只有)该寻址方式的指令只有3条:条:MOVC A,A+DPTRMOVC A,A+PCJMP A,A+DPTR其中,前两条指令是读程序存储器指令,最后一其中,前两条指令是读程序存储器指令,最后一条指令是无条件转移指令。条指令是无条件转移指令。第12页,共94页。136位寻址方式位寻址方式AT89C51单片机具有位处理功

17、能,可以对数据位单片机具有位处理功能,可以对数据位进行操作,因此就有相应的位寻址方式,而进行操作,因此就有相应的位寻址方式,而8086指令系统不具备该寻址功能。位寻址指令中可以指令系统不具备该寻址功能。位寻址指令中可以直接使用位地址,例如,指令直接使用位地址,例如,指令MOV C,55H其功能是把位地址为其功能是把位地址为55H的值送到进位位的值送到进位位C。位。位寻址的寻址范围包括如下两种情况。寻址的寻址范围包括如下两种情况。第13页,共94页。14(1)内部)内部RAM中的位寻址区中的位寻址区单元地址为单元地址为20H2FH,共,共16个单元,个单元,128位,位位,位地址是地址是00H7

18、FH,对这,对这128个位的寻址使用直接个位的寻址使用直接地址表示。寻址位有两种表示方法,一种是位地地址表示。寻址位有两种表示方法,一种是位地址,如址,如55H;另一种是单元地址加上位,如(;另一种是单元地址加上位,如(2AH).5,它指的是,它指的是2AH单元中的第五位。位地单元中的第五位。位地址址55H与位与位(2AH).5是同一个位,二者是等价的。是同一个位,二者是等价的。第14页,共94页。15(2)特殊功能寄存器中的可寻址位)特殊功能寄存器中的可寻址位可供位寻址的特殊功能寄存器有可供位寻址的特殊功能寄存器有11个,共有个,共有88位,其中有位,其中有5位没有定义,所以有可寻址位位没有

19、定义,所以有可寻址位83位。这些可寻址位在指位。这些可寻址位在指令中有如下令中有如下4种表示方法。种表示方法。直接使用位地址。例如,直接使用位地址。例如,PSW寄存器位寄存器位5的位地址为的位地址为0D5H。位名称的表示方法。例如,位名称的表示方法。例如,PSW寄存器位寄存器位5是是F0标志位标志位,则可使用,则可使用F0表示该位。表示该位。单元地址加位数的表示方法。例如,单元地址加位数的表示方法。例如,0D0H单元(即单元(即PSW寄存寄存器)位器)位5,表示为,表示为(0D0H).5。特殊功能寄存器符号加位数的表示方法。例如,特殊功能寄存器符号加位数的表示方法。例如,PSW寄存器的位寄存器

20、的位5表示为表示为PSW.5。第15页,共94页。167相对寻址方式相对寻址方式相对寻址方式是为解决程序转移而专门设置的,为转移指令所采用。相对寻址方式是为解决程序转移而专门设置的,为转移指令所采用。在相对寻址的转移指令中,给出了地址偏移量,以在相对寻址的转移指令中,给出了地址偏移量,以“Rel”表示,即表示,即PC的当前值加上偏移量就构成了程序转移的目的地址。但这里的的当前值加上偏移量就构成了程序转移的目的地址。但这里的PC当前当前值是紧接在转移指令后的下一条指令的值是紧接在转移指令后的下一条指令的PC值,即转移指令的值,即转移指令的PC值加上值加上它的字节数。因此,转移的目的地址可用下式表

21、示:它的字节数。因此,转移的目的地址可用下式表示:目的地址目的地址=转移指令所在的地址转移指令所在的地址+转移指令的字节数转移指令的字节数+Rel其中,偏移量其中,偏移量Rel是一个带符号的是一个带符号的8位二进制数补码数,它所位二进制数补码数,它所能表示的数的范围是能表示的数的范围是128+127。因此,相对转移是以转移。因此,相对转移是以转移指令的下一条指令所在地址为基点,向地址增加方向最大可指令的下一条指令所在地址为基点,向地址增加方向最大可转移转移127个单元地址,向地址减少方向最大可转移个单元地址,向地址减少方向最大可转移128个单元个单元地址。地址。第16页,共94页。17AT89

22、C51单片机指令系统的单片机指令系统的7种寻址方式统计如表种寻址方式统计如表7-1所示。所示。序号寻址方式使用变量寻址空间1寄存器寻址R0R7,A,B,C(位),DPTR,AB4组通用工作寄存区部分特殊功能寄存器2直接寻址内部RAM 128B特殊功能寄存器3寄存器间接寻址R0,R1,SP,DPTR内部RAM和片外数据存储器4立即寻址#data5基址寄存器加变址间接寻址A+DPTR,A+PC程序存储器6位寻址内部RAM 20H2FH的128个可寻址位,SFR中的83个可寻址位7相对寻址PC+偏移量程序存储器第17页,共94页。187.2 MCS-51指令介绍指令介绍在汇编程序指令编写和程序注释过

23、程中,会用到一些特殊符号在汇编程序指令编写和程序注释过程中,会用到一些特殊符号,具体含义介绍如下。,具体含义介绍如下。Rn:当前工作寄存器组中的任一寄存器(:当前工作寄存器组中的任一寄存器(n=07)。)。Ri:当前工作寄存器组中的:当前工作寄存器组中的R0和和R1(i=0,1),),Ri常用作间常用作间接寻址寄存器。接寻址寄存器。:寄存器间接寻址或变址寻址符号。:寄存器间接寻址或变址寻址符号。(Ri):由):由Ri间接寻址指向的地址单元。(用间接寻址指向的地址单元。(用SP和和DPTR间接寻址时,表示方法相同)间接寻址时,表示方法相同)(Ri):由):由Ri间接寻址指向的地址单元中的内容。(

24、用间接寻址指向的地址单元中的内容。(用SP和和DPTR间址时,表示相同)间址时,表示相同)(XXH):某片内):某片内RAM单元中的内容。单元中的内容。第18页,共94页。19Direct:片内:片内RAM单元(包括单元(包括SFR区)的直接地址(也有区)的直接地址(也有的写成的写成dir)。)。#Data:8位数据。位数据。#Data16:16位数据。位数据。Addr16:16位地址。位地址。Addr11:11位地址。位地址。Rel:由:由8位补码数构成的相对偏移量。位补码数构成的相对偏移量。Bit:位地址,内部:位地址,内部RAM和特殊功能寄存器的直接寻址位。和特殊功能寄存器的直接寻址位。

25、:数据流向指示。:数据流向指示。第19页,共94页。207.2.1 数据传送指令数据传送指令数据传送指令共有数据传送指令共有29条,是指令系统中数量最多、使用非常频繁的条,是指令系统中数量最多、使用非常频繁的指令。指令。一、以累加器一、以累加器A为目的操作数的指令(为目的操作数的指令(4条)条)MOV A,Rn;工作寄存器工作寄存器 Rn(R0R7)的内容)的内容 AMOV A,Direct;直接地址直接地址 Direct 中的内容(中的内容(Direct)AMOV A,Ri;间接地址间接地址 Ri 中的内容(中的内容(Ri)A,Ri=R0,R1MOV A,#Data;立即数立即数#Data

26、A 第20页,共94页。21【例【例7.1】已知】已知 R0=25H,(,(25H)=0AAH,下,下面指令执行后的结果分析如下。面指令执行后的结果分析如下。MOV A,25H;(25H)A,(,(A)=0AAHMOV A,#30H;#30HA,(,(A)=33HMOV A,R0;R0A,(,(A)=25HMOV A,R0;(R0)A即(即(25H)A,(,(A)=AAH 第21页,共94页。22二、以寄存器二、以寄存器Rn为目的操作数的指令(为目的操作数的指令(3条)条)MOV Rn,A;累加器累加器A中内容中内容RnMOV Rn,Direct;直接地址直接地址Direct中的内容中的内容R

27、nMOV Rn,#Data;立即数立即数#DataRn【例【例7.2】已知】已知A=26H,R5=75H,(,(62H)=0ACH,下面指令执行后其结果分析如下。,下面指令执行后其结果分析如下。MOV R5,A;AR5,R5=26HMOV R5,62H;(62H)R5,R5=0ACHMOV R5,#30H;30HR5,R5=30H 注意:当操作数中出现注意:当操作数中出现16进制数据的高进制数据的高8位为位为AF等字母时,需要在前面加上数字等字母时,需要在前面加上数字“0”如如ACH时时,需要在前面加上,需要在前面加上0,写为:,写为:0ACH,否则出错。,否则出错。第22页,共94页。23三

28、、以直接地址三、以直接地址 Direct 为目的操作数的指令(为目的操作数的指令(5条)条)MOV Direct,A;ADirectMOV Direct,Rn;RnDirect MOV Direct,Direct;(源(源Direct)目的目的Direct MOV Direct,Ri;(Ri)Direct MOV Direct,#Data;#DataDirect 【例【例7.3】设】设A=36H,(,(40H)=19H,(,(25H)=11H,R0=24H,(,(24H)=62H。下来指令执行后,其结果分析如下。下来指令执行后,其结果分析如下。MOV 25H,#22H;#22H25H,(,(2

29、5H)=22HMOV 25H,40H;(40H)25H,(,(25H)=19HMOV 25H,A;A25H,(,(25H)=36HMOV 25H,R0;R025H,(,(25H)=24HMOV 25H,R0;(R0)25H,(,(25H)=62H 第23页,共94页。24四、以间接地址四、以间接地址 Ri 为目的操作数的指令(为目的操作数的指令(3条)条)MOV Ri,A;A(Ri),Ri=R0,R1 MOV Ri,Direct;(Direct)(Ri),Ri=R0,R1MOV Ri,#Data;#Data(Ri),Ri=R0,R1五、五、16位数据传送指令(位数据传送指令(1条)条)MOV

30、DPTR,#Data16;DataHDPH,DataLDPL指令执行的操作是将指令执行的操作是将16位的立即数位的立即数#Data传送到传送到16位寄存器位寄存器DPTR中。其中高中。其中高8位的数据位的数据DataH送入送入DPH,低,低8位的数据位的数据DataL送入送入DPL。例如:例如:MOV DPTR,#12BAH;DPH=12H,DPL=0BAH第24页,共94页。25六、片外数据传送指令(六、片外数据传送指令(4条)条)在在 MCS-51单片机指令系统中,下面单片机指令系统中,下面4条指令操作用于单片条指令操作用于单片机对片外机对片外RAM或者片外或者片外I/O接口的数据传送。接

31、口的数据传送。MOVX A,Ri;(Ri)A,读操作,读操作,Ri=R0,R1 MOVX A,DPTR;(DPTR)A,读操作,读操作MOVX Ri,A;A(Ri),写操作),写操作,Ri=R0,R1 MOVX DPTR,A;A(DPTR),写操作),写操作上述四条指令中采用了两种指针对片外上述四条指令中采用了两种指针对片外RAM或或I/O接口进行间接接口进行间接寻址:寻址:8位的工作寄存器位的工作寄存器Ri和和16位的数据指针位的数据指针DPTR,Ri寻址片外寻址片外RAM的的00H0FFH单元共单元共256个字节单元;个字节单元;DPTR寻址片外寻址片外RAM或或I/O接口的接口的0000

32、H0FFFFH单元共单元共64KB范围。范围。第25页,共94页。26七、访问七、访问ROM的指令(的指令(2条)条)MOVC A,A+PC;先先PC+1PC,后(,后(A+PC)AMOVC A,A+DPTR;先先PC+1PC,后(,后(A+DPTR)A这两条指令也称为查表指令。编程时,预先在程序存这两条指令也称为查表指令。编程时,预先在程序存储器储器ROM中建立起数据表格,以后程序运行时利用这中建立起数据表格,以后程序运行时利用这两条指令查表。这两条指令都为单字节指令,不同的两条指令查表。这两条指令都为单字节指令,不同的是,第一条指令的基本地址为程序计数器是,第一条指令的基本地址为程序计数器

33、PC,偏移地,偏移地址为址为A;而第二条指令中,;而第二条指令中,16位数据指针位数据指针DPTR和累加和累加器器A既可以作基本地址也可以作偏移地址,使用比较既可以作基本地址也可以作偏移地址,使用比较灵活。因此,可以看出第一条指令查找范围为灵活。因此,可以看出第一条指令查找范围为256B;而第二条指令查找范围可达整个而第二条指令查找范围可达整个ROM的的64KB。第26页,共94页。27八、数据交换指令(八、数据交换指令(5条)条)XCH A,Rn;A与与Rn内容交换,内容交换,Rn=R0R7XCH A,Direct;A与与Direct 内容交换内容交换XCH A,Ri;A与(与(Ri)内容交

34、换)内容交换XCHD A,Ri;A的低四位与(的低四位与(Ri)低四位内容交换)低四位内容交换SWAP A;A自身的低自身的低4位与高位与高4位交换位交换其中,进行的操作是累加器其中,进行的操作是累加器A与工作寄存器与工作寄存器Ri(Ri=R0R7)、直接地址)、直接地址Direct 和间接地址和间接地址Ri(Ri=R0、R1)所寻址)所寻址的单元内容,以及自身半字节的内容进行互换。其中,前的单元内容,以及自身半字节的内容进行互换。其中,前三条为字节的交换,而后面一条进行的是半字节的交换,三条为字节的交换,而后面一条进行的是半字节的交换,XCHD完成低完成低4位的交换而高位的交换而高4位不变,

35、位不变,SWAP完成累加器完成累加器A自身的低自身的低4位与高位与高4位交换。位交换。第27页,共94页。28九、堆栈操作指令(九、堆栈操作指令(2条)条)PUSH Direct ;先先SP+1SP,后(,后(Direct)(SP)POP Direct ;先(先(SP)Direct,后,后SP-1SP上述两条指令中,上述两条指令中,PUSH为入栈指令,为入栈指令,POP为出为出栈指令,用于保护和恢复现场。它们都是双栈指令,用于保护和恢复现场。它们都是双字节指令,且都不影响标志位。字节指令,且都不影响标志位。第28页,共94页。29 入栈操作时,栈指针入栈操作时,栈指针SP首先上移一个单元,首先

36、上移一个单元,指向栈顶的上一个单元,接着将直接地址指向栈顶的上一个单元,接着将直接地址Direct单元内容压入当前单元内容压入当前SP指向的单元中。出栈操作时指向的单元中。出栈操作时,首先将栈指针,首先将栈指针SP所指向的单元的内容弹出到直所指向的单元的内容弹出到直接地址接地址Direct中,然后中,然后SP下移一个单元,指向新下移一个单元,指向新的栈顶。堆栈操作具体特殊性:的栈顶。堆栈操作具体特殊性:堆栈指令仅用于片内堆栈指令仅用于片内RAM的的128字节单元或字节单元或专用寄存器的操作;专用寄存器的操作;堆栈操作必须遵循堆栈操作必须遵循“先进后出先进后出”或者或者“后进后进先出先出”的原则

37、,否则堆栈中的数据会出现混乱。的原则,否则堆栈中的数据会出现混乱。第29页,共94页。307.2.2 算术运算指令算术运算指令算术运算指令共有算术运算指令共有24条,包括执行加、减、乘、条,包括执行加、减、乘、除法四则运算的指令和执行加除法四则运算的指令和执行加1、减、减1、BCD码的码的运算和调整的指令。虽然运算和调整的指令。虽然MCS-51单片机的算术单片机的算术逻辑单元逻辑单元ALU仅能对仅能对8位无符号整数进行运算,位无符号整数进行运算,但利用进位标志但利用进位标志C,可进行多字节无符号整数的,可进行多字节无符号整数的运算。此外,利用溢出标志,还可以对带符号数运算。此外,利用溢出标志,

38、还可以对带符号数进行补码运算。需要指出的是,除加进行补码运算。需要指出的是,除加1、减、减1指令指令外,其它指令的执行对程序状态字外,其它指令的执行对程序状态字PSW有影响。有影响。第30页,共94页。31一、加法指令(一、加法指令(4条)条)ADD A,Rn;A+RnA,Rn=R0R7ADD A,Direct;A+(Direct)AADD A,Ri;A+(Ri)AADD A,#Data;A+#DataA加法指令执行是将工作寄存器加法指令执行是将工作寄存器Rn(R0R7)内容、直接地址)内容、直接地址Direct内容、间接地址内容、间接地址Ri(Ri=R0、R1)的内容以及立即数)的内容以及立

39、即数#Data,与累,与累加器加器A的内容相加,运算结果保存在累加器的内容相加,运算结果保存在累加器A中。上面中。上面4条指令的执条指令的执行将影响标志位行将影响标志位AC、CY、OV、P。当和的第。当和的第3位或第位或第7位有进位时位有进位时,分别将,分别将AC、CY标志位置标志位置1,否则为,否则为0。溢出标志位只有带符号数。溢出标志位只有带符号数运算时才有用。运算时才有用。OV=1也可以理解为:由于进位破坏了符号位的正确也可以理解为:由于进位破坏了符号位的正确性。性。第31页,共94页。32二、带进位加指令(二、带进位加指令(4条)条)ADDC A,Rn;A+Rn+CYA,Rn=R0R7

40、ADDC A,Direct;A+(Direct)+CYAADDC A,Ri;A+(Ri)+CYAADDC A,#Data;A+#Data+CYA这组指令完成的功能是将工作寄存器这组指令完成的功能是将工作寄存器Rn内容、直接地址内容、直接地址Direct内内容、间接地址容、间接地址Ri的内容以及立即数的内容以及立即数#Data,连同进位标志位,连同进位标志位CY,与累加器,与累加器A的内容相加,运算结果保存到累加器的内容相加,运算结果保存到累加器A。其他的功。其他的功能与能与ADD指令相同。指令相同。第32页,共94页。33三、带借位减法指令(三、带借位减法指令(4条)条)SUBB A,Rn;A

41、-CY-RnA,Rn=R0R7SUBB A,Direct;A-CY-(Direct)ASUBB A,Ri;A-CY-(Ri)A,Ri=R0,R1SUBB A,#Data;A-CY-#Data A注意:没有不带借位标志的减法指令,所以当两注意:没有不带借位标志的减法指令,所以当两个单字节或多字节最低位相减时,必须先清除借个单字节或多字节最低位相减时,必须先清除借位位CY。当两个不带符号位数相减时,溢出与否。当两个不带符号位数相减时,溢出与否与与OV状态无关,而根据状态无关,而根据CY是否有借位判断处理是否有借位判断处理。第33页,共94页。34四、十进制调整指令(四、十进制调整指令(1条)条)十

42、进制调整指令用于对十进制调整指令用于对BCD码十进制数加法码十进制数加法运算的结果的内容进行修正。其指令格式为运算的结果的内容进行修正。其指令格式为 DA A 该指令的功能是对压缩的该指令的功能是对压缩的BCD码(一个字节码(一个字节存放存放2位位BCD码)的加法结果进行十进制调整。码)的加法结果进行十进制调整。两个两个BCD码按二进制相加之后,必须经本指令的码按二进制相加之后,必须经本指令的调整才能得到正确的压缩调整才能得到正确的压缩BCD码。对于十进制数码。对于十进制数(BCD码)的加法运算,需借助于二进制加法指码)的加法运算,需借助于二进制加法指令。令。第34页,共94页。35五、增五、

43、增1指令(指令(5条)条)INC A;(A)+1AINC Rn;(Rn)+1Rn,Rn=R0R7,INC Direct;(Direct)+1DirectINC Ri;(Ri)+1(Ri),Ri=R0,R1INC DPTR;(DPTR)+1DPTR这这5条指令将指令中所指出的变量增条指令将指令中所指出的变量增1,且不影响程序状态,且不影响程序状态字字PSW中的任何标志。若变量原来为中的任何标志。若变量原来为0FFH,加,加1后将溢出后将溢出为为00H(前(前4条指令),标志也不会受到影响。第条指令),标志也不会受到影响。第5条指令条指令INC DPTR,是,是16位数增位数增1指令。指令首先对低

44、指令。指令首先对低8位指针位指针DPL的内容执行加的内容执行加1操作,当产生溢出时,就对操作,当产生溢出时,就对DPH的内容的内容进行加进行加1操作,也不影响标志操作,也不影响标志CY的状态。的状态。第35页,共94页。36六、减六、减1指令(指令(4条)条)DEC A;(A)-1ADEC Rn;(Rn)-1Rn,Rn=R0R7DEC Direct;(Direct)-1DirectDEC Ri;(Ri)-1(Ri),Ri=R0,R1这这4条指令的功能是将指定的变量减条指令的功能是将指定的变量减1。若原来为。若原来为00H,减,减1后下溢为后下溢为0FFH,不影响标志位(,不影响标志位(P标标志

45、除外)。志除外)。第36页,共94页。37七、乘法指令(七、乘法指令(1条)条)MUL AB;ABBA 这条指令的功能是把累加器这条指令的功能是把累加器A和寄存器和寄存器B中的无符号中的无符号8位整位整数相乘,其数相乘,其16位积的低位积的低8位字节在累加器位字节在累加器A中,高中,高8位字节在位字节在B中。如果积大于中。如果积大于255,则溢出标志位,则溢出标志位OV置置“1”,否则,否则OV清清“0”。进位标志位。进位标志位Cy总是清总是清“0”。八、除法指令(八、除法指令(1条)条)DIV AB;A/B,商,商A,余数,余数B 该指令的功能是用累加器该指令的功能是用累加器A中中8位无符号

46、整数(被除数)除位无符号整数(被除数)除以以B中中8位无符号整数(除数),所得的商(为整数)存放在位无符号整数(除数),所得的商(为整数)存放在累加器累加器A中,余数存放在寄存器中,余数存放在寄存器B中,且中,且CY和溢出标志位和溢出标志位OV清清“0”。如果。如果B的内容为的内容为“0”(即除数为(即除数为“0”),则存放结果),则存放结果的的A、B中的内容不定,并溢出标志位中的内容不定,并溢出标志位OV置置“1”。第37页,共94页。38【例【例7.4】(A)=0FBH,(B)=12H,执行指令,执行指令 DIV AB结果为结果为(A)=0DH,(B)=11H,CY=0,OV=0。第38页

47、,共94页。39 移位与逻辑运算指令共有移位与逻辑运算指令共有24条,有左条,有左/右移位右移位、清零和取反、与、或、异或等逻辑操作。这类、清零和取反、与、或、异或等逻辑操作。这类指令一般会影响奇偶标志位指令一般会影响奇偶标志位P,但循环指令会影,但循环指令会影响响CY。一、移位操作(一、移位操作(4条)条)RL ARR ARLC ARRC A7.2.3 移位与逻辑运算指令移位与逻辑运算指令第39页,共94页。40第一条指令的功能是累加器第一条指令的功能是累加器A的的8位向左循环移位,位向左循环移位,位位7循环移入位循环移入位0,不影响标志位。,不影响标志位。第二条指令的功能是累加器第二条指令

48、的功能是累加器A的内容向右循环移一的内容向右循环移一位,位位,位0移入到位移入到位7。第三条指令的功能是将累加器第三条指令的功能是将累加器A的内容和进位标志的内容和进位标志位位CY一起向左循环移一位,一起向左循环移一位,A的第的第7位移入进位位位移入进位位CY,CY移入到移入到A的的0位,不影响其他标志位。位,不影响其他标志位。第四条指令的功能是累加器第四条指令的功能是累加器A的内容和进位标志的内容和进位标志CY一起向右循环移一位,一起向右循环移一位,A的的0位移入到位移入到CY,CY移入移入A的第的第7位。位。第40页,共94页。41二、清零和取反(二、清零和取反(2条)条)CLR ACPL

49、 A第一条指令的功能是累加器第一条指令的功能是累加器A清清“0”。不影响。不影响CY、OV等标志位。等标志位。第二条指令的功能是将累加器第二条指令的功能是将累加器A的内容按位逻辑的内容按位逻辑取反,不影响标志位。取反,不影响标志位。第41页,共94页。42三、逻辑与指令(三、逻辑与指令(6条)条)ANL A,Rn;(A)(Rn)A,Rn=R0R7 ANL A,Direct;(A)(Direct)A ANL A,#Data;(A)#Data A ANL A,Ri;(A)(Ri)A,Ri=R0,R1ANL Direct,A;(Direct)(A)Direct ANL Direct,#Data;(D

50、irect)#Data Direct 这组指令的功能是在指定的变量之间以位为基础这组指令的功能是在指定的变量之间以位为基础进行进行“逻辑与逻辑与”操作,结果存放到目的变量所在操作,结果存放到目的变量所在的寄存器或存储器中。的寄存器或存储器中。第42页,共94页。43四、逻辑或指令(四、逻辑或指令(6条)条)ORL A,Rn;(A)(Rn)A,n=07ORL A,Direct;(A)(Direct)AORL A,#Data;(A)#DataAORL A,Ri;(A)(Ri)A,i=0,1ORL Direct,A;(Direct)(A)DirectORL Direct,#Data;(Direct)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(MCS51单片机的指令与程序设计课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|