单元3 MCS-51单片机指令系统(1)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单元3 MCS-51单片机指令系统(1)
单元三 MCS-51单片机指令系统
一、学习目标与要求
1、了解MCS-51单片机的寻址方式、指令结构及指令长度、指令周期等概念。
2、了
解MCS-51单片机指令系统结构。 3、掌握常用指令的功能及指令操作方式。
4、能应用MCS-51单片机常用指令进行简单程序编写。
5、能解决简单应用课题程序
设计。二、本章重点内容 1、指令寻址方式
直接寻址、立即寻址、寄存器寻址、间接寻址、变址寻址、相对寻址、位寻址。 2、
指令系统(1)数据传送指令(2)算术运算指令(3)逻辑运算指令(4)转移指令(5)位指令
三、本章内容的前后联系 1、本章内容与前面内容的联系
单片机的指令执行过程同单片机的内部结构密切相关,他包括:单片机存储器空间、
端口结构、程序状态字(PSW)、程序存储器中的常数表格等等。 2、与后面章节联系
指令是构成程序的基础,所以,必须注意掌握每一条指令的功能与使用特点,为后面
汇编语言程序设计打好基础。四、学习方法指导:
学习单片机指令系统要注意对指令功能及操作的理解,常用指令要在较短的时间内采
取强化记忆的方式背记下来,同时,通过编写应用程序熟练掌握指令的应用环境。 1、对
指令功能的理解以及常用与不常用指令
(1)数据传送指令中大部份指令的功能较为简单容易理解,难点是对查表指令MOVC A,@A+DPTR和MOVC A,@A+PC的理解,其中MOV A@A+DPTR是常用指令,它允许将常数表
格存放在程序存储器内的任何位置,查表时只需将表的首地址赋1台数据指针DPTR(即DPTR指向表首地址),而A中的值是表内偏移地十,指令将程序存储器中(A+DPTR)单元中的内容传送到累加器A(即查表)。而MOVC A@A+PC指令形成的查表地址是(A)+(PC),其中程序计数器PC为该MOVC指令的下一条指令的地址(即所谓当前的PC值),往往要计
算当前PC值与表首地址的距离,将该距离加到累加器A中去,所以用MOVC,A@A+PC
指令查表ee较麻烦,故该指令不是常用指令,半字节交换(XCHD)指令是常用指令,而
累加器A高4位与低4位数据交换指令(SWAP指令)是常用指令。
(2)算术运送指令大多是常用指令,功能简明确,大多数指令以累加A为第一操作数,运算结果保存在累加A中,同一种运算的指令,第二操作数的来源于以来自不同的存
储空间,也可以是相同的存储空间,但采用不同的寻址方式,例如将累加器A中的内容与
片内RAM中50H单元的内容相加。
第二操作数采用直接寻址:ADD A:50H 第二操作数采用寄存器间接寻址:MOV R0,
#50H ADD A,@R0
MCS-51单片机指令系统中只有带进位的减法指令,应用时要根据实际情况确定是否对进位标志清零。使用乘除法指令时,应注意每操作(被乘数或被除数)与第二操作数(乘
数或除数)的存储位置以及运算结果的存储位置。
(3)逻辑运算指令大多也是功能简单常用指令,移位指令的作有征收数字电子技术
中移位寄存器的作用类似,每次将累加器A中的内容左移(或右移)一位,数值上相当于
将原数乘以2(或除以2)。
(4)控制转移指令是系统学习的难点之一,它难在条件转移指令中对转移条件的理解,它即要判断条件是否满足,又要确定程序是否转移。其实掌握这类指令并不难,简言
之“满足条件则转移,不满足条件则执行下一条指令”。无条件转移指令容易理解,但要
注意转移范围分别是-127B~+128B(短转移)或±2KB范围(相对转移)或64KB范围(长
转移)。子程序调用与返回指令操作与堆拽操作有一定关系,要注意出入拽顺序。
(5)位操作指令是MCS-51单片机的特色,由于可以按位操作,方便了程序设计。位
操作指令中的条件转移指令是短转移指令(-127~+128B范围),而且都是以条件位的状态作转移条件的。五、典型例题分析
【例题3.1 】 0.2秒软件延时程序,设单片机振荡频率为12MHz。 TIME:MOV R6,#200 TIME1:MOV R7,#200 TIME2:NOP NOP NOP
DJNZ R7,TIME22 DJNZ R6,TIME1 RET
N R7-1=0? Y R6-1=0? Y 返回内循环外循环开始200→R6 200→R7 分析:1、
该程序流程图如图1所示
2、由三条NOP指令和DJNZR7,TIME2 指令构成内循环,内循环次数为200次(R7
从200减到等于0),延时时间为5个机器周期×200=1000机器周期,因fosc=12MHz,一个机器周期TC=1/(fosc/12)=1us,因此延时时间为1ms。
3、外循环次数同样为200次,因此总延时时间为
f=200×[(5×200)+2+1]=202100us≈200ms=0.2s
4、采用三条NOP指令是为了方便延时时间的计算。
【例题3.2】在程序存储器中从而2000H单元开始依次存放置0~9的平方值:0、1、4、9、?、81,要求依据累加器A中的值(0~9)来查找所对应的平方值,分析下述程序的
结果。
MOV DPTR,#2000H MOV A,#09H MOVC A,@A+DPTR
执行结果:(DPTR)=2000H,(A)=81H。
这里根据累加器A中的值(0~9),利用查表指令来查找所对应的平方值。【例题
3.3】对BCD码加法65+58 =123(BDH)进行十进制调整。
解:高R5(高)、R4(低)为被加数;高R3(高)、R2(低)为加数;相加和的结
果存和:高R6(万)、R5(千、百)、R4(十、个)。参考程序如下:
MOV A,R4 ;被加数十位?个位送入A ADD A,R2 ;十位?个位相加 DA A ;和的十位?个位调整 MOV R4,A ;和的十位?个位存入R4 MOV
A,R5 ;被加数千位?百位送入A ADDC A,R3 ;千位?百位的和加低位进位 DA A ;和的千位?百位调整 MOV R5,A ;和的千位?百位存入R5 MOV A,#00H ; A清零 ADDC A,#00H ;求和的万位值 MOV R6,A ;和的万位存入R6
若程序执行前:(R5)=(98H)BCD,(R4)=(76H)BCD,(R3)=(54H)BCD,
(R2)=(32H)BCD,则执行后:(R6)=(01H)BCD,(R5)=(53H)BCD,(R4)=
(08H)BCD六、自我检查题
1、试确定下列程序运行后,累加器A,寄存器B,20H单元中的内容多少秒。
MOV 20H,#20H MOV A,20H MOV B,A MOV A,#40H DIV AB
2、MCS一51系列单片机的寻址方式有哪几种?分析各种寻址方式的访问对象与寻址范围。
3、要访问片内RAM,有哪几种寻址方式? 要访问片外RAM,有哪几种寻址方式? 要
访问ROM,有哪几种寻址方式?
4、请选用指令,分别达到下列操作: (1)将累加器内容送工作寄存器R。。
(2)将累加器内容送片内RAM的7BH单元。 (3)将累加器内容送片外RAM的7BH单元。
(4)将累加器内容送片外RAM的007BH单元。 (5)将ROM007BH单元内容送累加器。
5、请写出下列各指令的机器码与执行下列指令后的结果(指各有关寄存器、RAM单元
与端口的内容)。 MOV 05H,#55H MOV 30H,#05H MOV R0,#30H MOV A,@R0 MOV R1,A MOV B,@Rl MOV @R0,P1 MOV P3,P1 MOV 10H,#20H MOV 30H,10H
6、已知:(A)=35H,(R0)=6FH,(n)=FCH,(SP)=30H,试分别写出下列指令执行的结
果: (1)MOV R6,A (2)MOV @R0,A (3)MOV A,#90H (4) MOV 80H,#81H
(5)MOVX @R0,A (6)PUSH A (7)SWAP A
(8)XCH A,R0