收藏 分享(赏)

DSP原理及应用--TMS320C54x的汇编指令系统.ppt

上传人:fmgc7290 文档编号:8007358 上传时间:2019-06-03 格式:PPT 页数:180 大小:2.04MB
下载 相关 举报
DSP原理及应用--TMS320C54x的汇编指令系统.ppt_第1页
第1页 / 共180页
DSP原理及应用--TMS320C54x的汇编指令系统.ppt_第2页
第2页 / 共180页
DSP原理及应用--TMS320C54x的汇编指令系统.ppt_第3页
第3页 / 共180页
DSP原理及应用--TMS320C54x的汇编指令系统.ppt_第4页
第4页 / 共180页
DSP原理及应用--TMS320C54x的汇编指令系统.ppt_第5页
第5页 / 共180页
点击查看更多>>
资源描述

1、1,第4章 TMS320C54x的汇编指令系统,2,引言,一、 指令的表示方法,C54x的指令系统包含助记符指令和代数指令两种形式。助记符指令:是一种采用助记符号表示的类似于汇编语言的指令;代数指令:是一种比汇编语言更高级,类似于高级语言的代数形式指令,具有接近汇编语言的特点。 两种指令具有相同的功能。本章着重介绍助记符指令的分类及基本功能及其示例。,3,C54x的助记符指令是由操作码和操作数两部分组成。在进行汇编以前,操作码和操作数都是用助记符表示。,例如:LD #0FFh, A ;将立即数0FF传送至A,操作码,源操作数,目的操作数,注释,4,二、 指令系统中的符号,5,6,7,8,9,1

2、0,三、指令系统中的运算符,1.指令系统中使用的记号,11,2.指令系统中使用的运算符,12,算术运算指令,逻辑运算指令,程序控制指令,数据传送指令,C54x的指令系统共有129条基本指令,由于操作数的寻址方式不同,由它们可以派生多至205条指令。,按指令的功能可分成四大类:,13,一、算术运算指令,算术运算指令是实现数学计算的重要指令集合。 C54x的算术指令具有运算功能强、指令丰富等特点。,包括:,加法指令(ADD) 减法指令(SUB) 乘法指令(MPY) 乘法-累加指令(MAC) 乘法-减法指令(MAS) 双字运算指令(DADD) 专用指令,14,1.加法指令,C54x的加法指令共有13

3、条,可完成两个操作数的加法运算、移位后的加法运算、带进位的加法运算和不带符号位扩展的加法运算。,操 作 码: ADD、ADDC、ADDM、ADDS,指令格式:操作码 源操作数 ,移位数 ,目的操作数,源操作数: Smem、Xmem、Ymem、#lk、src,移 位 数: TS、16、SHIFT、SHFT、ASM,目的操作数:src、dst、Smem,15,ADD,SmemXmem#lksrc,ADD Smem,src ADD Smem,TS,src ADD Smem,16,src,dst ADD Smem,SHIFT,src,dst,操作码 源操作数 指令格式,ADD Xmem,SHIFT,s

4、rcADD Xmem,Ymem,dst,ADD #lk,SHFT,src,dstADD #lk,16,src,dst,ADD src,SHIFT,dstADD src,ASM,dst,以下10条指令功能是将一个16位的数加到选定的累加器中,这16位数可以为下列四种情况之一。,16,ADDC,操作码 源操作数 指令格式,Smem,ADDC Smem,src,ADDM,#lk,ADDC #lk,Smem,ADDS,Smem,ADDC Smem,src,其中,ADD为不带进位加法,ADDC用于带进位的加法运算(如32位扩展精度加法),ADDS用于无符号数的加法运算,而ADDM专用于立即数的加法。,1

5、7,18,例1:ADD,19,例2:ADD,20,例3:ADDC,21,例4:ADDM,注意:ADDM存储时有溢出,22,例5:ADDS,23,2. 减法指令,C54x的减法指令共有13条,其中,SUB为不带借位的减法,SUBS用于无符号数的减法运算,SUBB用于带借位的减法运算(如32位扩展精度的减法)。而SUBC为条件减法,src减去Smem左移15位后的值,若结果大于0,则结果左移1位再加1,最终结果存放到src中;否则src左移1位并存入src中。,SUB SUBB SUBC SUBS,指令格式:操作码 源操作数 ,移位数 ,目的操作数,Smem Xmem Ymem #lk src,T

6、S 16 SHIFT SHFT ASM,src dst,24,SUB,SmemXmem#lksrc,SUB Smem,src SUB Smem,TS,src SUB Smem,16,src,dst SUB Smem,SHIFT,src,dst,操作码 源操作数 指令格式,SUB Xmem,SHIFT,srcSUB Xmem,Ymem,dst,SUB #lk,SHFT,src,dstSUB #lk,16,src,dst,SUB src,SHIFT,dstSUB src,ASM,dst,25,SUBB,操作码 源操作数 目的操作数 指令格式,Smem,SUBB Smem,src,SUBC,Smem

7、,SUBC Smem,src,SUBS,Smem,ADDC Smem,src,src,src,src,26,27,例1:SUB(直接寻址),例2: SUB (间接寻址),28,例3:SUBB (直接寻址),例4: SUBB (间接寻址),29,例5: SUBC,例6: SUBC,30,例7: SUBS,31,3. 乘法指令,C54x的指令系统提供了10条乘法运算指令,其运算结果都是32位的,存放在累加器A和B中。而参与运算的乘数可以是T寄存器、立即数、存储单元和累加器A或B的高16位。,格式:操作码 源操作数1 ,源操作数2 ,目的操作数,操 作 码: MPY、MPYR、MPYA、MPYU、S

8、QUR,源操作数1:Smem、Xmem、#lk,源操作数2:Ymem、#lk,目的操作数:dst,在TMS320C54x中,小数的乘法与整数乘法基本相同,只是由于两个有符号的小数相乘,其结果的小数点的位置在次高位的后面,所以必须左移一次。,32,MPY,SmemXmem#lk,MPY Smem,dstMPY Smem,#lk,dst,操作码 源操作数 指令格式,MPY Xmem,Ymem,dst,MPY #lk,dst,MPYA,MPYA dst,MPYA Smem,33,MPYR,操作码 源操作数 目的操作数 指令格式,Smem,MPYR Smem, dst,MPYU,Smem,MPYU S

9、mem,dst,SQUR,Smem,SQUR Smem,dst,dst,dst,dst,A,dst,SQUR A, dst,34,乘法指令,35,例1:,例2:,36,例3:,例4:,37,例5:,38,例6:,例7:,39,4. 乘加和乘减指令,这类指令共计22条,除了完成乘法运算外,还具有加法或减法运算。因此,在一些复杂的算法中,可以大大提高运算速度。参与运算的乘数可以是T寄存器、立即数、存储单元和累加器A或B的高16位。乘法运算结束后,再将乘积与目的操作数进行加法或减法运算。,40,格式:操作码 源操作数1 ,源操作数2 ,目的操作数,操 作 码:MAC、MACR、MACA、MACAR、

10、MACD、MACP、MACSU、MAS、MASR,源操作数1:Smem、Xmem、#lk、T,源操作数2:Ymem、#lk、pmad,目的操作数:src、dst、B,41,MAC,SmemXmem#lk,MAC Smem,srcMAC Smem,#lk,src,dst,操作码 源操作数 指令格式,MAC Xmem,Ymem,src,dst,MAC #lk,src,dst,MACR,MACR Smem,src,MACR Xmem,Ymem,src,dst,Smem Xmem,42,操作码 源操作数1 源操作数2 指令格式,MACA,MACA Smem,B,MACA T,src,dst,SmemT

11、,MACAR,MACAR Smem,B,MACAR T,src,dst,SmemT,MACD,MACD Smem,pmad,src,Smem,pmad,MACP,MACP Smem,pmad,src,Smem,pmad,MACSU,MACSU Xmem,Ymem,src,Xmem,Ymem,43,操作码 源操作数 指令格式,MAS,MAS Smem,src,MAS Xmem,Ymem,src,dst,Smem Xmem,MASR,MASR Smem,src,MASR Xmem,Ymem,src,dst,Smem Xmem,44,乘加和乘减指令,45,乘加和乘减指令(续),46,例1:,例2:,

12、47,例4:,例3:,48,例6:,例5:,49,例8:,例7:,50,例10:,例9:,51,例12:,例11:,52,例13:,53,例15:,例14:,54,例17:,例16:,55,例19:,例18:,56,例20:,例21:,57,例23:,例22:,58,5. 双字算术运算指令,双字算术运算指令共计6条,完成双16位数的加碱运算。, DADD Lmem,src,dst,功能:,若C16 = 0,则完成双精度加法dst = Lmem +src ;若C16 = 1,则双16位数加法dst(39-16)= Lmem(31-16)+src(31-16)dst(15-0)= Lmem(15-

13、0)+src(15-0),59, DADST Lmem, dst,功能:,若C16 = 0,则完成双精度加法dst = Lmem +(T16+T) ;若C16 = 1,则双16位数加/减法dst(39-16)= Lmem(31-16)+Tdst(15-0)= Lmem(15-0)-T, DRSUB Lmem,src,功能:,若C16 = 0,则完成双精度减法src = Lmem -src ;若C16 = 1,则完成双16位数减法src(39-16)= Lmem(31-16)-src(31-16)src(15-0)= Lmem(15-0)-src(15-0),60, DSADT Lmem, ds

14、t,功能:,功能:,若C16 = 0,则完成双精度减法dst = Lmem -(T16+T) ;若C16 = 1,则完成双16位数加/减法dst(39-16)= Lmem(31-16)-Tdst(15-0)= Lmem(15-0)+T, DSUB Lmem,src,功能:,若C16 = 0,则双精度方式,累加器减去32位数src = src - Lmem ;若C16 = 1,则双16位方式,完成双16位数减法src(39-16)= src(31-16)- Lmem(31-16)src(15-0)= src(15-0) - Lmem(15-0),61, DSUBT Lmem, dst,功能:,功

15、能:,若C16 = 0,则双精度操作数减去T值dst = Lmem -(T16 + T)若C16 = 1,则双16位操作数减去T值dst(39-16)= Lmem(31-16)-Tdst(15-0)= Lmem(15-0)-T,62,例2:,例1:,63,例4:,例3:,64,6. 特殊运算指令,特殊运算指令共15条,65,特殊运算指令,66,例1:,67,例2:,例3:,68,例5:,例4:,69,二、逻辑运算指令,C54x的指令系统具有丰富的逻辑运算指令。,包括:,与运算指令(AND) 或运算指令(OR) 异或运算指令(XOR) 移位操作指令(ROL) 测试操作指令(BIT),70,1.与

16、运算指令,操 作 码: AND、ANDM,指令格式:操作码 源操作数 ,移位数 ,目的操作数,源操作数: Smem、#lk、src,移 位 数: 16、SHIFT、SHFT,目的操作数:src、dst、Smem,71,与逻辑运算指令共有5条:,72,例1:,例2:,73,例4:,例3:,74,2. 或运算指令,指令格式:操作码 源操作数 ,移位数 ,目的操作数,1,Smem,SHFT,src,或运算指令共计5条:,OR,2,#lk,src,dst,OR,16,3,#lk,src,dst,OR,SHIFT,4,src,dst,OR,5,#lk,Smem,ORM,75,或运算指令,76,3. 异或

17、运算指令,指令格式:操作码 源操作数 ,移位数 ,目的操作数,异或运算指令共计5条:,77,异或运算指令,78,4. 移位操作指令,指令格式:操作码 源操作数 ,移位数 ,目的操作数,C54x共有6条移位指令,可实现带进位位循环移位、带TC位循环左移、算术移位、条件移位和逻辑移位等操作。,操 作 码: ROL、ROLTC、ROR、SFTA、SFTC、SFTL,源操作数: src,移 位 数: SHIFT,目的操作数:dst,79, 带进位位循环左移,操作数src:累加器A或B,指令功能: 累加器src与进位位C循环左移一位。,执行过程: C src(0)src(300) src(311)src

18、(31) C0 src(3932),指令格式: ROL src,;C的值移入src的最低位,;src左移一位,;src的最高位移入C,;src的保护位清0,80, 带测试位循环左移,操作数src:累加器A或B,指令功能: 累加器src与测试位TC循环左移一位,执行过程:,指令格式: ROLTC src, TC的值移入src的最低位, 累加器src左移一位, src的最高位移入TC, src的保护位清0,0,81, 带进位位循环右移,操作数src:累加器A或B,指令功能: 累加器src与进位位C循环右移一位。,执行过程:,指令格式: ROR src, C的值移入src的31位 累加器src右移一

19、位 src的最低位移入C src的保护位清0,0,82, 算术移位,操作数src:累加器A或B,指令功能: 根据SHIFT,src的内容算术移位。,指令格式: SFTA src, SHIFT , dst,If SHIFTSHIFTsrc或dst0src (SHIFT-1)0)或 0dst (SHIFT-1)0),83,算术移位执行过程:,SHIFT 0时,进行算术左1) src的第(39-SHIET)位复制到进位位C2) 40位src左移SHIFT位,结果存入src或dst3) 将0置入dst的低SHIFT的各位,0写入dst(SHIFT-1)0),84, 条件移位,操作数src:累加器A或B

20、,指令功能:,指令格式: SFTC src,If src=0 Then 1 TCElse If src(31)=src(30)Then src1 src0 TCElse 1 TC,85,条件移位执行过程:当src = 0时,将1写入测试位TC;当src0时,进行条件移位。若src有两个有效符号位,则移位。32位src左移一位;保护位src(3932)不变;0写入测试位TC。若src只有一个符号位,则不移位。1写入测试位TC。,86, 逻辑移位,指令功能:,If SHIFT0 Then src(-SHIFT) -1) Csrc(310)SHIFT dst0 dst(39(31+SHIFT+1)I

21、f SHIFT=0 Then 0 C Else src(31-(SHIFT-1) Csrc(31-SHIFT)0)SHIFT dst0dst(SHIFT-10)0dst(3932),87,执行过程:若SHIFT 0,则进行逻辑左移。src的第(31-(SHIFT-1)位复制到进位位C;src(31-SHIFT)0)左移SHIFT位存入dst;0写入dst的低SHIFT位,即0dst(SHIFT-1)0);0写入dst的高8位,即0dst(3932)。,88,例2:,例1:,89,例4:,例3:,90,例6:,例5:,91,5. 测试操作指令,C54x共有5条测试操作指令。, BIT,指令格式:

22、 BIT Xmem,BITC,指令功能: (Xmem(15-BITC)TC 功能说明: 将Xmem的指定位复制到TC位。,操 作 数: Xmem双数据存储操作数BITC测试位的位代码, 取值:015,92, BITF,指令格式: BITF Smem,#lk,指令功能: If(Smem)AND lk)= 0 Then 0 TCElse 1 TC 功能说明: 测试Smem中由1k指定的某些位。若指定的测试位为0,TC=0,否则,TC=1。lk在测试指定位中起屏蔽作用。,操 作 数: Smem单数据存储操作数#lk16位长立即数, 取值:0 65 535,93, BITT,指令格式: BITT Sm

23、em,指令功能: (Smem(15-T(30)TC 功能说明: 将Smem的指定位复制到TC中。T寄存器的低4位T(30)用于确定测试位的位代码,位地址对应于15-T(30)。,操 作 数: Smem单数据存储操作数,94, CMPM,指令格式: CMPM Smem,#lk,操 作 数: Smem单数据存储操作数#lk长立即数, 取值:-32 768 32 768,指令功能: If (Smem)= lk Then 1 TCElse 0 TC 功能说明: 比较Smem中的操作数与常量1k是否相等。若(Smem)= 1k,则TC = 1,否则,TC = 0。,95, CMPR,指令格式: CMPR

24、 CC,ARx 操 作 数: CC条件代码,取值:00b11bARx辅助寄存器AR0AR7,指令功能: If (cond) Then 1 TC,Else 0 TC 功能说明: 根据条件代码CC,将指定的ARx与AR0比较。若满足条件,则TC = 1,否则,TC = 0。,96,例1:,97,例3:,例2:,98,例5:,例4:,99,三、程序控制指令,C54x的程序控制指令共有31条,可分为7类:,分支转移指令(B,BC) 子程序调用指令(CALL) 返回指令(RET) 中断指令(INTR,TRAP) 重复指令(RPT) 堆栈操作指令(FRAME,POP) 其它程序控制指令(IDLE,NOP)

25、,100,101,1.分支转移指令,分支转移指令共有6条,可实现无条件转移、有条件转移和远程转移等。,102,指令格式: BD pmad,功能说明:将pmad指定的程序存储器地址赋给PC,实现分支转移。, BD,注意:若指令带后缀D,则为延迟方式,紧随该指令的两条单字指令或一条双字指令先被取出执行,然后程序再转移该指令不能被循环执行。,操 作 数:pmad立即数表示的程序存储器地址。取值: 065 535,指令功能: pmad PC,103,指令格式: BACCD src, BACCD,操 作 数: src累加器A或B,指令功能: src(150) PC,功能说明: 由src低16位所确定的地

26、址赋给PC。,注 意: 若指令带后缀D,则为延迟方式。该指令不能被循环执行。,104,指令格式: BANZD pmad,Sind, BANZD,操 作 数: Sind单间接寻址操作数pmad程序存储器地址,指令功能: If (ARx) 0) Then pmadPCElse (PC)+2PC,功能说明: 若当前ARx0,则pmad的值赋给PC,否则,PC值加2。,注 意: 带后缀D为延迟方式。指令不能循环执行。,105,指令格式: BCD pmad, cond, cond, cond, BCD,操 作 数: pmad程序存储器地址。,指令功能: If (cond(s) Then pmadPCEl

27、se (PC)+2PC,功能说明: 若满足特定条件,则pmad的值赋给PC,否则,PC值加2。,注 意: 带后缀D为延迟方式。指令不能循环执行。,106,指令格式: FBD extpmad, FBD,操 作 数: extpmad23位立即数表示的程序存储器地址。取值:07F FFFF,指令功能: (extpmad(150)PC;(extpmad(2216)XPC,功能说明: 将extpmad的高7位(2216)确定的页赋给XPC,extpmad的低16位赋给PC。,注 意: 带后缀D为延迟方式。指令不能循环执行。,107,指令格式: FBACCD src, FBACCD,操 作 数: src累

28、加器A或B,指令功能: (src(150)PC;(src(2216)XPC,功能说明: 将src的高7位(2216) 赋给XPC,src的低16位(150) 赋给PC。,注 意: 带后缀D为延迟方式。指令不能循环执行。,108,例1:,例2:,109,例4:,例3:,110,例6:,例5:,111,例8:,例7:,112,例10:,例9:,113,例12:,例11:,114,例14:,例13:,115,2.子程序调用指令,116,操 作 数: src累加器A或B,指令格式: CALAD src,指令功能: 若非延时,(SP)-1SP (PC)+1TOS(src(150)PC若延时,(SP)-1

29、SP (PC)+3TOS(src(150)PC, CALAD,功能说明: 首先将返回的地址压入栈顶保存,然后将src的低16位赋给PC,实现子程序调用,117,指令格式: CALLD pmad, CALLD,操 作 数: pmad程序存储器地址。,指令功能: 若非延时,(SP)-1SP (PC)+2TOSpmadPC若延时,(SP)-1SP (PC)+4TOSpmadPC,功能说明: 首先将返回的地址压入栈顶保存,然后将pmad的值赋给PC,实现子程序调用。,118,指令格式: CCD pmad, cond, cond, cond, CCD,指令功能:,功能说明:若满足条件,则将返回地址压入栈

30、顶,将pmad的值赋给PC,实现子程序调用。,若延时,If (cond(s)Then (SP)-1SP(PC)+4TOSpmadPCElse (PC)+2PC,若非延时,If (cond(s)Then (SP)-1SP(PC)+2TOSpmadPCElse (PC)+2PC,119, FCALAD,指令格式: FCALAD src,指令功能: 若非延时,(SP)-1SP (PC)+1TOS(SP)-1SP (XPC)TOS (src(150)PC (src(2216)XPC,功能说明: 先将返回地址PC、XPC压入栈顶,然后将src的低16位值赋给PC,高7位值赋给XPC。,若延时,(SP)-

31、1SP (PC)+3TOS(SP)-1SP (XPC)TOS(src(150)PC (src(2216)XPC,120, FCALLD,指令格式: FCALLD extpmad,指令功能:若非延时,(SP)-1SP (PC)+2TOS(SP)-1SP (XPC)TOS (extpmad(150)PC (extpmad(2216)XPC,功能说明: 先将返回地址PC、XPC压入栈顶,然后将extpmad的低16位赋给PC,高7位赋给XPC。,若延时,(SP)-1SP (PC)+4TOS(SP)-1SP (XPC)TOS(extpmad(150)PC (extpmad(2216)XPC,121,例

32、1:,122,例3:,例2:,123,例5:,例4:,124,例7:,例6:,125,3.中断指令,操 作 数: K小于9位的短立即数,指令格式: INTR K,指令功能: (SP)-1SP (PC)+1TOS, INTR,功能说明:首先将PC值压入栈顶,然后将K所确定的中断向量赋给PC,执行中断服务子程序。中断标志寄存器IFR对应位清0且INTM=1。,126,操 作 数: K小于9位的短立即数,指令格式: IRAP K,指令功能: (SP)-1SP (PC)+1TOS, IRAP,功能说明: 首先将PC值压入栈顶,然后将K所确定的中断向量赋给PC,执行中断服务子程序。,127,例2:,例1

33、:,128,4.返回指令,指令格式: FRETD,指令功能: (TOS)XPC (SP)+1SP(TOS)PC (SP)+1SP, FRETD,功能说明: 长返回指令。先将栈顶低7位赋给XPC。再把下一个单元的16位值赋给PC,SP加1修正。,129,指令格式: FRETED,指令功能: (TOS)XPC (SP)+1SP(TOS)PC (SP)+1SP 0INTM, FRETED,功能说明: 长中断返回指令。先将栈顶低7位赋给XPC。再将下一个单元的16位值赋给PC,同时中断屏蔽位INTM清0。,130,指令功能: If (cond(s) Then (TOS)PC (SP)+1SPElse

34、(PC)+1PC, RCD,功能说明: 若满足条件,栈顶数据弹出到PC,SP加1,若不满足条件,执行PC加1。,指令格式: RCD cond, cond, cond,指令功能: (TOS)PC (SP)+1SP, RETD,功能说明: 栈顶16位数据弹出到PC,SP加1。,指令格式: RETD,131,指令功能: (TOS)PC (SP)+1SP 0INTM, RETED,功能说明: 栈顶16位数据弹出到PC,SP加1,INTM清0。,指令格式: RETED,指令功能: (RTN)PC (SP)+1SP 0INTM, RETFD,功能说明: 将快速返回寄存器RTN中的内容赋给PC,然后SP加1

35、,INTM清0。,指令格式: RETFD,132,例1:,133,例3:,例4:,134,例5:,例6:,135,5.重复指令,单指令重复操作是指通过RPT或RPTZ指令使其下一条指令被重复执行,重复执行的次数由指令操作数给出,其值等于操作数加1,最大重复次数为65536。,RPTBD为程序块重复(块循环)操作指令,可以使紧随RPTB指令之后的程序块重复执行。,136,由重复指令变为单周期的指令,137,例3:,例2:,例1:,138,例5:,例4:,139,6.堆栈操作指令,指令格式: FRAME K,指令功能: (SP)+KSP, FRAME,功能说明: 将短立即数偏移K加到SP中。,操

36、作 数: K9位短立即数,取值:-128127,140, POPM,指令格式: POPM MMR,操 作 数: MMR存储器映像寄存器,指令功能: (TOS)MMR (SP)+1SP,功能说明:由SP寻址的数据存储器单元中的内容复制到MMR中,然后修改SP。, POPD,指令格式: POPD Smem,指令功能: (TOS)Smem (SP)+1SP,功能说明: 由SP寻址的数据存储器单元中的内容复制到由 Smem确定的数据存储器单元中。然后SP加1。,141, PSHD,指令格式: PSHD Smem,指令功能: (SP)-1SP Smem TOS,功能说明: SP减1操作后,将存储单元Sm

37、em的内容压入SP指向的数据存储单元。, PSHM,指令格式: PSHM MMR,指令功能: (SP)-1SP MMR TOS,功能说明: SP减1操作后,将MMR的内容压入SP指向的数据存储单元。,142,7.其他程序控制指令,指令格式: IDLE K,指令功能: (PC)+1PC, IDLE,功能说明: 强迫程序执行等待操作直到产生非屏蔽中断或复位操作。PC值加1,芯片保持空闲状态直至中断产生。,操 作 数: K短立即数,取值:1、2、3,143,指令格式: MAR Smem, MAR,功能说明: 修改由Smem所确定的辅助寄存器的内容。当CMPT=0时,只修改ARx的内容,不修改ARP。

38、当CMPT=1时,若当前ARx为AR0,则修改ARx(ARP)的内容,但不修改ARP的值;若当前ARx不为AR0,则修改ARx的内容,然后再将x值赋给ARP。,144,指令格式: NOP, NOP,功能说明:该指令除了执行PC加1外,不执行任何操作。, RESET,指令格式: RESET,功能说明:指令实现非屏蔽的PMST、ST0和ST1复位。(IPTR)7 PC 0OVA 0OVB 1C 1TC 0ARP0DP 1SXM 0ASM 0BRAF 0HM 1XF 0C160FRCT 0CMPT 0CPL 1INTM 0IFR 0OVM,145,指令格式: RSBX N,SBIT, RSBX,功能

39、说明:对状态寄存器ST0和ST1的特定位清0。,操 作 数:N指明被修改的状态寄存器,N=0时,为ST0;N=1时,为ST1SBIT表示状态寄存器被修改的位数,取值:015,指令功能: 0STN(SBIT),146,指令格式: SSBX N,SBIT, SSBX,功能说明:对状态寄存器ST0和ST1的特定位置1。,操 作 数:N指明被修改的状态寄存器,N=0时,为ST0;N=1时,为ST1SBIT表示状态寄存器被修改的位数,取值:015,指令功能: 1STN(SBIT),147, XC,功能说明:若n=1且满足条件,则执行仅随其后的一条单字指令。若n=2且满足条件,则执行仅随其后的一条双字或两

40、条单字指令。若不满足条件,则执行n条NOP指令。,操 作 数:n表示紧接着执行的指令条数,n=1或2。,指令功能:If(cond) Then 紧接着的n条指令被执行Else 紧接着执行n条NOP指令。,指令格式: XC n,cond, cond, cond,148,例1:,例2:,149,例3:,例4:,150,四、数据传送指令,是从存储器中将源操作数传送到目的操作数所指定的存储器中,包括:,装载指令(LD) 存储指令(ST) 条件存储指令(CMPS) 并行装载和存储指令(STLD) 并行装载和乘法指令(LDMAC) 并行存储和加减指令(STADD,STSUB) 并行存储和乘法指令(STMAC

41、) 数据块传送指令(MVDD,PORTW,READA),151,1.装载指令,即取数或赋值指令,用于将存储器内容或立即数赋给目的寄存器,共计21条。,格式:,操作码 源操作数 ,移位数 ,目的操作数,功能: 源操作数按移位数进行移位,将移位结果送入目的操作数指定的寄存器。,DLD LD LDM LDR LDU LTD,Lmem SARAM中的32位数据 Smem SARAM中的16位数据 Xmem DARAM中的16位数据 #K 小于9位的短立即数 #lK 16位长立即数 #k9 9位立即数 #k5 5位立即数 #k3 3位立即数 src 源累加器A或B MMR 存储器映像寄存器,TS 6位移

42、位数-16TS31,16 16位移位数,SHIFT 5位移位数-16SHIFT15,SHFT 4位移位数0SHFT15,ASM 5位移位数-16ASM15,dst 累加器A或B,T 暂存器,DP RAM页指针,ASM 累加器移位方式位,ARP 辅助寄存器指针,152,(1) DLD Lmem,dst,功能: dst = Lmem 将Lmem所指定的单数据存储器中的32位数据送入累加器A或B中。,(2) LD Smem,dst,功能: dst = Smem 将Smem所指定的单数据存储器中的16位数据送入累加器A或B中。,(3) LD Smem,TS,dst,功能: dst = SmemTS 将

43、Smem所指定的单数据存储器中的数据,按TS所给定的移位数(-16TS31)移位,然后送入A或B。,(4) LD Smem,16,dst,功能: dst=Smem16 将Smem所指定的单数据存储器的数据左移16位后送入A或B。,153,功能: dst = #K 将短立即数K送入累加器A或B。,(8) LD #lk ,SHFT,dst,功能: dst = #lkSHFT 将长立即数lk移位后,送入累加器A或B。,(9) LD #lk,16,dst,功能: dst = #lk16 将长立即数lk左移16位后,送入累加器A或B。,(7) LD #K,dst,(5) LD Smem ,SHIFT,d

44、st,功能: dst=SmemSHIFT 将Smem所指定的单数据存储器的数据,按SHIFT所给定的移位数移位,然后送入A或B。,(6) LD Xmem,SHFT,dst,功能: dst=XmemSHFT 将Xmem所指定的双数据存储器的数据, 按SHFT所给定的移位数移位,然后送入A或B。,154,(10) LD src,ASM ,dst,功能: dst = srcASM 将源累加器src中的数据,按ASM(-16SAM15)所给定的移位数移位后,送入目的累加器dst。,(11) LD src ,SHIFT ,dst,功能: dst = srcSHIFT 将源累加器src中的数据,按SHIF

45、T所给定的移位数移位后,送入目的累加器dst。,(12) LD Smem,T,功能: T = Smem 将Smem所指定的单数据器的数据送入暂存器T。,(13) LD Smem,DP,功能: DP = Smem(8-0) 将Smem所指定的单数据存储器的低9位数据,送入数据存储器页指针DP。,155,(16) LD #k3,ARP,功能: ARP = #k3 将3位立即数送入ARP(3位辅助寄存器指针位)。,(17) LD Smem,ASM,功能: ASM = Smem(4-0)将Smem所指定的单数据存储器的低5位数据送入ASM。,(18) LDM MMR,dst,功能: dst = MMR

46、 将MMR寄存器中的数据,送入累加器dst。,(14) LD # k9,DP,功能: DP = #k9 将9位立即数送入DP。,(15) LD #k5,ASM,功能: ASM = #k5 将5位立即数送入累加器移位方式位ASM。,156,(19) LDR Smem,dst,功能: dst(31-16)=rnd(Smem) 将Smem所指定的单数据存储器的 数据舍入后送入累加器。,(20) LDU Smem,dst,功能: dst = uns(Smem) 将Smem所指定的单数据存储器的无符号数据,送入累加器。,(21) LTD Smem,功能: T=Smem,(Smem+1)= Smem 将单

47、数据存储器Smem的数据,送入寄存器T,并延时。,157,2.存储指令,是将源操作数或立即数存入指定存储器或寄存器,共计14条。,格式:,操作码 源操作数 ,移位数 ,目的操作数,功能: 源操作数按移位数进行移位,将移位结果存入目的存储器或寄存器。,DST ST STH STL STLM STM,src 源累加器A或B T 暂存器 TRN 状态寄存器 #lK 16位长立即数,SHIFT 5位移位数-16SHIFT15,SHFT 4位移位数0SHFT15,ASM 5位移位数-16ASM15,Smem 16位单数据存储器操作数,Xmem 16位双数据存储器操作数,MMR 存储器映像寄存器,158,159,3.条件存储指令,根据条件将源操作数存入目的存储器,共计4条指令。,(1) CMPS src,Smem,功能:,若src(3116) src(150),则Smem=src(3116); 若src(3116) src(150),则Smem=src(150)。 即比较累加器的高、低位,并存储最大值。,

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报