DSPTMSLFx汇编指令系统.pptx
《DSPTMSLFx汇编指令系统.pptx》由会员分享,可在线阅读,更多相关《DSPTMSLFx汇编指令系统.pptx(119页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、4.1.2 指令常用符号定义ACC 累加器。AR 辅助寄存器。ARX LAR和SAR指令中使用的3位的值,表示要加载(LAR)或要保存(SAR)哪个辅助寄存器的值。BITX 在BIT测试指令中出现,代表4位二进制数,表示测试数据存储 单元的某一位,若测试D1位,则BITX为1110(1110B=15-1)。CM 一个2位的值。CM=00-测试是否当前AR=AR0 CM=01-测试是否当前ARAR0 CM=11-测试是否当前ARAR0第1页/共119页IAAA AAAA 左边的I表示1位,反映使用直接寻址(I=0)还是间接 寻址(I=1)。当使用直接寻址时,7个A 是数据存储器 地址的低7位;对
2、于间接寻址,7个A 是控制辅助寄存 器操作的7位。IIII IIII 短立即寻址中使用的8位常数。I IIII IIII LDP指令在短立即寻址中使用的9位常数。I IIII IIII IIII MPY指令在短立即寻址中使用的13位常数。INTR#表示数值031的5位值。INTR指令使用该值把程序转移 到32个中断矢量地址之一。PM SPM指令拷贝到状态寄存器ST1中PM位的2位值。SHF 3位的左移值。SHFT 4位的左移值。第2页/共119页TP 条件执行指令用来表示以下4种条件的2位值。BIO引脚为低-TP=00;TC=1-TP=01;TC=0-TP=10;无条件-TP=11。ZLVC
3、ZLVC 两个4位字段,每位表示以下条件:ACC=0-Z;ACC0-L;溢出-V;进位-C+1word 双字操作码的第2个字。包含16位常数。根据指令不同该 常数可能是长立即数、程序存储器地址、I/O端口或I/O映 射的寄存器地址。第3页/共119页4.2.1语法指令助记符 ;操作数缺省指令助记符 dma,shift ;左移015位直接寻址指令助记符 dma,16 ;左移16位直接寻址指令助记符 ind,shift,ARn ;左移015位间接寻址指令助记符 ind,16,ARn ;左移16位间接寻址指令助记符#k ;短立即寻址指令助记符#lk,shift ;左移015位长立即寻址4.2 指令句
4、法描述第4页/共119页说明(1)指令助记符是指令中的关键字,表示本条指令的操作类型,不能缺省。(2)指令助记符与操作数之间要用空格分开,各操作数之间要用“,”分开,操作数可缺省。黑体字符表示在该类型的指令中必须写出的字符,其他字符为变量,指令中用数字和字符代替。各字符的含义如下:第5页/共119页dma 数据存储器地址的低7位,与数据页面指针(DP)构成一个完 整的16位数据存储器地址。shift 左移015位。ARn n为07,ARn指定下次的辅助寄存器。Ind 选择*、*+、*-、*0+、*0-、*BR0+、*BR0-7中符号之一。#立即寻址方式中常用的前缀。数值前面带“#”,表示该数值
5、为一 个立即数;数值前面不带“#”,表示该数值为数据存储器地址的 低7位。k 8位短立即数lk 16位长立即数,x 操作数x 是可选项x1,x2 操作数x1、x2是可选项第6页/共119页操作部分提供了指令完成的操作序列,即描述当指令执行时所进行的处理过程。(r)寄存器或存储单元r的内容xy 数值x被赋予寄存器或存储单元yr(n:m)寄存器或存储单元r中的位n到位m(r(n:m))寄存器或存储单元r中的位n到位m的内容 nnh 指出nn表示一个十六进制数4.2.2 操作第7页/共119页4.2.3 举例ADD*+,0,AR040302h2h2hARPAR4302hACCXC数据存储器指令执行前
6、04hC00303h2hARPAR4302hACC0数据存储器指令执行后第8页/共119页4.3 指令集1、取累加器绝对值指令 ABS句法:ABS功能:对累加器ACC的内容取绝对值后送回累加器,并将进位位C清0操作:(PC)+1PC;(ACC)ACC;0 C例1:ABS第9页/共119页2、带移位的加法指令ADD句法:ADD dma,shift ADD dma,16 ADD ind,shift,ARn ADD ind,16,ARn ADD#k ADD#lk,shift功能:将被寻址的数据存储器单元的内容或立即数左移016位后加到累加器 中,移位时低位填0,高位填0(SXM=0)或符号扩展(SX
7、M=1)操作:(PC)+1PC;(ACC)+(数据存储器地址)*2shift)ACC或(ACC)+k ACC 或(ACC)+lk*2shift ACC第10页/共119页例2:ADD 1,1 ;设DP=6,则数据存储器地址为0300h037Fh,(ACC)+(数据存储器0301h)*21 ACC例3:ADD *+,0,AR0例4:ADD#1h例5:ADD#1111h,1第11页/共119页3、带进位加法指令ADDC句法:ADDC dmaADDC ind,ARn功能:将被寻址的数据存储器单元的内容与累加器的内容及进位位相 加,结果送至累加器。操作:(PC)+1PC;(ACC)+(数据存储器地址)
8、+(C)ACC状态位:影响C和OV位,受OVM状态位影响,不受SXM影响。若相加结果产生进位,则C=1,否则C=0。第12页/共119页例6:ADDC DAT300例7:ADDC *-,AR4 ;(设OVM=0),将当前AR指定的数据存储 单元的内容与累加器的内容及进位位相加 后送累加器,并将当前AR的内容减1,然 后将AR4指定为下次的辅助寄存器。第13页/共119页4、加法指令ADDS句法:ADDS dma ADDS ind,ARn功能:将被寻址的数据存储器单元的内容与累加器的内容相加,结果送至累加器。操作:(PC)+1PC;(ACC)+(数据存储器地址)ACC状态位:影响C和OV位,受O
9、VM状态位影响,不受SXM影响。若相加结果产生进位,则C=1,否则C=0。第14页/共119页例8:ADDS 6 ;设DP=5,则数据存储器地址为280h2FFh,(ACC)+(数据存储器286h)ACC例9:ADDS *第15页/共119页5、加法指令ADDT句法:ADDT dma ADDT ind,ARn功能:将被寻址的数据存储器单元的内容左移015位后与累加器的内容相 加,结果送至累加器,移位时低位填0,高位填0(SXM=0)或符号 扩展(SXM=1)。操作:(PC)+1PC;(ACC)+(数据存储器地址)*2(TREG(30)ACC状态位:影响C和OV位,受OVM 和SXM状态位影响。
10、若相加结果产生进位,则C=1,否则C=0。第16页/共119页例10:ADDT 7Eh ;(设DP=4,则数据存储器地址为0200h027Fh,设SXM=0)(ACC)+(027Eh)*2(TREG(30)ACC例11:ADDT *-,AR4第17页/共119页6、辅助寄存器增量指令ADRK句法:ADRK#k功能:将8位立即数按右对齐方式与当前辅助寄存器AR的内容相加,结 果送至当前辅助寄存器。操作:(PC)+1PC;(当前AR)+8位立即数当前AR 例12:ADRK#80h第18页/共119页7、与指令AND句法:AND dma AND ind,ARn AND#lk,shift AND#lk
11、,16功能:如果使用直接或间接寻址,累加器的低16位和被寻址的数据存储器单元的内容进行逻辑与操作,结果送累加器的低16位,累加器的高16位清0。如果使用长立即数寻址,则16位长立即数左移016位后和32位的累加器相与,结果送累加器。操作:(PC)+1PC;(ACC(150)AND(数据存储器地址)ACC(150);0 ACC(3116)(ACC(310)AND lk*2 shift ACC第19页/共119页例13:AND 16 ;设DP=4,则数据存储器地址为0200h027Fh,(ACC(150)AND(0210h)ACC(150)0 ACC(3116)例14:AND *例15:AND#0
12、0FFh,4第20页/共119页8、加法指令APAC句法:APAC功能:将累加器内容与移位后的乘积寄存器的内容相加,结果送至累加 器。PREG的移位方式由ST1中PM为确定。操作:(PC)+1PC;(ACC)+移位后的(PREG)ACC状态位:影响C和OV位,受OVM 和PM状态位影响。不受SXM 状态位影响。例16:APAC第21页/共119页9、无条件转移指令B句法:B pma,ind,ARn功能:程序无条件转移到指令指定的程序存储器地址(pma),并按指 令要求修改当前辅助寄存器和ARP的内容.操作:pmaPC (pma可以是符号地址或数值地址);按指令要求修改当前AR和ARP。例17:
13、B 16第22页/共119页10、按累加器内容转移指令BACC句法:BACC功能:程序无条件转移到累加器的低16位指定的地址中执行。操作:ACC(150)PC例18:BACC ;(设累加器的值是0203h)0203hPC,程序从0203h处继续 执行。第23页/共119页11、辅助寄存器不等于零转移指令BANZ句法:BANZ pma,ind,ARn)功能:如果当前辅助寄存器(AR)的内容不为0,则程序转移到pma指定的 程序存储器地址处继续执行;如果当前AR的内容为0,则执行下一 条指令;修改当前AR的内容。操作:若(当前AR)0,则pmaPC,否则(PC)+2PC;按指令要求的方式修改当前的
14、AR的内容和ARP,若不指定修改当 前的AR的方式,则当前AR减半(若将当前AR作为循环计数器,可执 行(当前AR)+1次循环).例19:BANZ PGM0第24页/共119页12、条件转移指令BCND句法:BCND pma,cond1,cond2 操作数中的cond1,cond2,为需满足的条件。功能:如果指令中指定的条件都满足,则程序转移到指令给出的程序存 储器地址(pma),只要有一个条件不满足就顺序执行下面的指令。操作:如果cond1,cond2,均满足,则pmaPC,否则PC+2PC。注意:有些条件是不能组合在一起使用的。例20:BCND PGM191,LEQ,C第25页/共119页
15、13、测试指令BIT句法:BIT dma,bit code ;直接寻址 BIT ind,bit code,ARn ;间接寻址功能:把数据存储单元中被指定位(即测试位)的值送到状态寄存器 ST1中的TC位,即如果测试该位为1,则TC就置1。指令中bitcode的值与数据存储单元被指定的测试位的关系 是:bit number=15-bit code操作:(PC)+IPC;(数据存储单元bit number)TC。状态位:影响TC状态位。例20:BIT *,0,AR1第26页/共119页14、测试指令BITT(由TREG指定bit code)句法:BITT dma ;直接寻址 BITT ind,AR
16、n ;间接寻址功能:把数据存储单元中被指定位的值送到状态寄存器ST1中的TC位。TREG低4位(D3D0)表示的bit code值与数据存储单元被指定的测 试位(bit number)的关系与BIT指令相同。操作:(PC)+I PC:(数据存储单元bit number)TC。状态位:影响TC位。例21:BITT 00h第27页/共119页15、数据存储器串传送指令BLDD句法:BLDD 源地址,目的地址 ;通用格式 BLDD#lk,dma ;源地址为长立即数,直接寻址 BLDD#lk,ind,ARn ;源地址为长立即数,间接寻址 BLDD dma,#lk ;目的地址为长立即数,直接寻址 BLD
17、D ind,#lk,ARn ;目的地址为长立即数,间接寻址功能:将“源地址”指定的数据存储器单元中的内容传送到“目 的地址”指定 的数据存储器单元中。第28页/共119页操作:第29页/共119页注意:复位时,重复计数器的RPTC的值为0,可用RPT指令装入计数值(N)。RPT指令与间接寻址方式的BLDD指令一起使用,可传送数据存储器中的 N+1个字。执行BLDD指令时,无论长立即数代表源地址,还是代表目的地址,均保存在PC中,每次重复时PC加1,从而访问一串地址(目的地址或源地址)。另一串数据的地址(源地址或目的地址)通过间接寻址,按指令指定的方式修改当前AR和ARP,从而实现两块数据区的数
18、据传送。如果使用直接寻址,因数据地址是常量,不能改变,所以重复执行BLDD 指令的结果是仅对一个单元写数据或对一串地址写同一个数据。源数据串和目的数据串不要求同在片内或同在片外。当与RPT指令一起使用时,一旦启动了RPT流水线,BLDD就变成了单周期指令,此时中断被禁止.第30页/共119页例22:BLDD#300h,20h ;设DP=6,则数据存储器地址为 0300h037Fh,将0300h的内容传送到320h例23:BLDD *+,#321h,AR3第31页/共119页16、程序存储器串传送指令BLPD句法:BLPD 源地址,目的地址 ;通用格式 BLPD#pma,dma ;源地址为长立即
19、数,直接寻址 BLPD dma,ind,ARn ;源地址为长立即数,间接寻址功能:将“源地址”指定的程序存储单元中的内容传送到“目的地址”指定的数 据存储单元中。操作:如指令15,将第二框中“lkPC改为“pmaPC,其余均相同。第32页/共119页注意:BLPD指令与BLDD指令有许多相似之处,BLDD指令中的注意事 项同样适合于BLPD指令。与BLDD不同的是,BLPD指令的源地址必须使用长立即数,并固定指向程序存储器,而目的地址可由数据存储器的地址或辅助寄存器指定。当重复BLPD指令时,源地址保存在PC中,每次重复PC加1。目的地址若由辅助寄存器指定,则按指令指定方式修改,从而实现程序区
20、到数据区的数据传送。目的地址若由数据存储器地址(常数)确定,则不能修改,此时重复执行BLPD指令将没有什么意义.第33页/共119页例24:BLPD#800h,00h ;设DP=6,则数据存储器地址为 0300h037Fh,将程序存储器800h的内容 传送到300h例25:BLPD#800h,*,AR7第34页/共119页17、无条件调用指令(由累加器指定)CALA句法:CALA功能:无条件调用由累加器低16位指定的子程序。利用该指令可根据计算 结果调用子程序。操作:(PC)+1堆栈栈顶TOS;ACC的低16位PC。例26:CALA第35页/共119页18、子程序调用指令CALL句法:CALL
21、 pam,ind1,ARn ;间接寻址功能:无条件调用由指令操作数指定的子程序,并按指令要求修改当前辅 助寄存器和ARP的内容。操作:(PC)+2堆栈栈顶TOS;pamPC;按指令要求修改(当前AR)和(ARP)。例27:CALL 191,*+,AR0第36页/共119页19、条件调用指令CC句法:CC pma,cond1,cond2,功能:如果指定的条件都满足,则调用pma指定则子程序。操作:如果cond1,cond2,都满足,则(PC)+2堆栈栈顶TOS,pamPC,否则PC+2。例28:CC 0BFh,LEQ,C ;若累加器的内容小于或等于0,且进位位为 1,则调用程序地址0BFh 处的
22、子程序,只要 有一个条件不满足,则继续执行CC下面的指 令。第37页/共119页20、清0指令CLRC句法:CLRC control bit 操作数中controlbit选择以下控制位之一:C 状态寄存器STI中的进位位(D9);CNF 状态寄存器STl中的RAM配置控制位(D12)INTM 状态寄存器ST0中的中断模式位(D9);OVM 状态寄存器ST0中的溢出模式位(D11):SXM 状态寄存器STl中的符号扩展模式位(DiO);TC 状态寄存器STl中的测试控制标志位(D11);XF 状态寄存器STl中的XF引脚状态位(D4):功能:把指定的控制位清0。操作:(PC)+1PC;0cont
23、rol bit。第38页/共119页21、累加器取反指令CMPL句法:CMPL功能:将累加器中的内容逻辑取反。操作:(PC)+1PC:(ACC)ACC。例28:CMPL第39页/共119页22、比较指令CMPR句法:CMPR CM功能:将当前辅助寄存器的内容与AR0的内容进行比较:若CM=0,则比较是否(当前AR)=(AR0);若CM=I,则比较是否(当前AR)(AR0);若CM=3,则比较是否(当前AR)(AR0);如果条件为真,则ST1中的TC位置1,如果条件为假,则TC清0.操作:(PC)+1PC,。完成由CM值(0-3)指定的当前AR和AR0的比较,若为真,则1TC,若为假,则 0TC
24、。注意:比较时辅助寄存器的值作为无符号整数看待。第40页/共119页23、数据移动指令DMOV句法:DMOV dma ;直接寻址 DMOV ind,ARn ;间接寻址功能:将指定的数据存储单元的内容复制到地址加1的单元。操作:(PC)+1 PC数据;(数据存储器地址)数据存储地址+1。状态位:受CNF状态位影响。注意:DMOV指令用于片内任何配置的数据存储器RAM块,数据的移动 可以跨越块的边界。DMOV指令不能用于外部数据存储器,如果指令指定了外部存储器 地址,执行时只读指定的存储器单元,但不进行其他操作。数据移动功能对于实现数据信号处理中的Z-1延时很有用。第41页/共119页例29:DM
25、OV *,AR1 ;将当前辅助寄存器指定的数据存储器单元 内容复制到地址加1单元,然后将下次辅助 寄存器指定为AR1第42页/共119页24、暂停指令IDLE句法:IDLE功能:程序停止执行,DSP芯片进入低功耗模式,直到发生硬件复位、硬件NMI或未被屏蔽的硬件中断(外部的或内部的)。操作:(PC+1)PC;等待硬件中断。状态位:受INTM的影响。注意:如果因NMI或复位使芯片退出低功耗模式,则执行0024h或0000h单元的中断服务程序。不管状态寄存器ST0中的中断模式位INTM为0或1,未被屏蔽的中断均可使芯片退出低功耗模式,但退出后的操作则取决于INTM。INTM=0,程序转移到相应的中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSPTMSLFx 汇编 指令系统
限制150内