中职中专单片机原理电子教案3.docx
- 文档编号:11765100
- 上传时间:2023-04-01
- 格式:DOCX
- 页数:44
- 大小:254.73KB
中职中专单片机原理电子教案3.docx
《中职中专单片机原理电子教案3.docx》由会员分享,可在线阅读,更多相关《中职中专单片机原理电子教案3.docx(44页珍藏版)》请在冰豆网上搜索。
中职中专单片机原理电子教案3
课题
第3章指令系统与汇编语言程序设计
3.1寻址方式
学时
2学时
授课类型
理论讲授
授课班级
14工业
教学目标
1.知识目标
了解单片机的指令格式,掌握MCS-51系列单片机的寻址方式。
2.能力目标
通过直观教学和教师的具体讲解,培养学生的逻辑思维和抽象思维能力;培养学生归纳总结问题的能力。
3.情感目标
通过对专业入门知识的生动形象的教学,使学生对本课程的产生浓厚兴趣,激发学生的学习热情。
教学重点
1.MCS-51系列单片机的寻址方式。
教法
采用“媒体演示——分析概括——巩固提高”的教学模式
教学过程
过程设计
创设情景
导入:
一台计算机所能执行的指令集合就是它的指令系统。
一般来说,不同系列CPU的指令系统不同,本章主要讲解MCS-51系列单片机指令系统。
单片机中主要使用机器语言和汇编语言,由于机器语言具有不易书写等缺点,所以单片机一般采用使用符号指令的汇编语言。
本节主要讲述MCS-51系列单片机的寻址方式。
理解
MCS-51的各指令
掌握各种寻址方式并理解它们的使用范围
一、寻址方式
寻址方式是指在指令执行过程中,如何找到操作数有效地址的方法。
MCS-51单片机指令系统提供了7种不同的寻址方式。
1.立即寻址方式
指令提供的操作数为直接参与操作的8位或16位数据。
这种方式的操作数又称为立即数。
书写时,在立即数面前加“#”标志。
例如:
MOVA,#20H。
MOVDPTR,#data16。
第一条指令是将立即数20H送累加器A,指令执行后A=20H。
第二条指令是将立即数data16送数据指针DPTR中,指令执行后DPTR=data16。
2.直接寻址方式
直接寻址是指在指令中直接给出操作对象的存储单元地址。
直接寻址方式的寻址范围包括:
内部RAM低128单元、特殊功能寄存器和一些程序控制指令。
例如:
MOVA,3AH。
该指令将内部RAM中3AH单元的内容送给累加器A,若(3AH)=20H,执行示意图如图3.1。
执行结果A=20H。
图3.1“MOVA,3AH”示意图
3.寄存器寻址方式
寄存器寻址就是操作对象放在寄存器中,指令只提供存放操作对象的寄存器,执行时通过寻找寄存器得到操作对象。
书写时,用符号名称表示寄存器。
寄存器寻址方式的寻址范围包括:
四个工作寄存器组共32个通用寄存器、部分特殊功能寄存器。
例如:
MOVA,R0。
该指令把寄存器R0的内容送到累加器A中,若R0=20H,执行过程如图3.2。
指令执行后A=20H。
图3.2“MOVA,R0”指令示意图
4.寄存器间接寻址方式
寄存器间接寻址就是操作对象的存储器单元地址存放在寄存器中,执行时通过寻找指定的寄存器,取出其内容作为存储单元地址,从而得到操作的对象。
书写时,用“@”和寄存器符号表示。
寄存器间接寻址的寻址范围包括:
内部RAM低128字节、外部RAM64KB、堆栈操作指令。
例如:
设寄存器R1=60H,A=20H,执行指令ADDA,@R1。
若(60H)=10H,执行过程如图3.3。
执行结果A=30H。
图3.4“MOVA,@R1”指令示意图
5.相对寻址方式
相对寻址是指以指令中给出的操作数作为程序转移的偏移量。
书写时,以“rel”表示地址偏移量。
目标地址表示为:
目标地址=转移指令首地址+转移指令字节数+rel
例如:
JC3AH。
执行过程如图3.4。
图3.4“JC3AH”指令示意图
6.变址寻址方式(又称基址寄存器加变址寄存器间接寻址)
指令提供了以DPTR或PC为基址、以累加器A为变址的两种寄存器,通过将两种寄存器的内容相加形成的16位数据,作为操作对象存储单元的地址。
MCS-51系列单片机的变址寻址只能对程序存储器进行寻址,而且变址寻址指令只有三条:
MOVCA,@A+DPTR
MOVCA,@A+PC
JMP@A+DPTR
例如:
MOVCA,@A+DPTR。
若A=35H,DPTR=3F30H,那么操作对象存储单元的地址为3F65H,若(3F65H)=5CH,执行过程如图3.5。
则执行结果为A=5CH。
图3.5“MOVCA,@A+DPTR”指令示意图
7.位寻址方式
指令给出的操作数是内部数据存储器中的可寻址位。
书写时,有四种表示方法:
直接使用位地址、位名称表示法、单元地址加位表示法、专用寄存器名称加位表示法。
MCS-51单片机的位寻址范围包括:
内部RAM中的位寻址区、特殊功能寄存器的可寻址位。
例如:
ANLC,21H.5。
该指令将进位标志CY和内部RAM的21H单元的第5位进行逻辑与运算,结果保存到C中。
总结
本节主要讲解如何通过寻找操作数的有效地址,来获得真正的操作对象。
为汇编程序打基础。
板书设计
第3章指令系统与汇编语言程序设计
3.1寻址方式
一、立即寻址方式
1、定义2、举例
二、直接寻址方式
1、定义2、举例
三、寄存器寻址方式
1、定义2、举例
四、寄存器间接寻址方式
1、定义2、举例
五、相对寻址方式
1、定义2、举例
六、变址寻址方式
1、定义2、举例
七、位寻址方式
1、定义2、举例
思考题
名词解释:
寻址方式、操作数、
P743.1(5)
课后反思
课题
第3章指令系统与汇编语言程序设计
3.2指令系统
学时
4学时
授课类型
理论讲授
授课班级
14工业
教学目标
1.知识目标
掌握MCS-51指令系统的数据传送指令、算术指令、逻辑运算指令、位操作指令和控制转移指令。
2.能力目标
通过直观教学和教师的具体讲解,培养学生的逻辑思维和抽象思维能力;培养学生归纳总结问题的能力。
3.情感目标
通过对专业入门知识的生动形象的教学,使学生对本课程的产生浓厚兴趣,激发学生的学习热情。
教学重点
1.MCS-51指令系统的数据传送指令、算术指令、逻辑运算指令、位操作指令和控制转移指令。
教法
采用“媒体演示——分析概括——巩固提高”的教学模式
教学过程
过程设计
创设情景
导入:
复习MCS-51单片机的指令和寻址方式,不同的指令助记符和不同的寻址方式的组合构成了MCS-51的指令系统,本节着重介绍MCS-51指令系统。
熟记描述指令的符号
通过举例来熟记29条数据传送指令的书写及其功能
通过举例熟记算术指令的书写及其功能
通过举例熟练掌握24条逻辑运算指令
注意指令执行对位操作位的影响
掌握程序控制指令各指令的功能及应用
通过举例来掌握位操作指令
按指令的功能,MCS-51指令系统可分为五大类:
·数据传送指令
·算术运算指令
·逻辑运算指令
·程序控制指令
·位操作指令
描述指令的一些符号的意义:
·Rn(n=0~7):
表示当前工作寄存器组R0~R7中的某一个寄存器。
·@Ri(i=0~7):
可以作间接寻址的寄存器,只能是R0和R1两个寄存器,“@”是间接寻址标识符。
·direct:
内部RAM的8位地址,可以是内部RAM的单元地址(00H~7FH)或特殊功能寄存器地址。
·#data:
8位立即数,其中“#”是立即数标识符。
·#data16:
16位立即数。
·addr11:
11位目的地址。
用于ACALL和AJMP指令中,转移范围为2KB。
·addr16:
16位目的地址。
用于LCALL和LJMP指令中,转移范围为64KB。
·rel:
相对转移指令中的8位偏移地址,范围是-128~+127。
·DPTR:
数据指针,用作16位的地址寄存器。
·bit:
内部RAM或特殊功能寄存器中的直接寻址位。
·rrr:
在操作码中,表示R0~R7寄存器的编码。
·A:
累加器,写作“A”时,是寄存器寻址;写作“ACC”时,是直接寻址。
·B:
特殊功能寄存器,用于MUL和DIV指令中。
·/:
位操作数的前缀,表示对该位操作数取反。
·(存储单元地址):
表示某存储单元的内容。
·(间址寄存器):
由寄存器间接寻址的单元中的内容。
一、数据传送指令
功能是实现计算机内不同存储区域之间的信息传递。
MCS-51数据传送如下图3.6:
图3.6数据传送示意图
1.内部RAM、特殊功能寄存器之间的数据传送
·立即数传送指令
MOVA,#data;A←data
MOVdirect,#data;(direct)←data
MOVRn,#data;Rn←data
MOV@Ri,#data;(Ri)←data
MOVDPTR,#data16;DPH←data高8位,DPL←data低8位
例3.1分析下列指令的寻址方式以及指令执行后存储单元和寄存器的内容。
MOVA,#20H;目的操作数采用寄存器寻址,A=20H
MOV32H,#23H;目的操作数采用直接寻址,(32H)=23H
MOVR4,#2FH;目的操作数采用寄存器寻址,R4=2FH
MOV@R0,#5AH;目的操作数采用寄存器间接寻址,(R0)=5AH
MOVDPTR,#203FH;目的操作数采用寄存器寻址,DPTR=203FH
·内部RAM单元之间的数据传送指令
MOVdirect1,direct2;(direct1)←(direct2)
MOVdirect,Rn;(direct)←Rn
MOVRn,direct;Rn←(direct)
MOVdirect,@Ri;(direct)←(Ri)
MOV@Ri,direct;(Ri)←(direct)
例3.2分析指令的寻址方式和执行结果
MOVP2,R2;目的操作数采用直接寻址,源操作数为寄存器寻址;
P2=R2,该指令等价于MOV0A0H,R2
MOV2FH,30H;两个操作数均采用直接寻址,(2FH)=(30H)
MOV20H,@R1;目的操作数为直接寻址,源操作数为寄存器间接;寻址,执行结果:
(20H)=(R1)
·与累加器有关的数据传送指令
MOVA,Rn;A←Rn
MOVRn,A;Rn←A
MOVA,direct;A←(direct)
MOVdirect,A;(direct)←A
MOVA,@Ri;A←(Ri)
MOV@Ri,A;(Ri)←A
例3.3分析下列指令的寻址方式和执行结果
MOVA,R5;两操作数均采用寄存器寻址,A=R5
MOVA,0F0H;原操作数为直接寻址,A=(0F0H)
MOVA,@R1;源操作数为寄存器间接寻址,A=(R1)
2.累加器与外部RAM之间的数据传送
MOVXA,@DPTR;A←(DPTR)
MOVX@DPTR,A;(DPTR)←A
MOVXA,@Ri;A←(Ri)
MOVX@Ri,A;(Ri)←A
例3.4已知DPTR=2000H,片外RAM(2000H)=05H,R1=0F0H,片外RAM(0F0H)=0A0H。
MOVXA,@DPTR;指令执行后,A=05H
MOVX@R1,A;指令执行后,片外RAM(0F0H)=05H
3.程序存储器中的数据传送到累加器A的指令
只能从程序存储器向累加器传送数据。
MOVCA,@A+DPTR;A←(A+DPTR)
MOVCA,@A+PC;A←(A+PC)
例3.5把累加器A中的十六进制数字00H~0FH转换成ASCII码。
INCA;调整偏移量(数据表的首地址与MOVC指令间隔1个单元)
MOVCA,@A+PC;查表取数
RET;子程序返回
DB30H,31H,32H,33H,34H;在程序存储器中顺序存放
DB35H,36H,37H,38H,39H;0~F的ASCII码
DB41H,42H,43H,44H,45H,46H
假如上述指令代码在程序存储器的存储如下图3.7所示。
如果累加器A=0FH,则执行INCA后,A=10H,程序存储器取出MOVC指令后,PC=2001H,则
A+PC=2011H,于是执行MOVC指令后A=(2011H)=46H,即将累加器A中十六进制数字F转换成相应的ASCII码46H。
图3.7例3.5程序存储器数据分布图
4.内部RAM单元与累加器A之间数据交换指令
·字节交换指令
XCHA,Rn;A←→Rn
XCHA,direct;A←→(direct)
XCHA,@Ri;A←→(Ri)
·半字节交换指令
XCHDA,@Ri;A(D3~D0)←→(Ri)(D3~D0),即累加器A的低4位与Ri间址的内部RAM单元的低4位交换。
·累加器A的高4位与低4位交换指令
SWAPA;A(D3~D0)←→A(D7~D4)
例3.6设A=4FH,R1=20H,内部RAM中(20H)=35H,则
XCHA,@R1;执行指令后,A=35H,(20H)=4FH
例3.7设R0=50H,A=3FH,内部RAM中(50H)=21H,则
XCHDA,@R0;指令执行后,A=31H,(50H)=2FH
5.堆栈操作指令
·进栈指令
PUSHdirect;SP←SP+1,(SP)←(direct)
·出栈指令
POPdirect;(direct)←(SP),SP←SP–1
例3.8已知SP=3AH,DPTR=1234H,则
PUSHDPL;SP←SP+1=3BH,(3BH)=34H
POPDPH;SP←SP+1=3CH,(3CH)=12H
执行指令后,SP=3CH,(3CH)=12H,(3BH)=34H
例3.9设SP=4FH,内部RAM的(4FH)=45H,(4EH)=01H则
POPPSW;PSW←(4FH)=45H,SP←SP-1=4EH
POPACC;ACC←(4EH)=01H,SP←SP-1=4DH
执行结果为:
SP=4DH,ACC=01H,PSW=45H
例3.10堆栈操作指令常用于子程序中
子程序入口处,保护现场的指令:
PUSHACC
PUSHPSW
子程序返回时,恢复现场的指令:
POPPSW
POPACC
注:
1.内部RAM的前128字节、特殊功能寄存器之间可以互相传送数据,但最多只允许一个操作数使用寄存器间接寻址。
2.访问特殊功能寄存器必须采用直接寻址,不能采用寄存器间接寻址,否则会引起错误。
3.MCS-51指令系统没有提供B寄存器寻址方式(乘法指令例外)。
4.注意累加器A和ACC两种写法的区别:
A为寄存器寻址方式,ACC为直接寻址方式。
二、算术运算指令
1.加减运算指令
加减运算指令的目的操作数是累加器A,源操作数可以是立即数、通用寄存器、内部RAM或特殊功能寄存器和Ri间址的内部RAM。
·加法指令ADD
功能:
将累加器和源操作数相加,结果送累加器A,源操作数不变。
形式:
ADDA,Rn;A+Rn→A
ADDA,direct;A+(direct)→A
ADDA,@Ri;A+(Ri)→A
ADDA,#data;A+data→A
注:
ADD指令影响程序状态字PSW的CY、AC、OV位。
例如,A=0C0H,R1=0AEH,执行ADDA,R1指令。
11000000
+10101111
01101111
运算结果:
A=6FH,AC=0,CY=1,OV=1。
·带进位加法指令ADDC
功能:
将累加器A、源操作数以及进位标志CY相加,结果送累加器A。
形式:
ADDA,Rn;A+Rn+CY→A
ADDA,direct;A+(direct)+CY→A
ADDA,@Ri;A+(Ri)+CY→A
ADDA,#data;A+data+CY→A
注:
ADDC指令影响程序状态字PSW的CY、AC、OV位。
·带借位减法指令SUBB
功能:
将累加器和源操作数相减,结果送累加器A,源操作数不变。
形式:
SUBBA,Rn;A-Rn-CY→A
SUBBA,direct;A-(direct)-CY→A
SUBBA,@Ri;A-(Ri)-CY→A
SUBBA,#data;A-data-CY→A
注:
SUBB指令影响程序状态字PSW的CY、AC、OV位。
·加1指令INC
功能:
该指令只有一个操作数,执行时把操作数的内容加1,结果送回原单元。
形式:
INCA;A+1→A
INCRn;Rn+1→Rn
INCdirect;(direct)+1→(direct)
INC@Ri;(Ri)+1→(Ri)
INCDPTR;DPTR+1→DPTR
注:
加1指令主要用于修改地址指针和计数次数,它对CY、AC、OV没有影响。
·减1指令DEC
功能:
该指令只有一个操作数,执行时把操作数的内容减1,结果送回原单元。
形式:
DECA;A-1→A
DECRn;Rn1→Rn
DECdirect;(direct)-1→(direct)
DEC@Ri;(Ri)-1→(Ri)
注:
该指令不影响CY、AC、OV。
2.乘除法指令
·乘法指令MUL
功能:
把累加器A和寄存器B中的无符号数相乘,所得16位乘积的低位字节存入A中,高位字节存入B中。
形式:
MULAB
例如:
A=1AH,B=20H,执行指令MULAB
执行结果为A=40H,B=03H,OV=1,CY=0
·除法指令DIV
功能:
用A中8位无符号数除以B中8位无符号数,所得商存入A中,余数存入B中,并将CY和OV置0。
形式:
DIVAB
例如:
A=0F4H,B=0AH,执行指令DIVAB
执行结果为A=18H,B=04H,OV=0,CY=0
3.十进制调整指令
功能:
把A中的数作为两个BCD数相加之和进行调整,得到两位正确的BCD数。
形式:
DAA
例如:
73-54=19
先执行9AH-54H,得到补熟46H,再执行73H+46H=0B9H,最后执行调整指令将0B9H加上60H得到19H,即得到正确的BCD数。
三、逻辑运算指令
1.逻辑与运算指令
逻辑与运算指令常用作字节清零或位清零。
共有6条指令:
ANLA,Rn;A∧Rn→A
ANLA,direct;A∧(direct)→A
ANLA,@Ri;A∧(Ri)→A
ANLA,#data;A∧data→A
ANLdirect,A;(direct)∧A→(direct)
ANLdirect,#data;(direct)∧data→(direct)
例如:
若A=0A6H,R1=0A4H,执行ANLA,R1后,A=0A4H
2.逻辑或运算指令
逻辑或运算可以实现对某个单元的某些位置1,其余位不变。
共有6条指令:
ORLA,Rn;A∨Rn→A
ORLA,direct;A∨(direct)→A
ORLA,@Ri;A∨(Ri)→A
ORLA,#data;A∨data→A
ORLdirect,A;(direct)∨A→(direct)
ORLdirect,#data;(direct)∨data→(direct)
3.逻辑异或运算
逻辑异或运算可以用来比较两个数据是否相等。
当两个数据异或结果为0,则表示相等,否则表示不相等。
共有6条指令。
XRLA,Rn;ARn→A
XRLA,direct;A(direct)→A
XRLA,@Ri;A(Ri)→A
XRLA,#data;Adata→A
XRLdirect,A;(direct)A→(direct)
XRLdirect,#data;(direct)data→(direct)
例如:
若A=7FH,R1=0A5H,则执行指令XRLA,R1后,A=0DAH。
4.累加器清0和取反指令
累加器清0指令:
CLRA;0→A
累加器按位取反指令:
CPLA;
→A
例如:
若A=55H,则执行指令:
CPLA;执行结果A=0AAH
CLRA;执行结果A=00H
5.循环移位指令
·循环右移指令:
RRA
功能:
将累加器A的内容逐位循环右移一位。
如图所示:
例如,若A=6AH=01101010B,执行RRA指令后,A=35H。
·循环左移指令:
RLA
功能:
将累加器A的内容逐位左移一位,如图所示:
例如,若A=0A3H=10100011B,执行RLA指令后,A=47B。
·带进位循环右移指令:
RRCA
功能:
将累加器A的内容和进位位一起逐位循环右移一位,如图所示:
例如,若A=4BH=01001011B,CY=1,执行RRLA指令后,A=0A5H,CY=1。
注:
此操作影响CY位。
·带进位循环左移指令:
RLCA
功能:
将累加器A的内容和进位位一起逐位循环左移一位,如图所示:
注:
此操作影响CY位。
四、程序控制指令
程序控制指令完成程序的转移、子程序的调用与返回、中断返回等功能。
指令运行的实质是改变程序计数器PC的值,使程序不按顺序执行,从而实现程序的分支、循环等功能。
1.无条件转移指令
·相对转移指令:
SJMPrel
执行指令时,先将PC+2,再把指令中带符号的偏移量rel加到PC上,得到转移目标地址。
·绝对转移指令:
AJMPaddr11
指令执行时,先将PC+2,然后将addr11送入PC10~PC0,而PC15~PC11保持不变。
这样就得到转移目标地址。
注:
绝对转移范围是以AJMP指令的下一条指令高5位地址所确定的2KB范围内。
·长转移指令:
LJMPaddr16;addr16→PC
执行指令时,把16位地址addr16装入程序计数器PC,转移范围可达64KB。
·间接转移指令:
JMP@A+DPTR;A+DPTR→PC
执行指令时,数据指令DPTR和累加器A的内容相加装入程序计数器PC。
2.条件转移指令
·累加器判零转移指令
JZrel;若A=0,则PC+2+rel→PC,否则PC+2→PC
JNZrel;若A≠0,则PC+2+rel→PC,否则PC+2→PC
·比较转移指令
CJNEA,direct,rel;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中专 单片机 原理 电子 教案