中职中专单片机原理电子教案3汇编.docx

上传人:b****6 文档编号:5949967 上传时间:2023-01-02 格式:DOCX 页数:43 大小:228.44KB
下载 相关 举报
中职中专单片机原理电子教案3汇编.docx_第1页
第1页 / 共43页
中职中专单片机原理电子教案3汇编.docx_第2页
第2页 / 共43页
中职中专单片机原理电子教案3汇编.docx_第3页
第3页 / 共43页
中职中专单片机原理电子教案3汇编.docx_第4页
第4页 / 共43页
中职中专单片机原理电子教案3汇编.docx_第5页
第5页 / 共43页
点击查看更多>>
下载资源
资源描述

中职中专单片机原理电子教案3汇编.docx

《中职中专单片机原理电子教案3汇编.docx》由会员分享,可在线阅读,更多相关《中职中专单片机原理电子教案3汇编.docx(43页珍藏版)》请在冰豆网上搜索。

中职中专单片机原理电子教案3汇编.docx

中职中专单片机原理电子教案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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1