好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

第3章 指令系统.ppt

87页
  • 卖家[上传人]:飞***
  • 文档编号:3926315
  • 上传时间:2017-08-05
  • 文档格式:PPT
  • 文档大小:582.50KB
  • / 87 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1,第3章 SPCE061A 指令系统,2,第3章 SPCE061A 指令系统,指令系统的概述及符号约定数据传送指令 算术运算指令逻辑运算指令控制转移类指令 伪指令,3,3.1 指令系统的概述及符号约定,指令是CPU执行某种操作的命令微处理器(MPU)或微控制器(MCU)所能识别全部指令的集合称为指令系统或指令集指令系统是制造厂家在设计CPU时所赋予它的功能,用户必须正确的书写和使用指令,才能完成设计任务因此学习和掌握指令的功能与应用非常重要,是程序设计的基础 程序设计语言:机器语言、汇编语言和高级语言4,μ’nSP™指令系统分类,μ’nSP™单片机指令按其功能可划分为: 数据传送指令,包括立即数到寄存器、寄存器到寄存器、寄存器到存储器、存储器到寄存器的数据传送操作;算术运算指令,包括加、减、乘、等运算;逻辑运算指令,包括与、或、异或、测试、移位等操作;转移指令,包括条件转移、无条件转移、中断返回、子程序调用等操作;控制指令,如开中断、关中断、FIR滤波器的数据的自由移动等操作5,寻址方式,1、立即数寻址 在这种寻址方式中,指令格式中直接包含了操作数,可以立即参与指令所规定的操作。

      立即数有两种:6位立即数(范围为0x00~0x3F) 16位立即数(范围为0x0000~0xFFFF), 例如R1=0x30,其中0x30就是立即数 R1 = R1+ 0x1234,6,2、寄存器寻址 在这种寻址方式中,操作数存放在工作寄存器中 例如R1 = R2,是把寄存器R2中的数据赋给寄存器R17,3、存储器绝对寻址(直接寻址) 这种寻址方式是通过存储器地址来访问存储器中的数据 例如R1=[0x3333],访问0x3333单元的数据8,4、寄存器间接寻址 在这种寻址方式种,操作数的地址由寄存器给出 例如R1 = [BP],是把由BP指向的内存单元的数据送寄存器R19,5、变址寻址 在这种寻址方式种,操作数的地址由基址和偏移量共同给出偏移量必须是6位立即数 例如R1 =[BP+0x10]10,符号约定,R1,R2,R3,R4,R5(BP) :通用寄存器 Rd:目标寄存器或目标存储器指针Rs:源寄存器或源存储器指针NZSC:SR寄存器中的4个标志位PC:程序计数器SP,BP,SR:堆栈指针寄存器,基指针寄存器,段寄存器IM6,IM16:6位立即数,16位立即数A6,A16:6位地址码,16位地址码→:数据传送符号,11,符号约定,MR:由R4,R3组成的32位结果寄存器(R4为高字节,R3为低字节)&,|,^,:逻辑与符号,逻辑或符号,逻辑异或符号 { } :可选项[ ]:寄存器间接寻址标志++,- -:指针单位字增量,字减量ss,us:两个有符号数之间的操作,无符号数与有符号数之间的操作,12,符号约定,Label:程序标号FIR:有限冲击响应(Finite Impulse Response),指数字信号处理中的一种具有线性相位及任意幅度特性的数字滤波器算法//:注释符,13,3.2 数据传送指令,数据传送指令是把源操作数传送到指令所指定的目标地址。

      数据传送操作属复制性质,而不是搬家性质指令执行后,源操作数不变,目的操作数为源操作数所代替通用格式:<目的操作数>=<源操作数>源操作数:立即数、寄存器直接寻址、寄存器间接寻址、直接地址寻址、变址寻址等 目的操作数:寄存器和直接地址寻址 影响标志位N和Z,14,立即数寻址,格式:Rd=IM16 Rd=IM6说明:16 位立即数送入目标寄存器Rd 6 位立即数扩展成16 位后送入目标寄存器Rd IM6的取值范围是00~3FH,允许Rd是指令指针PC影响标志 :N,Z 举例: 设传送前 N=0,Z=1,S=0,C=1 R1=0xF001 //R1的值变为0xF001,N=1,Z=0,S=0,C=1,15,寄存器直接寻址,格式:Rd= Rs说明:将源寄存器 Rs 的数据送给目标寄存器 Rd 允许Rd与Rs同名,允许Rd与Rs是指令指针PC影响标志 :N,Z 举例:将16位立即数0x1234送入R1中,将6位立即数0x3F送入R2中,并且将R1,R2的数据分别保存于R3,R4,R1清零。

      R1 = 0x1234 //16位立即数0x1234送入R1中;N=0,Z=0R2 = 0x3F //6位立即数0x3F扩展成16位送入R2中;N=0, Z=0R3 = R1 //R1的数据保存于R3; N=0,Z=0R4 = R2 //R2的数据保存于R4; N=0,Z=0R1 = 0 //将0赋给R1; N=0,Z=1,16,直接地址寻址,格式:Rd= [ A6]/ [A16] [A6]/ [A16]= Rs说明:把A6/A16 指定的存储单元数据读到Rd 寄存器 将源寄存器Rs 中的数据送给以A6/A16为地址的存储 单元 A6的取值范围是00~3FH,允许Rd与Rs是PC影响标志 :N,Z 举例: 设传送前 N=1,Z=1,S=0,C=1 R1=0x0011 // R1的值为0x0011,N=0,Z=0,S=0,C=1 [0x0010]=R1 //[0x0010]单元的值变为0x0011,N=0,Z=0,S=0,C=1,17,变址寻址,格式:Rd= [BP+IM6] [BP+IM6] = Rs说明:把基址指针BP与6位立即数的和指定的存储单元 的数据读到Rd 寄存器 将源寄存器Rs 中的数据存储到基址指针BP与6位立 即数之和指定的存储单元 变址寻址方式只能采用BP作为基址寄存器影响标志 :N,Z 。

      举例:设传送前 N=0,Z=1,S=0,C=1 R1=0x0010 [BP+0x0002]=R1 //N=0,Z=0,S=0,C=1,18,寄存器间接寻址,格式1: [Rd]= Rs说明:把Rs 的数据存储到Rd 的值所指的存储单元中格式2:[++Rd]= Rs说明:先将Rd的值+1,再把Rs 的数据存储到Rd 的值所指的存储单元中格式3: Rd=[Rs++]说明:读取Rs的值所指的存储单元的值到Rd,而后Rs的值+1影响标志 :N,Z 不允许两个操作数均采用寄存器间接寻址方式,19,举例,将R3 的值保存于0x25单元R3 = 0x5678 //把16位立即数0x5678赋给R3方法1:[0x25] = R3 //将R3的值存储于0x25存储单元,直接地址寻址0x25 单元的内容为0x5678方法2:R2 = 0x25 //立即数0x25送入R2中[R2] = R3 //将R3的值存储于0x25存储单元,0x25单元的内容为 0x5678,寄存器间接寻址方法3: BP = 0x20 //立即数0x20 送入BP中;[BP + 5] = R3 //将R3的值存储于0x25存储单元变址寻址0x25 单元 的内容为0x5678,变址寻址,20,堆栈操作,堆栈(stack)操作也属于一种特殊的数据传送指令。

      SP总是指向堆栈栈顶的第一个空项当堆栈压入一个字后,SP必须减1,再压入数据;在数据出栈前,SP必须先加1,再弹出数据将多个寄存器同时压栈总是序号最高的寄存器先入栈,然后依次压入序号较低的寄存器,直到序号最低的寄存器最后入栈将多个内容同时弹出堆栈,总是先弹出入栈指令中序号最低的寄存器,而后依次弹出序号较高的寄存器即先进后出,后进先出21,堆栈操作,格式:PUSH Rx,Ry TO [SP] POP Rx,Ry FROM [SP]Rx,Ry可以是R1~R4,BP中的任意两个或一个,执行后将Rx~Ry的序列寄存器压栈,或将堆栈中的数据弹入Rx~Ry序列寄存器中压栈操作不影响标志位,出栈操作影响N,Z标志,当Rx,Ry中含有SR时,所有标志位都会改变22,堆栈举例,PUSH R1,R5 to [SP] //将R5,R4,R3,R2,R1压栈先把R5压入堆栈,即R5->[SP];修改堆栈指针,即 SP-1->SP其余类推;POP R1,R5 from [SP] //R1,R2,R3,R4,R5 出栈先修改堆栈指针,即 SP+1->SP;把R1弹出堆栈,即[SP] -> R1;其余类推。

      23,3.3 算术运算指令,单片机SPCE061A的算术运算主要包括加,减,乘以及n项内积运算加减运算按是否带进位可分:为不带进位和带进位的加减运算带进位的加减运算在格式上以及寻址方式与无进位的加减运算类似加减运算影响标志位N,Z,S,CRd = X+Y或 Rd = X –YRd = X+Y,Carry或Rd = X-Y,Carry注意:被加数X必须是寄存器,Y可以采用寻址方式中的任何一种与不带进位的加减运算,唯一的区别就是进位标志C也参与加减运算, Rd = X+Y+C或 Rd = X-Y-C24,3.3.1 不带进位的加法运算指令,1.立即数寻址 (不带进位)格式1:Rd += IM6 或 Rd = Rd + IM6操作:Rd + IM6 →Rd 说明:Rd的数据与6位(高位扩展成16位)立即数相加,结果送Rd格式2:Rd = Rs + IM16操作:Rs + IM16 →Rd 说明: Rs的数据与16位的立即数相加,结果送Rd,25,举例,假设开始时标志位为:N=0,Z=1,S=0,C=1R1 = 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=1,Z=0,S=0,C=1;,26,2.直接地址寻址格式1:Rd += [A6] 或 Rd = Rd + [A6]操作:Rd + [A6] →Rd 说明:Rd 的数据与6位地址指定的存储单元中的数据相加,结果送Rd格式2:Rd = Rs + [A16] 操作:Rs + [A16] →Rd 说明: Rs的数据与16位地址指定的存储单元中数据相加,结果送Rd,3.3.1 不带进位的加法运算指令,27,3.变址寻址格式:Rd += [Bp + IM6] 或 Rd = Rd + [BP + IM6]操作: Rd + [Bp + IM6]→ Rd 说明:取基址指针BP与6 位的立即数的和指定的存储单元中的数据与Rd相加,结果送Rd寄存器4.寄存器直接寻址格式:Rd += Rs 操作:Rd + Rs →Rd 说明: Rd与Rs的数据相加,结果送Rd,3.3.1 不带进位的加法运算指令,28,举例,假设开始时标志位为:N=0,Z=1,S=0,C=1R1 = 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, BP的初始值默认 为0,N=0,Z=0,S=0 ,C=0;,。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.