单片机原理与应用——凌阳SPCE061A 教学课件 ppt 作者 黄军辉 董晓倩 李建波 第3章 指 令 系 统

上传人:E**** 文档编号:89356748 上传时间:2019-05-23 格式:PPT 页数:154 大小:501.50KB
返回 下载 相关 举报
单片机原理与应用——凌阳SPCE061A 教学课件 ppt 作者  黄军辉 董晓倩 李建波 第3章 指 令 系 统_第1页
第1页 / 共154页
单片机原理与应用——凌阳SPCE061A 教学课件 ppt 作者  黄军辉 董晓倩 李建波 第3章 指 令 系 统_第2页
第2页 / 共154页
单片机原理与应用——凌阳SPCE061A 教学课件 ppt 作者  黄军辉 董晓倩 李建波 第3章 指 令 系 统_第3页
第3页 / 共154页
单片机原理与应用——凌阳SPCE061A 教学课件 ppt 作者  黄军辉 董晓倩 李建波 第3章 指 令 系 统_第4页
第4页 / 共154页
单片机原理与应用——凌阳SPCE061A 教学课件 ppt 作者  黄军辉 董晓倩 李建波 第3章 指 令 系 统_第5页
第5页 / 共154页
点击查看更多>>
资源描述

《单片机原理与应用——凌阳SPCE061A 教学课件 ppt 作者 黄军辉 董晓倩 李建波 第3章 指 令 系 统》由会员分享,可在线阅读,更多相关《单片机原理与应用——凌阳SPCE061A 教学课件 ppt 作者 黄军辉 董晓倩 李建波 第3章 指 令 系 统(154页珍藏版)》请在金锄头文库上搜索。

1、第3章 指 令 系 统,3.1 指令系统概述,指令是CPU执行某种操作的命令。微处理器(MPU)或微控制器(MCU)所能识别的全部指令的集合称为指令系统。,本章详细介绍SPCE061A单片机的寻址方式和指令系统。以nSPTM为内核的单片机系列指令按功能可划分为以下几种。,(1)数据传送指令:立即数到寄存器、寄存器到寄存器、寄存器到存储器、存储器到存储器的数据传送操作。 (2)算术运算指令:加、减、乘等运算。,(3)逻辑运算指令:与、或、异或、测试、移位等指令。 (4)转移指令:条件转移、无条件转移、中断返回、子程序调用等操作。 (5)控制指令:开中断、关中断、有限冲击响应FIR(Finite

2、Impulse Response)滤波器的数据自由移动等操作。,寻址方式是指指令中寻找操作数所在地址的方法,nSPTM的CPU支持5种寻址方式,下面分别加以介绍。 (1)立即寻址:操作数直接包含在指令中,以6位或16位常数的形式出现,也可以说是以立即数的形式出现。,(2)直接寻址:在指令格式中直接给出操作数的存储器地址,通过存储器的地址来访问存储器中的数据。直接寻址方式中的地址需要用“ ”括起,表明是存储器操作数。直接寻址方式又分3种:,1)6位地址直接寻址。 2)16位地址直接寻址。 3)22位地址直接寻址。,(3)寄存器寻址:操作数包含在寄存器中,由指令指定寄存器的名称。 (4)寄存器间接

3、寻址:寄存器中存储的是操作数的地址,书写指令时,寄存器需要用“ ”括起来。,(5)变址寻址:操作数的地址由基址和偏移量共同提供。指令执行时,先对基址指针寄存器BP和6位立即数求和,算出有效地址,然后从该地址中读取操作数。书写指令时,需要用“ ”将BP和IM6括起来,即BP+IM6。,为了描述方便,统一约定指令系统叙述过程中用到的符号,如表3-1所示。,表3-1 符号约定,3.2 SPCE061A指令系统,3.2.1 数据传送指令 数据传送指令是把源操作数传送到指令所指定的目标地址中,是一种复制操作,指令执行后,源操作数不变,目的操作数被源操作数代替。 数据传送指令的通用格式如下: =,下面按寻

4、址方式介绍SPCE061A的数据传送指令,表3-2给出了所有的数据传送指令以及各个指令的格式、执行周期数、指令长度及对标志位状态的影响。,表3-2 数据传送类指令,下面根据寻址方式的不同来介绍各条指令。 1立即寻址 立即寻址分16位立即数寻址和6位立即数寻址。指令的长度和执行周期不同,其格式分别为,格式1:Rd = IM16 说明:16位立即数送入目标寄存器Rd。 格式2:Rd = IM6 说明:6位立即数扩展为16位送入目标寄存器Rd。 例如:R1=0xF001 /R1的值变为0xF001,2寄存器寻址,格式1:Rd=Rs 说明:将源寄存器Rs的数据送到目标寄存器Rd。 例如:R2=0xF0

5、01 /R2的值为0xF001 R1=R2 /R1的值变为0xF001,3直接寻址,格式1:Rd = A6 说明:把A6指定的存储单元中的数据读到Rd寄存器。 格式2:Rd = A16 说明:把A16指定的存储单元中的数据读到Rd寄存器。 格式3: A6 = Rs 说明:把源寄存器Rs中的数据送到A6为地址的存储单元。,格式4: A16 = Rs 说明:把源寄存器Rs中的数据存储到A16为地址的存储单元。 例如:R1=0x0011 /R1的值为0x0011 0x0011=R1 /0x0011单元的值变为0x0011,4变址寻址,格式1:Rd=BP+IM6 说明:以基址指针BP与6位立即数的和为

6、地址,将该存储单元的数据读到Rd寄存器。 格式2:BP+IM6=Rs 说明:把Rs的值存储到基址指针BP与6位立即数之和为地址的存储单元。,例如:R1=0x0011 BP+0x0002=R1 /假设执行前BP=0x1000,执行该指令后为0x1002 /(0x1000+0x0002)的存储单元内容置为0x0011,5寄存器间接寻址,格式1:Rd = Rs 说明:把Rs的数据存储到Rd的值所指的存储单元(Rd中存放的是操作数的地址)。 格式2:+Rd = Rs 说明:首先将Rd的值加1,再将Rs的数据存储到Rd所指的存储单元中。,格式3:Rd = Rs + 说明:读取Rs所指的存储单元的值存入R

7、d中,而后Rs的值加1。 例如:+R1=R2 该指令先把R1加1,然后将R2的数据存储到以R1中的值为地址的存储单元中。假设指令执行前R1=0x1000,R2=0x10,执行后R1=0x1001,且地址为0x1001的存储单元值为0x10。,6堆栈操作,除以上介绍的传送指令外,堆栈(stack)操作属于一种特殊的数据传送指令,堆栈操作如图3-1所示。,图3-1 堆栈操作,SPCE061A的堆栈是由高地址向低地址生长的,堆栈指针SP总是指向栈顶的第一个空项,压入一个字后SP减1,将多个寄存器同时压栈,总是序号最高的寄存器先入栈,然后依次压入序号较低的寄存器,序号最低的寄存器最后入栈。,所以,执行

8、指令 PUSH R1,R4 TO SP 与 PUSH R4,R1 TO SP 是等效的,即将R4,R3,R2,R1压栈,在数据出栈前SP+1,总是先弹出入栈指令中序号最低的寄存器,而后依次弹出序号较高的寄存器,即先进后出,后进先出。,堆栈操作的指令格式: PUSH Rx,Ry TO SP POP Rx,Ry FROM SP,说明:Rx,Ry可以是R1R4、BP、SP或PC中的任意两个或一个,执行后将Rx、Ry的序列寄存器压栈,或将堆栈中的数据弹入Rx、Ry序列寄存器中。压栈操作不影响标志位,出栈操作影响N和Z标志。,当Rx、Ry中含有SR时,所有的标志位都会改变。压栈、出栈操作的执行周期为3n

9、+4,若出栈操作的目的寄存器中含有PC时,执行周期为3n+6,其中n是压栈数据的个数。压栈和出栈的指令长度均为1字长。,例如:PUSH R1,R5 TO SP /将R5、R4、R3、R2、R1压栈 PUSH R2,R2 TO SP /将R2压栈 PUSH R3 TO SP /将R3压栈 POP R3 FROM SP /R3出栈 POP R2,R2 FROM SP /R2出栈 POP R1,R5 FROM SP /R1、R2、R3、R4、R5出栈,3.2.2 算术运算指令,1加法运算指令 加法运算指令如表3-3所示。,表3-3 加法运算指令,执行加法运算影响标志位N、Z、S和C,寻址方式有以下几

10、种。 (1)立即寻址(不带进位) 格式1:Rd+=IM6或Rd=Rd+IM6 操作:Rd+IM6Rd 说明:Rd的数据与6位(高位扩展成16位)立即数相加,结果送Rd。,格式2:Rd=Rs+IM16 操作:Rs+IM16Rd 说明:Rs的数据与16位立即数相加,结果送Rd。,例如:R1=0x0099 /R1的值为0x0099,N=0,Z=0,S=0,C=1 R1+=0x0001 /R1的值为0x009A,N=0,Z=0,S=0,C=0 R1+=0xFFFE /R1的值为0x0098,N=0,Z=0,S=0,C=1,(2)直接寻址,格式1:Rd+=A6或Rd=Rd+A6 操作:Rd+A6Rd 说

11、明:Rd的数据与6位地址指定的存储单元中的数据相加,结果送Rd。 格式2:Rd=Rs+A16 操作:Rs+A16Rd 说明:Rs的数据与16位地址指定的存储单元中的数据相加,结果送Rd。,例如:R2=0x0010 /R2的值为0x0010,N=0,Z=0,S=0,C=1 0x0088=R2 /把0x0010送到内存单元0x0088中,标志位不变 R1=0xF099 /R1的值为0xF099,N=1,Z=0,S=0,C=1 R1+=0x0088 /R1的值为0xF0A9,N=1,Z=0,S=1,C=0,(3)变址寻址,格式:Rd+=BP+IM6或Rd=Rd+BP+IM6 操作:Rd+BP+IM6

12、Rd 说明:取基址指针BP与6位立即数的和作为存储单元的地址,存储单元中的数据与Rd相加,结果送Rd寄存器。,例如:R1=0x0010 /R1的值为0x0010,N=0,Z=0,S=0,C=1 R2=0x0090 /R2的值为0x0090,N=0,Z=0,S=0,C=1 0x0015=R2 /R2的值送到0x0015内存单元,标志位不变 R1+=BP+0x0015 /R1的值为0x00A0,N=0,Z=0,S=0,C=0,(4)寄存器寻址,格式:Rd+=Rs 操作:Rd+RsRd 说明:Rd与Rs中的数据相加,结果送Rd。 例如:R1=0x0010 /R1的值为0x0010 R2=0x0032

13、 /R2的值为0x0032 R1+=R2 /R1的值变为0x0042,(5)寄存器间接寻址,格式1:Rd+=Rs 操作:Rd+RsRd 说明:Rd中的数据与Rs所指定的存储单元中的数据相加,结果送Rd。 格式2:Rd+=Rs+ 操作:Rd+RsRd,Rs+1Rs 说明:Rd中的数据与Rs所指定的存储单元中的数据相加,结果送Rd,并且Rs=Rs+1。,格式3:Rd+=Rs 操作:Rd+RsRd,Rs1Rs 说明:Rd中的数据与Rs所指定的存储单元中的数据相加,结果送Rd,并且Rs=Rs1。 格式4:Rd+=+Rs 操作:Rs+1Rs,Rd+RsRd 说明:首先修改Rs=Rs+1,然后Rd中的数据

14、与Rs所指定的存储单元中的数据相加,结果送Rd。,例如:R1=0x0010 /R1的值为0x0010,N=0,Z=0,S=0,C=1 R2=0x0020 /R2的值为0x0020,N=0,Z=0,S=0,C=1 0x0010=R2 /R2的值送到内存单元0x0010中,标志位不变 R2=0x0010 /R2的值为0x0010 R1+=R2+ /R1的值变为0x0030,N=0,Z=0,S=0,C=0 /同时R2的值变为0x0011,注意:有符号数的溢出只需判断N和S两位,N!=S时溢出,N=S时无溢出。,2带进位的加法运算指令,带进位的加法指令和不带进位的加法指令在寻址方式、周期数、指令长度和

15、影响的标志位上均相同,在格式上也相似。它们唯一的区别就是带进位的加法指令在执行加法时进位标志也参加加法运算。这里不再举例,其详细的指令如表3-4所示。,表3-4 带进位的加法运算指令,3减法运算指令,同不带进位的加法运算一样,不带进位的减法运算同样可分为立即寻址、直接寻址、寄存器寻址和寄存器间接寻址等方式。减法运算指令影响标志位N、Z、S、C。 减法运算指令如表3-5所示。,表3-5 减法运算指令,(1)立即寻址(不带进位),格式1:Rd=IM6或Rd=RdIM 6 操作:RdIM6Rd 说明:Rd的数据减去6位(高位扩展成16位)立即数,结果送Rd。,格式2:Rd=RsIM16 操作:RsIM16Rd 说明:Rs的数据减去16位立即数,结果送Rd。 例如:R1=0x0010 /R1的值为0x0010,N=0,Z=0,S=0,C=1 R1=0x0001 /R1的值为0x000F,N=0,Z=0,S=0,C=1,(2)直接寻址,格式1:Rd=A6或Rd=RdA6 操作:RdA6Rd 说明:Rd的数据减去A6存储单元中的数据,结果送Rd。 格式2:Rd=RsA16 操作:RsA16Rd 说明:Rs的数据

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号