单元3 MCS-51单片机指令系统(1)
- 格式:docx
- 大小:40.26 KB
- 文档页数:5
单元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 7、请对下列各组数分别计算“与”、“或”、“异或”的结果: (1)10011010和00001111 (2)11010011和01011010 (3)11001100和00110011 (4)10101010和11111111 七、自我检查题答案
1、(A)=20H,(B)=00H,(20H)=20H 2、单片机的寻址方式有:
(1)直接寻址。访问对象与寻址范围是内部RAM和特殊功能寄存器。 (2)寄存器寻址。访问对象与寻址范围是工作寄存器R0-R7。
(3)寄存器间接寻址。访问对象与寻址范围是内部RAM和特殊功能寄存器。 (4)立即寻址。操作数包含在指令中。
(5)变址寻址。变址寻址是以DPTR或PC作为基址寄存器,以累加器A作为变址寄存器,将两寄存器的内容相加形成16位地址形成操作数的实际地址。访问对象与寻址范围是程序存储器。
(6)位寻址。对象与寻址范围是片内RAM中的20H―2FH字节单元对应的位单元00H―7FH,特殊功能寄存器中的某些位也可进行位寻址,这些单元既可以采用字节方式访问它们,也可采用位寻址的方式访问它们。
(7)相对寻址。相对寻址方式是为了程序的相对转移而设计的,它是以PC的内容为基址,加上给出的偏移量作为转移地址,从而实现程序的转移。转移的目的地址为: 目的地址=转移指令地址+转移指令字接数+偏移量
值得注意的是,偏移量是有正负号之分的,偏移量的取值范围是当前PC值的-128―+127之间。
3、访问片内RAM有直接寻址、寄存器间接寻址。访问片外RAM有变址寻址、寄存器间接寻址。访问ROM有变址寻址。
4、(1)将累加器内容送工作寄存器R。的指令:MOV A,R0 (2)将累加器内容送片内RAM的7BH单元的指令:MOV 7BH,A (3)将累加器内容送片外RAM的7BH单元的指令:MOV R0,#7BH MOVX @R0,A
(4)将累加器内容送片外RAM的007BH单元的指令:MOV DPTR,#007BH