单片机原理及应用 教学课件 ppt 作者 佟云峰 第三章指令系统及汇编语言程序设计

上传人:E**** 文档编号:89561185 上传时间:2019-05-28 格式:PPT 页数:93 大小:627KB
返回 下载 相关 举报
单片机原理及应用 教学课件 ppt 作者 佟云峰 第三章指令系统及汇编语言程序设计_第1页
第1页 / 共93页
单片机原理及应用 教学课件 ppt 作者 佟云峰 第三章指令系统及汇编语言程序设计_第2页
第2页 / 共93页
单片机原理及应用 教学课件 ppt 作者 佟云峰 第三章指令系统及汇编语言程序设计_第3页
第3页 / 共93页
单片机原理及应用 教学课件 ppt 作者 佟云峰 第三章指令系统及汇编语言程序设计_第4页
第4页 / 共93页
单片机原理及应用 教学课件 ppt 作者 佟云峰 第三章指令系统及汇编语言程序设计_第5页
第5页 / 共93页
点击查看更多>>
资源描述

《单片机原理及应用 教学课件 ppt 作者 佟云峰 第三章指令系统及汇编语言程序设计》由会员分享,可在线阅读,更多相关《单片机原理及应用 教学课件 ppt 作者 佟云峰 第三章指令系统及汇编语言程序设计(93页珍藏版)》请在金锄头文库上搜索。

1、第三章 指令系统及汇编语言程序设计,学习要点: 学习指令系统中的111条指令 学习汇编语言程序设计的方法,第三章 指令系统及汇编语言程序设计 第一节 指令系统概述 第二节 单片机的寻址方式 第三节 指令系统 第四节 汇编语言程序设计 本章小结,返回主目录,第一节 指令系统概述,MCS-51系列单片机指令系统共有111条指令,其中三字节指令17条,双字节指令45条,单字节指令49条。在这111条指令中,有64条指令是单机器周期指令,45条指令是双机器周期指令,只有乘法和除法指令需四个机器周期。若系统时钟为12MHZ时,大多数指令执行时间仅需1S,最长的乘除法指令也仅需4s。按功能可划分为五类:

2、1.数据传送类指令29条; 2.算术运算类指令24条; 3.逻辑操作类指令24条; 4.位操作类指令17条; 5.控制转移类指令17条。,3.1.1 指令格式,MCS-51单片机汇编语言指令由操作码助记符和操作数两部分组成。 指令格式如下: 标号: 操作码 目的操作数,源操作数 ;注释 其中方括号括起来的是可选部分可有可无,根据需要而定。 标号:一条指令的符号地址。同一标号在一个程序中只能定义一次。 操作码和操作数:操作码用于规定指令执行的操作,是指令功能的英文缩写;操作数用于给指令的操作提供数据或地址,如果指令中有两个操作数,则两个操作数之间以“,”间隔;操作码和操作数构成指令的主体,它们之

3、间以空格隔开。 注释:用于对指令进行解释说明。恰当的注释有助于程序的理解、阅读和交流。注释的长度不限,一行不够时可以换行接着写,但换行时应注意在开头用分号“;”。汇编程序对注释将不做任何处理。 例:LOOP:MOV A,#00H ;累加器清0。 标号是LOOP,操作码是MOV,操作数是A(目的操作数)和00H(源操作数),注释是累加器清0。,312 常用符号注释,在讲指令的寻址方式和指令系统之前,我们先了解一下指令中常用的一些符号。 1Ri(i=0,1);当前选中的工作寄存器组中可作为地址指针的两个工作寄存器R0、R1。它在片内RAM中的地址也由RS1和RS0确定。 2Rn(n=07);当前选

4、中的工作寄存器组R0R7,它在片内RAM中的地址由PSW中RS1、RS0确定。 3#data ;8位立即数,即包含在指令中的8位常数。 4#data 16 ;16位立即数,即包含在指令中的16位常数。 5Data ;8位片内RAM单元(包括SFR)的直接地址。 6addr 11 ;11位目的地址。用于ACALL和AJMP指令中,目的地址必须放在下一条指令第一个字节同一2K字节程序存储器地址空间之内。 7addr 16 ;16位目的地址。用于LCALL和LJMP指令中,目的地址在64K字节程序存储器地址空间。,8Rel ;补码形式的8位地址偏移量。用于相对转移指令中,偏移量以下一条指令第一字节地

5、址为基址,地址偏移量范围为-128+127。 9Bit ;片内RAM或SFR的直接寻址位地址。 10/ ;位操作指令中,表示对该位先求反再参与操作,但不影响该位原值。 11 ;间接寻址方式中,表示间址寄存器的符号。 12() ;表示中的内容。 13() ;表示由所指地址单元中的内容。 14 ;指令操作流程,将箭头左边的内容送到箭头右边的单元中。 15$ ;表示当前指令的地址。 16nn ;表示16位二进制数或4位十六进制数。,第二节 单片机的寻址方式,321单片机的寻址范围,对于MCS-51系列单片机来说,它的各种寻址方式具有不同的寻址空间,总的说有程序存储器、数据存储器两个寻址空间。具体如下

6、表3-1所示。,1立即寻址 所提供的操作数直接包含在指令中,这种寻址方式就叫立即寻址,这个操作数叫立即数。所谓立即数是指具有固定数值的操作数,即常数。它紧跟在操作码的后面,与操作码一起放在代码段区域中。用符号“#”表示,以区别直接地址。 例如:MOV A,#20H;(20H)A;执行过程如图3 - 1所示。 在MCS-51单片机的指令系统中, 立即数可以是8位(#data),也可以是16位(#data16)。向数据指针DPTR传送的就是16位的立即数,立即数的高8位送入DPH中,低8位送入DPL中。 例如:MOV DPTR,#2211H 这是一个三字节的指令,指令代码为90H、22H、11,3

7、22 七种不同寻址方式,PC,01110100,操作码,00100000,00100000,立即数,图3 1 立即寻址(MOV A,#20H)执行示意图,ACC,2直接寻址 直接寻址就是在指令中包含了操作数的地址,该地址直接给出了参加运算或传送的单元或位,它可以访问低128个字节RAM单元,221个位地址空间以及特殊功能寄存器SFR,且SFR和位地址空间只能用直接寻址方式来访问。 例如:MOV A,30H;(30H) A 这条指令把30H单元的内容送入累加器A中,则执行该指令后累加器(A)=22H。如图3 2所示。,PC,11100101,操作码,30H,片内RAM区,22H,ACC,22H,

8、00110000,图3 2 直接寻址(MOV A,30H)执行示意图,直接地址,3寄存器寻址 操作数包含在CPU内部可寻址的寄存器中,所以这种寻址方式叫寄存器寻址。对累加器A、通用寄存器B、数据指针寄存器DPTR和进位位C,其寻址时具体的寄存器已隐含在其操作码中,而对选定的8个工作寄存器R0R7,则在用操作码的低三位指明所用的寄存器。用户可用PSW中的RS1、RS0来选择寄存器组,再用操作码中低三位来确定是组内哪一个寄存器,达到寻址的目的。 例如:MOV A,R2 ;(R2) (A) 这条指令把R2中的内容送入累加器A中。指令代码形式为11101010B,十六进制为0EAH,注意指令代码中低三

9、位为010,表示操作数为R2。现假设PSW中RS1、RS0分别为0、0,则可知现在的R2在第0组 ,则它的地址为O2H,则执行该指令后累加器(A)=33H。该指令的执行过程如图3 - 3所示。,PC,11110110,操作码,02H,片内RAM区,33H,ACC,33H,图3 3 寄存器寻址(MOV A,R2)执行示意图,4寄存器间接寻址 操作数所指定的寄存器中存放的不是操作数本身,而是操作数地址,这种寻址方式称为寄存器间接寻址。可用来间接寻址的寄存器有:R0、R1以及16位的数据指针DPTR,使用时前面加符号表示间接寻址。当访问片内RAM或片外RAM低256字节时,一般用R0或R1作间接寻址

10、寄存器,否则用16位的数据指针DPTR作间接寻址寄存器。 例如:MOV A,R0;(R0)(A) 指令代码形式为11100110,十六进制为0E6H,注意最低位为0,表示现用寄存器为R0。现假设工作寄存器为第0组,R0中存放30H,30H单元的内容为11H,则执行该指令后累加器(A)=11H。该指令的执行过程如图3 - 4所示。,PC,11100110,操作码,R0,片内RAM区,00110000,30H,片内RAM区,11H,ACC,11H,图3 4 寄存器间接寻址(MOV A,R0)执行示意图,5变址寻址 以某个寄存器的内容为基地址,加上地址偏移量形成真正的操作数地址,这种寻址方式称为变址

11、寻址。MCS-51单片机由DPTR 或PC为基址寄存器,由累加器A 作为偏移量寄存器。这种寻址方式常用于查表操作。 例如:MOVC A,A+PC;(A)+(PC)(A) 这条指令把PC中的内容和A中的内容相加作为16位程序存储器地址,再把该地址内容送入累加器A(55H)中。执行该指令过程如图3 - 5所示。,2051H,2040H,程序存储器,2041H,(55H )10H,A,PC,ALU,图3 5 变址寻址(MOV A,A+PC)执行示意图,6相对寻址 将程序计数器PC中的当前值(该当前值是指执行完这条相对转移指令后的指令地址)与指令第二字节给出的偏移量相加,其结果作为跳转指令的转移地址,

12、这种寻址方式称为相对寻址。指令第二字节给出的偏移量是8位带符号数,它在指令中以补码形式给出,所转移的范围为-128+127。 例如:JZ 10H 这条指令表示若进位位Z=0,则不跳转;若进位位Z=1,则以PC中的当前值为基地址,加上偏移量10H后所得到的地址为该转移指令的目的地址。 现假设该指令存放于2000H、2001H单元,且Z=1,则开始取指令后,PC当前值为2002H,对Z进行判断后,PC内容与偏移量10H相加,得到转移目的地址2012H。故执行完该指令后,PC中的值为2012H,程序将从2012H开始执行。该指令的执行过程如图3 - 6所示。,2012H,2001H,程序存储器,20

13、02H,PC,ALU,图3 6 相对寻址(JZ 10H)执行示意图,2000H,在实际工作中,有时候需根据已知的源地址(相对转移指令操作码所在地址)和目的地址计算偏移量rel。现以两字节相对转移指令为例,讨论偏移量rel的计算。 正向跳转时: rel=目的地址-(源地址+2)=地址差-2 反向跳转时,目的地址小于源地址,rel用负数的补码表示: rel=(目的地址-(源地址+2)补 =0FFH-(源地址+2-目的地址)+1 =100H-(源地址+2-目的地址)=0FEH-地址差,7位寻址 位寻址是指对片内RAM的位寻址区和某些可位寻址的特殊功能寄存器进行位操作时的寻址方式。位地址与直接寻址中的

14、字节地址形式完全一样,主要由操作码来区分,使用时应注意。 例如:CLR 00H 假设指令执行前(20H)=0FH,则执行该指令后,(20H)=0EH。,第三节 指令系统,传送类指令是指令系统中使用最多的一类指令,主要用于数据的传送、保存以及交换等。 1以寄存器Rn为目的操作数的指令(3条) 功能:把源操作数指定的内容送到所选定的工作寄存器Rn中。有立即、直接和寄存器3种寻址方式。 MOV Rn,#data ;#data(Rn) MOV Rn,Data ;(Data)(Rn) MOV Rn,A ;(A)(Rn) 2以累加器A为目的操作数的指令(4条) 功能:把源操作数指定的内容送入累加器A中。有

15、立即、寄存器、直接和寄存器间接4种寻址方式。,3.3.1 数据传送指令,MOV A, #data ;#data(A) MOV A,Rn ;(Rn)(A) MOV A,Data ;(Data)(A) MOV A,Ri ;((Ri))(A) 3以直接地址为目的操作数的指令(5条) 功能:把源操作数指定的内容送到由直接地址data所指定的片内RAM中。有立即、寄存器、直接和寄存器间接4种寻址方式。 MOV Data,#data ;#data(data) MOV Data,A ;(A)(Data) MOV Data,Rn ;(Rn)(Data) MOV Data1,Data2 ;(Data2)(Data1) MOV Data,Ri ;(Ri)(Data),例如:1把立即数送到片内RAM的30H单元。 MOV 30H,#33H ;33H(30H) 2利用直接寻址把P2口的内容传送到P1口。 MOV P1,P2 ;(P2)(P1) 4以间接地址为目的操作数的指令(3条) 功能:把源操作数指定的内容送到以Ri中的内容为地址的片内RAM中。有立即、寄存器和直接3种寻址方式。 MOV Ri,#data ;#data

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号