《2.3SPCE061A程序转移控制类和其它控制类.ppt》由会员分享,可在线阅读,更多相关《2.3SPCE061A程序转移控制类和其它控制类.ppt(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、SunplusSunplus 16 16 位位微控制器微控制器程序转移和其它控制类指令分类指令分类 SPCE061A 的指令总共只有41种,可分为四类:数据传送类 算逻运算类(移位操作补充说明)程序转移控制类 其它控制类移位操作补充说明移位操作补充说明逻辑左移(LSL)逻辑右移(LSR)循环左移(ROL)循环右移(ROR)算术右移(ASR)逻辑左移(逻辑左移(LSLLSL)【格式】Rd Rs LSL n【说明】该指令对Rs进行n(可设为14)位逻辑左移,将Rs高n位移入SB寄存器,同时Rs的低n(14)位用0补足,结果送Rd寄存器。逻辑左移(逻辑左移(LSLLSL)【举例】0 xF00F逻辑左
2、移3位。寄存器移位前的状态为:寄存器移位后的状态为:逻辑右移逻辑右移(LSR)LSR)【格式】Rd Rs LSR n【说明】该指令对Rs进行n(可设为14)位逻辑右移,将Rs低n位移入SB寄存器同时Rs的高n(14)位用0补足,结果送Rd寄存器。循环左移循环左移(ROL)ROL)【格式】Rd Rs ROL n【说明】该指令对Rs进行n(可设为14)位循环左移,将Rs的高n位移入S寄存器,同时移动SB寄存器的高n位移入Rs的低n位,结果送Rd寄存器。循环左移循环左移(ROL)ROL)【举例】0 x0010循环左移1位。移位前的各位状态如下:寄存器移位后的状态为:循环右移循环右移(ROR)ROR)
3、【格式】Rd Rs ROR n【说明】该指令对Rs进行n(可设为14)位循环右移,将Rs的低n位移入SB寄存器,同时移动SB寄存器的低n位移入Rs的高n位,结果送Rd寄存器。算术右移(算术右移(ASRASR)【格式】Rd Rs ASR n【说明】该指令将Rs算术右移n(可设为14)位,将Rs的低n位移入SB寄存器,并对最高有效位进行符号扩展,结果送Rd寄存器。该指令适合有符号数的移位操作。算术右移(算术右移(ASRASR)【举例】0 xF111算术右移3位。移位前的各位状态如下:移位后的各位状态如下:其中E2,E1,E0是Rs中最高有效位的符号扩展位。转移控制类指令转移控制类指令 软件中断软件
4、中断 子程序调用指令子程序调用指令 有条件有条件/无条件跳转无条件跳转 子程序返回子程序返回 中断返回中断返回 无条件长跳转无条件长跳转软件中断软件中断功能描述:产生一个由指令控制的软件中断,CPU会跳到中断向量0 x00FFF5处执行软中断服务子程序。应用举例:BREAK;/产生一个软件中断 子程序调用指令子程序调用指令功能描述:这是在64页CODE段绝对地址范围内的子程序调用指令。在指令执行期间,程序指针PC和段寄存器SR都会被自动压入栈中。应用举例:Call sub_1;有条件有条件/无条件跳转无条件跳转 功能描述:这是一组程序条件/无条件近转移指令。通过检测SR寄存器中各标志位作为程序
5、转移的条件。若条件满足则程序跳转到与PC相关的地址上,跳转范围限制为PC+63个字;条件不满足则程序继续执行条件转移指令后面的指令。有条件有条件/无条件跳转无条件跳转应用举例:CMP R1,R2;JNE label1;/若不相等,跳转到label2 JMP labe2;/无条件跳转到label1 子程序返回子程序返回功能描述:从子程序返回时须用RETF指令从栈中弹出状态寄存器SR和程序指针PC的值。由于弹栈动作发生在本指令执行之后,故弹栈后SR和PC的值应分别与调用子程序之前二者的值相同。应用举例:sub1:.PROC .RETF;/return from sub1.ENDP 中断返回中断返回
6、功能描述:从中断服务子程序返回时须用RETF或者RETI指令从栈中弹出状态寄存器SR和程序指针PC的值。由于弹栈动作发生在本指令执行之后,故弹栈后SR和PC的值应分别与进入中断服务子程序之前二者的值相同。应用举例:.TEXT .PUBLIC _IRQ1 _IRQ1:.RETI;/return from IRQ1无条件长跳转无条件长跳转功能描述:无条件远转移到用户指定地址。在nSP 1.0,目标地址被限制在当前页的内64K字范围内;在nSP 1.1,目标地址的寻址空间为整个4M字范围。应用举例:GOTO loop;/程序无条件跳转到loop标号地址上 其它控制类指令其它控制类指令控制允许/禁止F
7、IR滤波器运算过程中数据的自动移动FIQ 中断使能/屏蔽IRQ 中断使能/屏蔽Interrupt SetNo Operation控制允许控制允许/禁止禁止FIRFIR滤波器运算过程滤波器运算过程中数据的自动移动中数据的自动移动功能描述:这组指令用来控制允许/禁止FIR滤波器运算过程中数据的自动移动。由于这会影响到FIR滤波器运算的状态,且此状态具有全局性质,故用在中断服务子程序时要格外小心。控制允许控制允许/禁止禁止FIRFIR滤波器运算过程滤波器运算过程中数据的自动移动中数据的自动移动 应用举例:_IRQ1:PUSH R1,R4 to SP;CALL F_IRQ1_Service_10kHz
8、;/采样,FIR滤波,输出 POP R1,R4 from SP;RETI;控制允许控制允许/禁止禁止FIRFIR滤波器运算过程滤波器运算过程中数据的自动移动中数据的自动移动F_IRQ1_Service_10kHz:.;R1=Data_Entry;/R1指向采样向量R2=Conf_ Entry;/R2指向系数向量FIR_MOV ON;/允许FIR运算过程中数据自动移动MR=R1*R2,N;/N阶FIR滤波计算FIR_MOV OFF;RETFFIQ FIQ 中断使能中断使能/屏蔽屏蔽FIQ ON FIQ OFF 功能描述:这组指令用来开通/关断FIQ中断。IRQ IRQ 中断使能中断使能/屏蔽屏蔽
9、IRQ ON IRQ OFF 功能描述:这组指令用来开通/关断IRQ中断。设置允许设置允许/禁止禁止FIQFIQ和和IRQIRQ中断中断功能描述:这组指令用来设置允许/禁止FIQ和IRQ中断的标志。应用举例:INT FIQ;/允许FIQ中断,禁止IRQ中断 INT FIQ,IRQ;/允许FIQ与IRQ中断 INT OFF;/禁止FIQ与IRQ中断 空操作空操作 NOP 功能描述:空操作,只是将PC指向下一个地址。,用于时间的延迟或其它目的。空操作空操作应用举例:Delay_Loop:NOP;/等待 CMP R1,0 xFFFF;/查寻结束等待的标志 JA Exit_Loop;/结束等待 R1+=1;/等待延时计数 JMP Delay_Loop;Exit_Loop:凌阳科技教育推广中心竭诚为您服务凌阳科技大学计划网站:凌阳科技大学计划网站:http:/http:/凌阳科技大学计划邮箱:凌阳科技大学计划邮箱:E_mail:E_mail:凌阳科技大学计划客服中心:凌阳科技大学计划客服中心:Tel:010-62981668-2911Tel:010-62981668-2911凌阳科技大学计划技术支持中心:凌阳科技大学计划技术支持中心:Tel:010-62981668-2919Tel:010-62981668-2919
限制150内