MCS51单片机的指令与程序设计课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《MCS51单片机的指令与程序设计课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MCS51 单片机 指令 程序设计 课件
- 资源描述:
-
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
展开阅读全文