单片机教案2.doc
《单片机教案2.doc》由会员分享,可在线阅读,更多相关《单片机教案2.doc(12页珍藏版)》请在冰豆网上搜索。
常州轻工职业技术学院
单片机原理及应用课程授课教案NO3
授课日期
授课班级
课题
指令系统
授课类型
讲授
授课时数
2
教学
目的
(1)了解指令系统的概述
(2)熟悉寻址方式(3)掌握MCS-51系列单片机指令
重点
难点
寻址方式、MCS-51系列单片机指令
寻址方式
教具
挂图
多媒体课件
教学
及
过程分配
主要教学内容
教学方法
的运用
20分钟
10分钟
10分钟
5分钟
5分钟
10分钟
5分钟
5分钟
10分钟
10分钟
第二章MCS-51单片机指令系统
一.指令的表达形式
1.二进制代码(机器码)指令
2.助记符(汇编语言)指令
助记符指令:
MOVA,#30H
二进制代码指令:
0111010000110000
助记符指令必须转换成二进制代码指令才能存入存储器。
二、汇编语言指令格式
操作码[第一操作数][,第二操作数][,第三操作数]
(1)操作码:
用来规定指令进行何种操作,是指令中不能空缺的部分。
(1)操作数:
表示参与指令操作的数据或数据所在的地址。
为可选项。
有两个操作数时,前一个为目的操作数,后一个为源操作数。
三.指令中有关操作数符号的说明
Rn——工作寄存器R0~R7(n=0、1、2…7)。
Ri——工作寄存器R0和R1(i=0或1)。
Direct——内部RAM的单元地址,地址范围为00~FFH。
#data——8位立即数,即常数。
#data16——16位立即数。
addr16——16位目的地址。
Addrll——11位目的地址。
四.MCS-51单片机指令系统
MCS—51的指令按功能分为五大类:
数据传送、算术运算、逻辑运算、控制转移和位操作指令。
(一)数据传送类指令
注意:
源操作数在传送前后保持不变。
1.内部数据传送指令
【例2-1】设(30H)=40H,(40H)=10H,(P1)=0CAH,试判断下列程序执行后的结果。
MOVR0,#30H;R0←#30H
MOVA,@R0;A←(30H),(A)=40H
MOVR1,A;R1←(A),(R1)=40H
MOVB,@R1;B←(40H),(B)=10H
MOV@R1,P1;(R1)←(P1),(40H)=0CAH
MOVP2,P1;P2←(P1),(P2)=0CAH
结果是:
(A)=40H,(B)=10H,(40H)=0CAH,(P2)=0CAH
2.外部数据传送指令
此类指令完成对片外RAM单元中数据的读/写操作。
注意:
用R0和R1间接寻址时,要占用P2寄存器放外部RAM的高8位地址,R0和R1放低8位地址。
使用时,要先将低8位地址送入Ri(R0或R1),高8位地址送入P2寄存器,然后再用上述指令。
【例2-2】将片外RAM1000H单元中的内容送到2000H单元。
方法一MOVDPTR,#1000H;DPTR←#1000H
MOVXA,@DPTR;A←((DPTR))
MOVDPTR,#2000H;DPTR←#2000H
MOVX@DPTR,A;(DPTR)←(A)
方法二MOVP2,#10H;P2←#10H
MOVR0,#00H;R0←#00H
MOVXA,@R0;A←((R0))
MOVP2,#20H;P2←#20H
MOVX@R0,A;(R0)←(A)
注意:
在两个片外RAM单元之间是不能直接进行数据的传送的,必须经过片内的累加器A来间接地传送。
3.访问程序存储器的传送指令(查表指令)
MOVCA,@A+PC;PC←(PC)+1,A←((A)+(PC))
MOVCA,@A+DPTR;A←((A)+(DPTR))
其功能是到程序存储器中查表格数据送入累加器A。
程序存储器中除了存放程序之外,还会放一些表格数据,又称查表指令。
指令中的操作数为表格数据。
前一条指令将A中的内容与PC的内容相加得到16位表格地址;后一条指令是将A中的内容与DPTR中的内容相加得到16位表格地址。
4.数据交换指令
数据交换是在内部RAM单元与累加器之间进行,有字节和半字节交换两种。
(1)字节交换指令
XCHA,Rn
XCHA,direct
XCHA,@Ri
(2)半字节交换指令
XCHDA,@Ri
5.堆栈操作指令
在片内RAM的00H~7FH地址区域中,可设置一个堆栈区,主要用于保护和恢复CPU的工作现场。
(1)进栈指令
PUSHdirect;SP←(SP)+1;
(SP)←(direct);
(2)出栈指令
POPdirect;direct←((SP));
SP←(SP)-1;
二、算术运算类指令
注意大部分指令的执行结果将影响程序状态字PSW的有关标志位。
如果把参加运算的两个操作数看作是无符号数(0~255),加法运算对CY标志位的影响如下:
(1)若结果的第7位向前有进位(C7’=1),CY=1
(2)若结果的第7位向前无进位(C7’=0),CY=0
【例2-3】设有两个无符号数放在A和R2中,设(A)=0C6H(198),(R2)=68H(104),
执行指令:
ADDA,R2
试分析运算结果及对标志位的影响。
解:
写成竖式
(A)11000110198
(R2)+01101000+104
(A)100101110302
结果是:
(A)=2EH,CY=1。
【例2-4】设有两个16位无符号数,被加数存放在内部RAM的30H(低位字节)和31H(高位字节)中,加数存放在40H(低位字节)和41H(高位字节)中。
试写出求两数之和,并把结果存放在30H和31H单元中的程序。
参考程序为:
MOVR0,#30H;地址指针R0赋值
MOVR1,#40H;地址指针R1赋值
MOVA,@R0;被加数的低8位送A
ADDA,@R1;被加数与加数的低8位相加,和送A,并影响CY标志
MOV@R0,A;和的低8位存30H单元
INCR0;修改地址指针R0
INCR1;修改地址指针R1
MOVA,@R0;被加数的高8位送A
ADDCA,@R1;被加数和加数的高8位与CY相加,和送A
MOV@R0,A;和的高8位存31H单元
(二)减法指令
1、带借位减法指令
该组指令的功能是从累加器A减去源操作数及标志位CY,其结果再送累加器A。
CY位在减法运算中是作借位标志。
SUBB指令对标志位的影响如下:
(1)若第7位向前有借位(C7’=1),则CY=1;
(2)若第7位向前无借位(C7’=0),则CY=0,
【例2-5】在A和R3中存有两个无符号数,设(A)=98H,(R3)=6AH,CY=1,执行指令:
SUBBA,R3
分析执行结果及对标志位的影响
解:
(A)1001100098H
(R3)–011010106AH
CY–1–1
(A)001011012DH
结果是:
(A)=2DH,CY=0
2、减1指令
指令操作机器码
DECA;A←(A)-100010100
DECRn;Rn←(Rn)-100011rrr
DECdirect;direct←(direct)-100010101direct
DEC@Ri;(Ri)←((Ri))-10001011i
(四)乘法指令
指令操作机器码
MULAB;BA←(A)Х(B)10100100
指令的功能是把累加器A和寄存器B中两个8位无符号整数相乘,并把乘积的高8位存于寄存器B中,低8位存于累加器A中。
乘法运算指令执行时会对标志位产生影响:
CY标志总是被清0,即CY=0;OV标志则反映乘积的位数,若OV=1,表示乘积为16位数;若OV=0,表示乘积为8位数。
(五)除法指令
指令操作机器码
DIVAB;A商,B余←(A)÷(B)10000100
指令的功能是把累加器A和寄存器B中的两个8位无符号整数相除,所得商的整数部分存于累加器A中,余数存于B中。
除法指令执行过程对标志位的影响:
CY位总是被清0,OV标志位的状态反映寄存器B中的除数情况,若除数为0,则OV=1,表示本次运算无意义,否则,OV=0。
三、逻辑运算类指令
在MCS—51指令系统中,逻辑运算类指令有25条,可实现与、或、异或等逻辑运算操作。
这类指令有可能会影响CY和P标志位的状态。
(一)累加器A的逻辑操作指令
1、累加器A清0
CLRA;A←00H