3986.net
小网站 大容量 大智慧
当前位置:首页 >> 计算机软件及应用 >>

第六章DSP寻址方式和指令系统


6 DSP寻址方式和指令系统
? ? ? ? ?

?

6.1 寻址方式 6.2 指令介绍 6.3 常用伪指令 6.4 头文件及命令文件 6.5 集成开发环境简介 6.6 JTAG标准接口

6.1 寻址方式
? ? ?

立即寻址方式 直接寻址方式 间接寻址方式

6.1.1 立即寻址方式
?

? ?

在立即寻址方式下,指令字里包含 了一个供该指令使用的常数 立即数前面必须加“#” C2xx支持两种立即寻址方式
短立即数寻址 ? 长立即数寻址
?

短立即数寻址
?

短立即数寻址:8、9、13位的常数作为操作数

长立即数寻址
?

16位的常数作为操作数

6.1.2 直接寻址方式
?

?

该方式下,数据存储器以128个字被分为若干 块,每个块称作数据页,64K数据存储器包含 512个数据页。 当前的数据页由状态寄存器ST0的9位页指针 DP决定,CPU访问的特定单元地址由数据页和 指令包含的7位偏移量产生。

6.1.2 直接寻址方式
?

指令寄存器的格式为:
? ?

?

D15~8:指令类型 D7:寻址方式 D6~0:所寻址的数据存储器的7位偏移量

6.1.2 直接寻址方式
?

使用直接寻址方式
? ?

设置数据页 指定偏移量

6.1.3 间接寻址方式
?

?

?

利用8个辅助寄存器(AR0~AR7)提供间 接寻址的16位地址,可以访问64K数据存 储器的任意单元。 当前的辅助寄存器由状态寄存器ST0的3 位指针ARP选定,它可以由MAR、LST指 令或任何支持间接寻址的指令装载。 指令执行过程中,当前AR的内容用作被 访问的数据存储器地址。

间接寻址选项
选项 操作数 例子 LT *;(AR)—>TREG, AR 不变 不增不减 *

加1
减1

*+
*-

LT *+;(AR)—>TREG, AR +1—>AR
LT *-;(AR)—>TREG, AR–1—>AR LT *0+;(AR)—>TREG, AR+AR0—>AR LT *0-; (AR)—>TREG, AR–AR0 — >AR LT *BR0+; (AR)—>TREG, AR+AR0—>AR, 反向进 位加法

加索引值 *0+ 减索引值 *0加索引值,*BR0+ 反向进位

减索引值,*BR0反向进位

LT *BR0-; (AR)—>TREG, AR-AR0—>AR, 反向进 位减法

下一个辅助寄存器

间接寻址指令寄存器格式
? ?

8MSBs:指令类型,还包括数据移位信息 N:下一个辅助寄存器更新指示。
? ?

0:ARP的内容保持不变 1:ARP装入ARB,NAR装入ARP。

?

NAR:下一个辅助寄存器, NAR装入ARP。

间接寻址指令寄存器格式
?

ARU:辅助寄存器更新代码。

修改辅助寄存器
? ? ?

LAR ADRK、SBRK MAR

6.2 指令介绍
?

共六类(86条)
? ?

?
? ? ?

累加器、算术、逻辑指令 辅助寄存器、数据页指针指令 TREG、PREG、乘法指令 转移指令 控制指令 I/O、存储器操作指令

1. 累加器、算术、逻辑指令
(1) ABS
功能:累加器取绝对值; 句法:ABS 执行:PC+1; |(ACC)|->ACC;0->C (正数不变;负数取 反加1) 状态位:执行受OVM影响,结果影响C和OV 说明:当ACC为80000000h时,若没有设置溢出模式 (OVM=0),则结果为80000000h;若OVM=1,则结果 为7FFFFFFFh。两种情况OV均置位。

(2) ADD
功能:加至累加器; 句法:ADD dma[, shift] ;直接寻址,shift=0~16 ADD ind[,shift[,Arn]];间接寻址 n=0~7 ind:间接寻址操作选项 ADD #k ;短立即数寻址 k:8位短立即数 ADD #lk[,shift] ;长立即数寻址 lk:16位长立即数shift=0~15 执行:PC+1; (ACC)+(dma)*2shift->ACC; or (ACC)+lk*2shift->ACC;or (ACC)+k->ACC 状态位:执行受SXM(符号扩展)和OVM(结果)影响,结果影响C 和OV 说明:若使用间接寻址并更新ARP,则必须声明一个移位操作(0~ 16);短立即数寻址不受SXM位影响,并且不可重复执行。

(3) ADDC
功能:带进位加至累加器; 句法:ADDC dma ;直接寻址 ADDC ind[,Arn];间接寻址 n=0~7 ind: 间接寻址操作选项 执行:PC+1; (ACC)+(dma)+C->ACC; 状态位:执行受OVM影响,不受SXM影响,结果 影响C和OV 说明:符号扩展位被抑制;进位位按正常方式产 生。

(4)ADDS
功能:符号抑制加至累加器; 句法:ADDS dma ;直接寻址 ADDS ind[,Arn];间接寻址 n=0~7 ind: 间接寻址操作选项 执行:PC+1; (ACC)+(dma) ->ACC; 状态位:执行受OVM影响,不受SXM影响,结果 影响C和OV 说明:符号扩展位被抑制;进位位按正常方式产 生。

(5)ADDT
功能:由Treg决定移位次数加至累加器; 句法:ADDT dma ;直接寻址 ADDT ind[,Arn];间接寻址 n=0~7 ind: 间接寻址操作选项 执行:PC+1; (ACC)+(dma) X2Treg(3:0)->ACC; 状态位:执行受OVM和 SXM影响,结果影响C和 OV

(6) AND
功能:和累加器逻辑“与”; 句法:AND dma ;直接寻址 AND ind[,Arn] ;间接寻址 n=0~7 ind:间接寻址操作选项 AND #lk[,shift] ;长立即数寻址 lk:16位长立即数shift=0~16 执行:PC+1; (ACC(15:0)) AND (dma)->ACC(15:0) 0->ACC(31:16); (ACC(31:0) AND lk*2shift->ACC; 状态位:无 说明:若使用直接或间接寻址,累加器高字被清零;若使用长立即 数寻址,移位时,32位结果未被填充的高/低位清零。

(7)CMPL
功能:累加器求反; 句法:CMPL 执行:PC+1; (ACC)逐位取反->ACC 状态位:无 说明:累加器内容被其逻辑反所代替。

(8)LACC
功能:左移后装入累加器; 句法:LACC dma[, shift] ;直接寻址,shift=0~16 LACC ind[,shift[,Arn]];间接寻址 n=0~7 ind:间接寻址操 作选项 LACC #lk[,shift] ;长立即数寻址 lk:16位长立即数, shift=0~15 执行:PC+1; (dma)*2shift->ACC; or lk*2shift->ACC; 状态位:执行受SXM影响 说明:移位时,低位填0,高位由SXM位和符号位控制

(9)LACL
功能:装载累加器低位并清除累加器高位; 句法:LACL dma ;直接寻址 LACL ind[,Arn];间接寻址 n=0~7 ind:间接寻址操作选项 LACL #k ;短立即数寻址 k:8位短立即数 执行:PC+1; (dma)->ACC(15:0) 0->ACC(31:16); or k->ACC(7:0) 0->ACC(31:8); 状态位:执行不受SXM影响 说明:数据被当作无符号数处理

(10)LACT
功能:由TREG决定左移次数装入累加器; 句法:LACT dma ;直接寻址,shift=0~15 LACT ind [,Arn]] ;间接寻址 n=0~7 ind:间 接寻址操作选项 执行:PC+1; (dma)*2TREG(3:0)->ACC 状态位:执行受SXM影响 说明:移位时,低位填0,高位由SXM位和符号位控 制

(11)NEG
功能:累加器求补; 句法:NEG 执行:PC+1; ACC*(-1)->ACC; 状态位:执行受OVM影响,结果影响C和OV 说明:当ACC为80000000h时,若没有设置溢出模式
(OVM=0),则结果为80000000h,若OVM=1;则结果 为7FFFFFFFh,两种情况OV均置1;如果执行结果ACC =0, 则C=1;否则C=0。

(12)NORM
功能:对累加器规格化; 句法:NORM ind 执行:PC增加1,然后…
如果(ACC)=0:那么TC→1 否则,如果(ACC(31))XOR(ACC(30))=0 那么TC→0 (ACC)×2→ACC 按指定修改当前AR 否则TC→1;

状态位:影响TC 说明:

LOOP

MAR LAR NORM BCND
MAR LAR RPT NORM

*,AR1 AR1,#0 *+ LOOP,NTC
*,AR1 AR1,#15 #14 *-

(13)OR
功能:和累加器逻辑“或”; 句法:OR dma ;直接寻址 OR ind[,Arn] ;间接寻址 n=0~7 ind:间接寻址操作选项 OR #lk[,shift] ;长立即数寻址 lk:16位长立即数shift=0~16 执行:PC+1; (ACC(31:0)) OR (dma)->ACC(31:0); (ACC(31:0) OR lk*2shift->ACC; 状态位:无 说明:若使用长立即数寻址,移位时,32位结果未被填充的高/低位 清零。

(14)ROL
功能:累加器左移旋转; 句法:ROL 执行:PC+1; C→ACC(0) (ACC(31))→C (ACC(30:0))→ACC(31:1) 状态位:不受SXM位影响,该指令影响C位; 说明:

(15)ROR
功能:累加器右移旋转; 句法:ROR 执行:PC+1; C →(ACC(31)),ACC(0) → C, (ACC(31:1)) →ACC(30:0) 状态位:不受SXM位影响,该指令影响C位; 说明:

(16) SACH
功能:移位并存储累加器高字; 句法:SACH dma [,shift2];直接寻址, shift2=0~7 SACH ind[,shift2[,Arn]] ;间接寻址 n=0~7 ind:间接寻址操作 选项 执行:PC+1; (ACC*2shift)(高16位)->dma; 状态位:不受SXM的影响 说明:将整个32位累加器内容复制到输出定标器,无符号左移0~7 位,再将高16位结果保存。累加器的内容保持不变。

(17) SACL
功能:移位并存储累加器低字; 句法:SACL dma [,shift2];直接寻址, shift2=0~7 SACL ind[,shift2[,Arn]] ;间接寻址 n=0~7 ind:间接寻址操作 选项 执行:PC+1; (ACC*2shift)(低16位)->dma; 状态位:不受SXM的影响 说明:将整个32位累加器内容复制到输出定标器,无符号左移0~7 位,再将低16位结果保存。累加器的内容保持不变。

(18) SFL
功能:累加器左移; 句法:SFL 执行:PC+1; ACC(31)->C ACC(30:0)->ACC(31:1) 0->ACC(0) 状态位:执行不受SXM影响,结果影响C 说明:无

(19)SFR
功能:累加器算术右移; 句法:SFR 执行:PC+1; ACC(31:1)->ACC(30:0) ACC(0)->C if SXM=0, 0->ACC(31) else SXM=1 ACC(31)->ACC(31) ; 状态位:执行受SXM影响,结果影响C 说明:无

(20) SUB
功能:从累加器减; 句法:SUB dma[, shift] ;直接寻址,shift=0~16 SUB ind[,shift[,Arn]];间接寻址 n=0~7 ind:间接寻址操作选项 SUB #k ;短立即数寻址 k:8位短立即数 SUB #lk[,shift] ;长立即数寻址 lk:16位长立即数 shift=0~15 执行:PC+1; (ACC)-(dma)*2shift->ACC; or (ACC)-lk*2shift->ACC;or (ACC)-k->ACC 状态位:执行受SXM和OVM影响(短立即数不受SXM影响),结果 影响C和OV 说明:若未产生借位,C=1;若产生借位,C=0。

(21) SUBB
功能:累加器带借位减; 句法:SUBB dma ;直接寻址 SUBB ind[,Arn];间接寻址 n=0~7 ind: 间接寻址操作选项 执行:PC+1; (ACC)-(dma)-C的逻辑反->ACC; 状态位:执行受OVM(结果)影响,不受SXM影 响,结果影响C和OV 说明:符号扩展位被抑制。

(22) SUBC
功能:累加器条件减; 句法:SUBC dma ;直接寻址 SUBC ind[,Arn] ;间接寻址 n=0~7 ind:间接寻址操作选项 执行:对于(ACC)大于等于0并且(dma)大于等于0 PC+1; (ACC)-(dma)×215->ALU输出;若ALU输出大于等于0, 则 ALU输出×2+1->ACC,否则ACC × 2 ->ACC 状态位:不受SXM位影响,结果影响C和OV; 说明:实现条件减法,可用于16位正数除法:16位被除数位于累加 器低字,累加器高字清0,16位正除数存于数据存储器,然后执 行16次SUBC指令,商位于累加器低字,余数位于累加器高字。

(23)SUBS
功能:抑制符号扩展的累加器减; 句法:SUBS dma ;直接寻址 SUBS ind[,Arn];间接寻址 n=0~7 ind: 间接寻址操作选项 执行:PC+1; (ACC)-(dma) ->ACC; 状态位:执行受OVM(结果)影响,不受SXM影 响,结果影响C和OV 说明:符号扩展位被抑制;借位位按正常方式产 生。

(24)SUBT
功能:由Treg决定移位次数从累加器减; 句法:SUBT dma ;直接寻址 SUBT ind ;间接寻址 n=0~7 ind:间接寻址 操作选项 执行:PC+1; (ACC)-(dma)*2(TREG(3:0))->ACC; 状态位:执行受SXM和OVM影响,结果影响C和OV 说明:若未产生借位,C=1;若产生借位,C=0。

(25) XOR
功能:和累加器逻辑“异或”; 句法:XOR dma ;直接寻址 XOR ind[,Arn] ;间接寻址 n=0~7 ind:间接寻址操作选项 XOR #lk[,shift] ;长立即数寻址 lk:16位长立即数shift=0~16 执行:PC+1; (ACC(15:0)) XOR (dma)->ACC(15:0) ACC(31:16)->ACC(31:16); or (ACC(31:0) XOR lk*2shift->ACC(31:0); 状态位:无 说明:若使用长立即数寻址,移位时,32位结果未被填充的高低位 清零。

(26) ZALR
功能:清累加器低字并舍入装载累加器高字; 句法:ZALR dma ;直接寻址 ZALR ind[,Arn] ;间接寻址 n=0~7 ind:间接寻址操 作选项 执行:PC+1; (dma)->ACC(31:16); 8000h->ACC(15:0); 状态位:无 说明:无

2.辅助寄存器指令
(1) ADRK

功能:当前辅助寄存器加1个短立即数; 句法:ADRK #k ;立即寻址 执行:PC+1; (当前AR)+k->AR; 状态位:无 说明:k为8位正整数。

(2) SBRK
功能:当前辅助寄存器减1个短立即数; 句法:SBRK #k ;立即寻址 执行:PC+1; (当前AR)-k->AR; 状态位:无 说明:k为8位正整数,无符号减法。

(3) BANZ
功能:当前辅助寄存器不为0则跳转; 句法:BANZ pma[,ind[,Arn]];间接寻址 n=0~7 ind:间接寻址操作选项 执行:if (当前AR)?0 Then pma->PC else (PC)+2->pc 状态位:无 说明:缺省的操作是当前的AR减1,初始化AR为 N-1,可以执行N次循环。

(4)CMPR
功能:比较当前辅助寄存器和AR0; 句法:CMPR CM ; CM 比较条件:00-相等;01-小于; 10-大于;11-不等 执行:比较结果->ST1.TC 状态位:影响TC 说明:结果为真则TC=1;否则TC=0。

(5)LAR
功能:加载辅助寄存器 句法:LAR ARx, dma;直接寻址,x=0~7 LAR ARx,ind[,Arn];间接寻址 n=0~7 ind:间接寻址 操作选项 LAR ARx, #k ;短立即数寻址 k:8位短立即数 LAR Arx, #lk ;长立即数寻址 lk:16位长立即数 执行:PC+1; (dma)->ARx; or k or lk->ARx 状态位:无 说明:无论SXM为何值,常数被当作一个无符号数。

(6) SAR
句法:SAR ARx, dma;直接寻址,x=0~7 SAR ARx,ind[,Arn];间接寻址 n=0~7 ind: 间接寻址操作选项 执行:PC+1; ARx -> (dma); 状态位:无 说明:无

(7) MAR
功能:修改辅助寄存器 句法:MAR dma; 直接寻址,类似于执行一条空 指令 MAR ind[,Arn];间接寻址 n=0~7 ind:间 接寻址操作选项 执行:PC+1; 修改当前的AR和ARP指针 状态位:无

3 TREG、PREG和乘法指令
(1)APAC 功能:将乘积寄存器加至累加器; 句法:APAC 执行:PC+1; ACC+移位的PREG->ACC 状态位:执行受PM和OVM影响,结果影响C和OV 说明:操作不受SXM影响,PREG总是符号扩展的。

(2)LPH
功能:将数据存储器的内容装入乘积寄存器高字; 句法:LPH dma ;直接寻址 LPH ind[,ARn] ;间接寻址 n=0~7 ind:间接寻址 操作选项 执行:PC+1; (数据存储器)->PREG(31:16) 状态位:无 说明:将数据存储器的内容装入乘积寄存器高字,低字 不受影响。

(3)LT
功能:装载TREG 句法:LT dma;直接寻址 LT ind[,Arn];间接寻址 n=0~7 ind:间接寻址操作 选项 执行:PC+1; (dma)->TREG 状态位:无

(4)LTA
功能:装载TREG,累加前一次的乘积结果 句法:LTA dma;直接寻址 LTA ind[,Arn];间接寻址 n=0~7 ind:间 接寻址操作选项 执行:PC+1; (dma)->TREG; ACC+移位的PREG>ACC 状态位:执行受PM和OVM影响,结果影响C和OV 说明:对应的指令是LTS(装载TREG,减去前一 次的乘积结果)

(5)LTD
功能:装载TREG,累加前一次的乘积结果,同时移动数 据 句法:LTD dma;直接寻址 LTD ind[,Arn];间接寻址 n=0~7 ind:间接寻址操作选项 执行:PC+1; (dma)->TREG; (dma)->dma+1; ACC+移 位的PREG->ACC 状态位:执行受PM和OVM影响,结果影响C和OV 说明:只能用于片上的数据RAM操作,数据移动可以跨 越数据页

(6)LTP
功能:装载TREG,前一次的乘积结果保存到累 加器 句法:LTP dma;直接寻址 LTP ind[,Arn];间接寻址 n=0~7 ind:间接寻址操 作选项 执行:PC+1; (dma)->TREG; 移位的PREG->ACC 状态位:执行受PM影响 说明:无

(7)LTS
功能:装载TREG,减去前一次的乘积结果 句法:LTS dma;直接寻址 LTS ind[,Arn];间接寻址 n=0~7 ind:间 接寻址操作选项 执行:PC+1; (dma)->TREG; ACC-移位的PREG>ACC 状态位:执行受PM和OVM影响,结果影响C和OV 说明:

(8) MAC
功能:乘加操作 句法:MAC pma,dma;直接寻址 MAC pma, ind[,Arn];间接寻址 n=0~7 ind:间接寻址操 作选项 执行:PC->MSTACK; pma->PC; ACC+移位的PREG>ACC; (dma)->TREG; (pma)*TREG->PREG; 辅助寄存器 操作; PC+1->PC;如果无重复操作,MSTACK->PC 状态位:执行受PM和OVM影响,结果影响C和OV 说明:比较适于多项式计算,类似指令MACD。

(9) MACD
功能:乘加及数据移动操作 句法:MACD pma,dma;直接寻址 MACD pma, ind[,Arn];间接寻址 n=0~7 ind:间接寻址操 作选项 执行:PC->MSTACK; pma->PC; ACC+移位的PREG>ACC; (dma)->TREG; (pma)*TREG->PREG; 辅助寄存器 操作;(dma)->dma+1; PC+1->PC;如果无重复操作,MSTACK->PC 状态位:执行受PM和OVM影响,结果影响C和OV 说明:

(10)MPY
功能:有符号数乘法操作 句法:MPY dma;直接寻址 MPY ind[,Arn];间接寻址 n=0~7 ind:间接寻址操作选项 MPY #k; 短立即数寻址,k:13位短立即数 执行:PC+1; (dma)*TREG->PREG; k*TREG->PREG 状态位:无 说明:短立即数为13位有符号常数,直接符号扩展,不 受SXM的影响

(11)MPYA
功能:乘法操作并累加前一次的乘积结果 句法:MPYA dma;直接寻址 MPYA ind[,Arn];间接寻址 n=0~7 ind:间接寻址 操作选项 执行:PC+1; ACC+移位的PREG->ACC; (dma)*TREG->PREG; 状态位:执行受PM和OVM影响,结果影响C和OV 说明:对应的指令是MPYS(乘法操作并减去前 一次的乘积结果)

(12)MPYS
功能:乘法操作并减前一次的乘积结果 句法:MPYS dma;直接寻址 MPYS ind[,Arn];间接寻址 n=0~7 ind:间接寻址 操作选项 执行:PC+1; ACC-移位的PREG>ACC;(dma)*TREG->PREG; 状态位:执行受PM和OVM影响,结果影响C和OV 说明:

(13)MPYU
功能:无符号乘法操作 句法:MPYU dma;直接寻址 MPYU ind[,Arn];间接寻址 n=0~7 ind:间 接寻址操作选项 执行:PC+1; 无符号(dma)*无符号TREG>PREG; 状态位:无,不受SXM的影响 说明:

(14)PAC
功能:乘积寄存器送给累加器 句法:PAC 执行:PC+1; 移位的PREG->ACC; 状态位:受PM的影响 说明:

(15)SPAC
功能:累加器与乘积寄存器相减 句法:SPAC 执行:PC+1; ACC-移位的PREG->ACC; 状态位:受PM和OVM的影响,不受SXM的影响, 影响C和OV 说明:PREG总是符号扩展

(16)SPH
功能:保存PREG高字 句法:SPH dma;直接寻址 SPH ind[,Arn];间接寻址 n=0~7 ind:间接 寻址操作选项 执行:PC+1; 16位移位的PREG高字-> (dma); 状态位:结果受PM影响 说明:相关的指令SPL(保存PREG低字)

(17)SPL
功能:保存PREG低字 句法:SPL dma;直接寻址 SPL ind[,Arn];间接寻址 n=0~7 ind:间接 寻址操作选项 执行:PC+1; 16位移位的PREG低字-> (dma); 状态位:结果受PM影响 说明:

(18)SPM
功能:确定PREG的移位模式 句法:SPM 常数 执行:PC+1;常数送给乘积移位模式位; 状态位:影响PM 说明:ST0(0,1)

(19)SQRA
功能:平方计算并累加前次乘积结果 句法:SQRA dma;直接寻址 SQRA ind[,Arn];间接寻址 n=0~7 ind:间 接寻址操作选项 执行:PC+1; ACC+移位的PREG->ACC; (dma)->TREG; (dma)*TREG->PREG; 状态位:执行受PM和OVM影响,结果影响C和OV 说明:相对应的指令是SQRS(平方计算并减去 前次乘积结果)。

(20)SQRS
功能:平方计算并减前次乘积结果 句法:SQRA dma;直接寻址 SQRA ind[,Arn];间接寻址 n=0~7 ind:间 接寻址操作选项 执行:PC+1; ACC-移位的PREG->ACC; (dma)->TREG; (dma)*TREG->PREG; 状态位:执行受PM和OVM影响,结果影响C和OV 说明:

4 转移指令
(1)B
功能:无条件跳转 句法:B pma[,ind[,Arn]];间接寻址 n=0~7 ind: 间接寻址操作选项 执行:pma->PC; 间接寻址操作 状态位:无 说明:相关指令BACC(ACC(15:0)->PC)

(2)BACC
功能:根据累加器低字的内容跳转 句法:BACC 执行: ACC(15:0)->PC 状态位:无 说明:

(3)BANZ
功能:辅助寄存器为不零跳转 句法:BANZ pma[,ind[,Arn]];间接寻址 n=0~7 ind:间接寻址操作选项 执行:如果当前AR不等于0,pma->PC;否则 PC+2->PC;间接寻址操作 状态位:无 说明:

(4)BCND
功能:有条件跳转 句法:BCND pma,C1[C2,[C3]]] 条件:EQ, NEQ,LT,LEQ,GT,GEQ,NC,C,NOV,OV,BIO ,NTC,TC 执行:if C1and C2 and C3 pma->PC; 状态位:无 说明:无

(5)CALA
功能:无条件调用 句法:CALA 执行:PC+1->TOS, ACC(15:0) ->PC; 状态位:无 说明:

(6)CALL
功能:无条件调用 句法:CALL pma[,ind[,Arn]];间接寻址 n=0~7 ind:间接寻址操作选项 执行:PC+2->TOS, pma->PC; 间接寻址 操作 状态位:无 说明:

(6)CC
功能:有条件调用 句法:CC pma,C1[C2,[C3]]] 条件:EQ, NEQ,LT,LEQ,GT,GEQ,NC,C,NOV,OV,BIO ,NTC,TC 执行:if C1and C2 and C3 then PC+2>TOS, pma->PC else PC+1; 状态位:无 说明:无

(7)INTR

功能:软件中断 句法:INTR k ;k=0~31 执行:PC+1->TOS 对应中断矢量内容>PC; 状态位:影响INTM;不受INTM的影响 说明:INTM和中断屏蔽不会影响INTR指令, 一旦响应中断,通过INTM=1来总的禁止 中断

(8)NMI
功能:非屏蔽中断 句法:NMI 执行:PC+1->TOS; 24H->PC; 1->INTM; 状态位:影响INTM;不受INTM的影响 说明:

(9)RET
功能:子程序调用或中断调用返回 句法:RET 执行:(TOS)->PC;堆栈操作 状态位:无 说明:

(10)RETC
功能:子程序调用或中断调用条件返回 句法:RETC cond1[,cond2][,cond3]… 执行:if cond1 and cond2…, (TOS)->PC;堆栈操 作; 否则继续 状态位:无 说明:

(11)TRAP
功能:软件陷阱中断 句法:TRAP 执行:PC+1->TOS; 22H->PC; 状态位:不影响INTM;不受INTM的影响 说明:

5 控制指令
(1) BIT
功能:位测试 句法:BIT dma, bit code;直接寻址 bit code: 0~15 BIT ind, bit code [,Arn];间接寻址 n=0~7 ind:间接寻址 操作选项 执行:PC+1; (dma)的位(15-bit code)->TC; 状态位:结果影响TC 说明:拷贝数据存储器的位值到TC

(2)BITT
功能:TREG确定位代码的位测试 句法:BITT dma;直接寻址 BIT ind [,Arn];间接寻址 n=0~7 ind:间接寻址 操作选项 执行:PC+1; (dma)的位(15-TREG(3:0))->TC; 状态位:结果影响TC 说明:拷贝数据存储器的位值到TC

(3)CLRC
功能:清除控制位 句法:CLRC bit;bit: C, CNF, INTM,OVM,SXM,TC,XF 执行:PC+1; 0->bit; 状态位:无 说明:相对应的指令SETC(置位控制位)

(4)IDLE
功能:系统空闲等待中断 句法:IDLE 执行:PC不变;等待可屏蔽或不可屏蔽的硬件中 断; 状态位:受INTM的影响 说明:该指令使系统进入低功耗模式。若INTM =0,中断到来时,程序跳转到相应的中断服 务程序;若INTM=1,中断到来时,程序继续 执行。

(5)LDP
功能:加载数据页指针 句法:LDP dma ;直接寻址 LDP ind[,ARn] ;间接寻址 LDP #K ;短立即数寻址 执行:PC+1;(dma)的低9位->DP; K->DP 状态位:影响DP 说明:k为9位的短立即数。

(6)LST
功能:加载状态寄存器 句法:LST #m, dma ;直接寻址, m=0:ST0, m=1:ST1 LST #m, ind[,Arn] ; 间接寻址 n=0~7 ind:间接寻址操 作选项 执行:PC+1; (dma) ->STm; 状态位:影响ST0或ST1,但不影响INTM 说明:1) LST #0操作不影响ST1中的ARB位;2)LST #1 操作装载ARB的同时也加载ARP;3)间接寻址操作选项 中指定下一个AR的操作被忽略;4)用于子程序或中断 调用现场保护;5)直接寻址时,通常选择dma在数据 页0。相对应的指令有SST。

(7)NOP
功能:空操作 句法:NOP; 执行:PC+1; 状态位:无; 说明:产生延时。

(8)POP
功能:出栈操作 句法:POP; 执行:PC+1; (TOS)->ACC(15:0),0->ACC(31:16);堆栈上 弹一级 状态位:无; 说明:

(9)POPD
功能:出栈操作 句法:POPD dma; 直接寻址 POPD ind[,ARn]; 间接寻址 执行:PC+1; (TOS)->dma;堆栈上弹一级 状态位:无; 说明:

(10)PSHD
功能:入栈操作 句法:PSHD dma; 直接寻址 PSHD ind[,ARn]; 间接寻址 执行:PC+1; (dma)-> TOS;堆栈下压一级 状态位:无; 说明:

(11)PUSH
功能:入栈操作 句法:PUSH 执行:PC+1; ACC(15:0)-> TOS;堆栈下压一级 状态位:无; 说明:

(12)RPT
功能:重复下一条指令 句法:RPT dma ;直接寻址
RPT ind[,ARn] ; 间接寻址 n=0~7 ind:间接寻址操

作选项
RPT #k; ;短立即数寻址 k:8位短立即数 执行:PC+1; (dma)或k->RPTC; 状态位:无 说明:指令重复N+1次,重复操作不可被中断打断。

(13) SETC
功能:设置控制位 句法:SETC bit;bit: C, CNF, INTM,OVM,SXM,TC,XF 执行:PC+1; 1->bit; 状态位:无 说明:

(14)SST
功能:保存状态寄存器 句法:SST #m, dma ;直接寻址, m=0:ST0, m=1:ST1 SST #m, ind[,Arn] ; 间接寻址 n=0~7 ind:间接 寻址操作选项 执行:PC+1; STm-> dma; 状态位: 说明:

(6)I/O和存储器指令
(1) BLDD
功能:数据存储器空间内数据块移动 句法:BLDD #lk, dma ;直接寻址, lk:16位长立即数 BLDD #lk, ind[,Arn] ; 间接寻址 n=0~7 ind:间接寻址操作选项 BLDD dma, #lk; BLDD ind, #lk[,Arn]; 执行:PC+1; PC->MSTACK; lk->PC; (源)->目的; 间接寻址操作; PC+1->PC; (MSTACK)->PC 状态位:无 说明:指令之后的第一个操作数为源地址,第二个操作数为目的地 址;源地址在指令执行后自动加1(间接寻址、长立即数寻址);该 指令不能应用于存储器映射的控制寄存器;对应指令BLPD #PMA, DMA。

(2)BLPD
功能:从程序空间到数据存储器空间的数据块移动 句法:BLPD #pma, dma ;直接寻址, lk:16位长立即数 BLPD #pma, ind[,Arn] ; 间接寻址 n=0~7 ind:间接寻址操作选项 执行:PC+1; PC->MSTACK; pma->PC; (源)->目的; 间接寻址操作; PC+1->PC; (MSTACK)->PC 状态位:无 说明:指令之后的第一个操作数为源地址,第二个操作数为目的地 址。

(3)DMOV
功能:数据存储器空间内数据向高地址的移动 句法:DMOV dma ;直接寻址, DMOV ind[,ARn] ; 间接寻址 n=0~7 ind:间接寻址操作选项 执行:PC+1; dma->(dma+1) 状态位:受CNF 的影响 说明:DMOV只在DARAM块内工作,也可穿过连续块的边界。

(4)IN
功能:从I/O端口读取数据 句法:IN dma, IOPORT ;直接寻址, IOPORT:16位I/O端 口地址 IN ind, IOPORT[,Arn] ; 间接寻址 n=0~7 ind:间接寻址 操作选项 执行:PC+1; IOPORT->地址A(15:0); 数据D(15:0)>dma 状态位:无 说明:读取外部I/O端口的数据。相对应的指令是OUT(输 出数据到I/O端口)。

(5)OUT
功能:数据写从I/O端口 句法:OUT dma, IOPORT ;直接寻址, IOPORT:16位I/O 端口地址 OUT ind, IOPORT[,Arn] ; 间接寻址 n=0~7 ind:间接寻 址操作选项 执行:PC+1; IOPORT->地址A(15:0); 数据D(15:0)>IOPORT 状态位:无 说明:

(6)SPLK
功能:存储长立即数到数据存储器 句法:SPLK #lk, dma;直接寻址, lk:16位长立 即数 SPLK #lk, ind[,ARn];间接寻址 n=0~7 ind: 间接寻址操作选项 执行:PC+1; lk-> (dma); 状态位:无 说明:初始化控制寄存器或数据存储器

(7)TBLR
功能:表格读取 句法:TBLR dma;直接寻址 TBLR ind[,Arn];间接寻址 n=0~7 ind:间接寻址操作选 项 执行:PC+1; 然后PC->MSTACK; ACC(15:0)->PC; (pma)->dma; 间接寻址操作; PC+1->PC 状态位:无 说明:把累加器低字指定地址的PM单元的数据拷贝到指 令指定的DM单元,指令执行后,PC自动加1,相对应 的指令是TBLW(表格写入)。

(8)TBLW
功能:表格写 句法:TBLW dma;直接寻址 TBLW ind[,ARn];间接寻址 n=0~7 ind:间接寻址操作 选项 执行:PC+1; 然后PC->MSTACK; ACC(15:0)->PC; (dma)-> pma; 间接寻址操作; PC+1->PC 状态位:无 说明:TBLW指令将数据存储空间的字传送到程序存储空 间。

LDP SPLK SPLK LACC RPT SUBC SACL SACH

#4 #100, 0 #20,1 0 #15 1 0 1

LAR MAR LACL ADD
MAR LAR LAR ADD BANZ

AR0, #200H *,AR0 *+ *, 16
*,AR0 AR1,#5 AR0,#200H *+,AR1 LOOP,*-,AR0

LOOP

MAR LAR LACC LDP SPLK SUB SETC LACC LDP SACL SACH

*,AR7 AR7,#301H #9 #6 #4,1 *-,1,AR0 SXM #0F000H, 1 #4 0 1

MAR *,AR7 SST #1,*SST #0,*SACH *SACL *LARP MAR LACL ADD LST LST AR7 *+ *+ *+,16 #0,*+ #1,*

SETC LDP SPLK SPLK LACL ADD ABS SACL SACH

OVM #4 #0000H,0 #8000H,1 0 1,16
0 1

6.3 常用伪指令
1 定义段的伪指令
.bss:未初始化变量段,用于为未初始化的变量在.bss段 内保留空间; .text:程序代码段,通常用于包含可执行程序代码; .data:初始化数据段,用于包含已初始化的数据, 如表格数据等; .sect:定义一个已经初始化命名的段,将代码和数据放 入该段中; .usect:定义未初始化段,在未初始化命名段内保留空间。

2 初始化常数的伪指令
.byte:把1个或多个8位数值放入当前段连续的 字中; .word和.int:把1个或多个16位数值存储在当前 段连续的字中; .long:把1个或多个32位数值存储在当前段连续 的2个字中; .string:将1个或多个字符串中的8位字符存放在 当前段中,一次存储两个字符,为空时放 0(NULL); 主要应用于初始化存储器,而不需要指令赋值。

3 引用其它文件的伪指令
.copy和.include:告诉汇编器开始从其他文件中读取源说 明,读完之后再恢复从当前文件读取源语句,.include 包含的引用文件在LIST文件中不出现(不同于.copy); .def:指示在当前模块中定义且可以被其他模块使用的符 号; .ref:识别在当前模块中使用但在其它模块定义的符号; .global:声明外部符号一直在链接时可以被其它模块使 用;对于已定义的符号起.def的作用,对于未定义的符 号起.ref作用。

4 条件汇编和符号伪指令
.if/.elseif/.else/.endif:指示汇编器根据表达式结 果的真或假来汇编代码的某些段; .set和.equ:把常量值赋给符号; .asg:把字符串赋给替代符号(在汇编时遇到该 符号时,汇编器会把常量值或字符串嵌入到汇 编结果中); .end:指示汇编器中止汇编; .mmregs:定义存储器映射寄存器(页0)的全 局符号名,并将它们放在全局符号表中;

6.4 头文件及命令文件
一个完整的汇编语言文件一般包含3个部分: (1)用于定义外设控制寄存器的映射地址、用 户定义的端口寄存器地址和相关常量的头文件, 如F2407REGS.H,用.include引用; (2)实现要DSP完成的汇编语言工程文件,扩展 名为.asm; (3)用于文件链接的头文件,扩展名为.cmd, 该文件实现对程序存储空间和数据存储空间的 分配。

1 头文件
;C2xx Core Registers ;~~~~~~~~~~~~~~~~~~~~ IMR .set 0004h ; Int Mask IFR .set 0006h ; Int Flag WSGR .set 0FFFFh; Wait State Control (IO space mapped) ;Digital I/O ;~~~~~~~~~~~~~~~~~~~~ PADATDIR .set 7098h PBDATDIR .set 709Ah PCDATDIR .set 709Ch PDDATDIR .set 709Eh PEDATDIR .set 7095h PFDATDIR .set 7096h

; I/O port A Data & Direction ; I/O port B Data & Direction ; I/O port C Data & Direction ;I/O port D Data & Direction reg. ; I/O port D Data & Direction ; I/O port D Data & Direction

宏定义
类似于一个子程序,在编译时嵌入在引 用的汇编行中。 ? 基本格式: 宏名字 .macro 形参1,形参2,…. 宏内容定义 [.mexit] .endm
?

;----------------------------------------------------------------------; M A C R O - Definitions ;----------------------------------------------------------------------SBIT0 .macro DMA,MASK ; Clear bit Macro LACC DMA AND #(0FFFFh-MASK) SACL DMA .endm SBIT1 .macro DMA,MASK ; Set bit Macro LACC DMA OR #MASK SACL DMA .endm KICK_DOG .macro ;Watchdog reset macro LDP #WD_KEY>>7 SPLK #05555h,WD_KEY SPLK #0AAAAh,WD_KEY .endm

2 汇编代码的格式
由汇编语言编写的程序采用ASCII码文件存储, 每一行代码都包括标号、指令、操作数和注 释; 标号:指令 操作数 ;注释 ? 其中,标号用来定义一行代码或变量,它代 表一条指令或数据的存储地址,标号后面的 冒号是可选的。标号必须满足的条件: 1 标号的第一个字母必须是字母或下划线后跟 一个字母; 2 标号的第一个字母必须写在文件的第一列; 3 标号最多可包含32个字母。
?

指令包括伪指令和汇编语言指令,伪指令一 般用来在汇编过程中定义数据结构或控制汇 编的流程,伪指令以原点开头(.);汇编语 言命令是有效的CPU指令。 ? 操作数由常数、符号和表达式构成,操作数 之间必须用逗号分开。 ? 注释用于对代码进行说明,一般应遵循: 1 使用分号(;)开始时,注释可在任一列开始; 2使用星号(*)开始时,注释必须从文件的第 一列开始。
?

3 命令文件
由3部分组成: 1 输入/输出定义:设置链接命令的输入输出文 件以及链接选项 .obj文件:链接器要链接的目标文件 .lib文件:链接器要链接的库文件 .map文件:链接器生成的交叉索引文件 .out文件:链接器生成的可执行代码 链接器选项 2 MEMORY命令:描述系统实际的硬件资源 3 SECTIONS命令:描述“段”如何定位
?

? ? ?

?

MEMORY { PAGE0: ? VECS: ? PVECS: ? PM: PAGE1: ? REGS: 址*/ ? BLK_B2: ? BLK_B0: 内ARAM*/ ? BLK_B1: }

/*程序空间*/ ORIGIN=00000H,LENGTH=00040H /*中断向量存贮空间*/ ORIGIN=00044H,LENGTH=00100H /*外设中断向量*/ ORIGIN=00150H,LENGTH=07EAFH /*片内flash存储空间*/ /*数据空间*/ ORIGIN=0H,LENGTH=60H /*存储器映射的寄存器和保留地 ORIGIN=60H,LENGTH=20H /*块B2*/ ORIGIN=200H,LENGTH=100H/*块B0,如果CNF=0,则分配为片 ORIGIN=300H,LENGTH=100H /*块B1*/

SECTIONS { .reset: .vectors: .pvecs: .text: .bss: .data: }

{ { { { { {

}>VECS }>VECS }>PVECS }>PM }>BLK_B2 }>BLK_B1

PAGE0/*中断向量表*/ PAGE0 PAGE0 PAGE0 PAGE1 PAGE1

6.5 集成开发环境简介
?

?

?

Code Composer Studio功能强大、开放 型实时开发工具 DSP领域第一个完整的、开放型集成开 发环境(IDE),直观、易用,无需停止 DSP运行,即可观察DSP的信息,具有 实时分析功能 开放的环境,具有编程、编译、链接、 在线调试等功能

6.6 JTAG标准接口
?

?

TI在其TMS320系列芯片上设置了符合IEEE1149标准的 JTAG(Joint Test Action Group)标准测试接口及相应 的控制器,通过JTAG和专用的仿真器支持DSP的仿真 和程序的下载,方便了DSP应用系统的开发。 'C3X系列的仿真器采用12线的仿真头,这是TI公司内 部标准。其中EMU0~EMU3为4根仿真线,H3为时钟线, 由'C3X DSP提供,PD为检测线,指示仿真器的仿真头 和目标系统的正确连接以及目标系统已上电,目标系 统必须将该引脚接电源。8引脚为空脚,原理图中一般 接地。

TMS 1 EMU1 EMU0 EMU2 EMU3 1 3 5 9 2 4 6 GND GND GND TDI 3 PD(VCC) 5 TDO 7 TCK_RET 9 TCK 11 EMU0 13 (b)14线仿真头 仿真器的JTAG仿真头

2 TRST 4 GND 6 no pin 8 GND 10 GND 12 GND 14 EMU1

PD(VCC) 7 H3 11

8 8 no pin 10 12 GND GND

(a)'C3X仿真头

?

除'C3X DSP之外,其它TI DSP系 列仿真器的仿真信号线都采用 JTAG标准IEEE1149.1。采用14 线仿真头。

JTAG 信号 TMS TDI TDO

仿真器 JTAG 状态 输出 输出 输入

TCK

输出

TRST

输出 输入 输入

DSP 的 JTAG 状态 信号说明 输入 测试方式选择 测试数据输入(针 输入 对 DSP) 测试数据输出(针 输出 对 DSP) 测试时钟,由仿真 器 提 供 的 输入 10.368MHz 的时钟 信号 测试复位 输入 输入/输出 输入/输出 仿真引脚 0 仿真引脚 1 检测信号,指示仿 真头与 DSP 正确 连接,目标系统已 加电。DSP 的 PD 引脚必须接到电 源 测试时钟返回。为 缓冲或非缓冲的 TCK 信号

EMU0 EMU1

PD

输入

输出

TCK_RET

输入

输出

仿真器与目标系统(DSP系统)的连接
?

如果DSP目标系统与仿真器的距离不 大于6英寸,可以用无缓冲的简单连 接。其中EMU0~EMU1必须接一上拉 电阻。

?

如果DSP目标系统与仿真器仿真头的 距离大于15厘米,必须采用带信号 缓冲连接。在目标系统中EMU0和 EMU1必须接一上拉电阻,输入TMS 和TDI也应该接一上拉电阻以保证当 仿真器没有连接时这些信号保持一 个确定电平。

中断
;------------------- 定义主矢量段-------------------------------------------------.SECT “.VECTORS” ;定义主矢量段 RESET B _C_INT0 ;地址0000H,复位,优先级1 INT1 B PHANTOM ;地址0002H,INT1,优先级4 INT2 B _C_INT2 ;地址0004H,INT2,优先级5 INT3 B PHANTOM ;地址0006H,INT3,优先级6 INT4 B PHANTOM ;地址0008H,INT4,优先级7 INT5 B PHANTOM ;地址000AH,INT5,优先级8 INT6 B PHANTOM ;地址000CH,INT6,优先级9 RESERVED B PHANTOM ;地址000EH,测试,优先级10 SW_INT8 B PHANTOM ;地址0010H,自定义软中断 SW_INT9 B PHANTOM ;地址0012H,自定义软中断 SW_INT10 B PHANTOM ;地址0014H,自定义软中断 SW_INT11 B PHANTOM ;地址0016H,自定义软中断 SW_INT12 B PHANTOM ;地址0018H,自定义软中断 SW_INT13 B PHANTOM ;地址001AH,自定义软中断 SW_INT14 B PHANTOM ;地址001CH,自定义软中断 SW_INT15 B PHANTOM ;地址001EH,自定义软中断

SW_INT16 B TRAP B NMI B EMU_TRAP B SW_INT20 B SW_INT21 B SW_INT22 B SW_INT23 B SW_INT24 B SW_INT25 B SW_INT26 B SW_INT27 B SW_INT28 B SW_INT29 B SW_INT30 B SW_INT31 B

PHANTOM PHANTOM PHANTOM PHANTOM PHANTOM PHANTOM PHANTOM PHANTOM PHANTOM PHANTOM PHANTOM PHANTOM PHANTOM PHANTOM PHANTOM PHANTOM

;地址0020H,自定义软中断 ;地址0022H,TRAP矢量 ;地址0024H,NMI,优先级3 ;地址0026H,仿真Trap,优先级2 ;地址0028H,自定义软中断 ;地址002AH,自定义软中断 ;地址002CH,自定义软中断 ;地址002EH,自定义软中断 ;地址0030H,自定义软中断 ;地址0032H,自定义软中断 ;地址0034H,自定义软中断 ;地址0036H,自定义软中断 ;地址0038H,自定义软中断 ;地址003AH,自定义软中断 ;地址003CH,自定义软中断 ;地址003EH,自定义软中断

;-------------------------------------- 定义子矢量段----------------------------------------------------.SECT “.PVECS” ;定义子矢量段 PVECTORS B PHANTOM ;偏移地址0000H B PHANTOM ;偏移地址0001H B PHANTOM ;偏移地址0002H B PHANTOM ;偏移地址0003H B PHANTOM ;偏移地址0004H B PHANTOM ;偏移地址0005H B PHANTOM ;偏移地址0006H . . . B PHANTOM ;偏移地址003DH B PHANTOM ;偏移地址003EH B PHANTOM ;偏移地址003FH B PHANTOM ;偏移地址0040H B PHANTOM ;偏移地址0041H

INT3 . . . GISR3

B

GISR3

. . . PISR1 . . . PISR2 . . .

… LDP LACC XOR BCND

#PIVR>>7 PIVR #00NNH PISRN,EQ



RET …

RET

INT3 . . . GISR3

B

GISR3

. . . PISR1 . . . PISR2 . . .

… LDP LACC ADD BACC

#PIVR>>7 PIVR,1 #PVECTORS



RET …

RET

INT3 . . . GISR3 PISR . . .

B

GISR3



RET

*********************************** * Context saving *********************************** larp ar7 sst #1,*sst #0,*sach *sacl *? End saving * ************************************************* * Context restore ************************************************* larp ar7 mar *+ lacl *+ add *+,16 lst #0,*+ lst #1,*

数的定标
Q表示法 Q15 Q14 Q13 S表示法 S0.15 S1.14 S2.13 十进制数值范围 -1≤x≤0.9999695 -2≤x≤1.9999390 -4≤x≤3.9998779

Q1 Q0

S14.1 S15.0

-16384≤x≤16383.5 -32768≤x≤32767

(1)x*y=0.5*0.4 xq=0.5*32768=16384 xq=0.4*32768=13107 xq*yq=16384*13107=214745088 (x*y)q=6553 x*y=214745088/32768/32768=0.199982

(2)x+y=3.2+0.4 xq=3.2*8192=26214 yq=0.4*8192=3276 xq+yq=26214+3276=29490 x+y=29490/8192=3.59985

Clarke变换

Clarke变换
Clarke spm ldp splk splk lt mpy pac sach lacc add sacl lt mpy pac sach ret 0 #i_a #5017,k5017 #2896,k2896 i_a k5017 i_alfa,4 i_b,1 i_a i_beta i_beta k2896 i_beta,4

;(3/2)^(1/2)=5017 Q12

;2^(1/2)/2=2896 Q12

Clarke逆变换
I_clarke spm ldp splk splk splk lt mpy pac sach lt mpy pac sach lacc sub sacl lt mpy pac sach ret 0 #i_alfa #3344,k3344 #7094,k7094 #1672,k1672 i_alfa k3344 i_a,4 i_beta k7094 i_b,4 i_b i_alfa i_b i_b k1672 i_b,4

; (2/3)^(1/2)=3344 Q12

; 3^(1/2)=7094 Q12

; 1/6^(1/2)=1672 Q12

Park变换

Park变换
Park spm lacc lt mpy lta mpy mpya sach lacc lt mpys apac sach ret 0 #0 i_beta sintheta i_alfa costheta sintheta i_M,1 #0 i_beta costheta i_T,1 ;Q15 ;Q15

逆Park变换
I_Park spm lacc lt mpy lta mpy mpya sach lacc lt mpys apac sach ret 0 #0 i_M sintheta i_T costheta sintheta i_beta,1 #0 i_M costheta i_alfa,1 ;Q15 ;Q15

PI控制器
spm 0 lacc n_command sub n sacl epin ;epin=n_command-n lt epin mpy Kin pac add xin,12 sach xin,4 lacc xin abs sub #Isqrefmax bcnd xinlimit1,lt bit xin,0 bcnd xinlimit0,tc splk #Isqrefmax,xin b xinlimit1 xinlimit0: splk xinlimit1: #Isqrefmin,xin

lacc lt mpy apac sach bit bcnd lacc sub bcnd lacc b

xin,12 epin Kpin upi,4 ;upi=xin+epin*Kpin upi,0 upimagzeros,NTC ;if value>0,branch #Isqrefmin upi neg_sat,GT upi limiters #Isqrefmin limiters

neg_sat
lacc b upimagzeros

lacc sub bcnd lacc b
pos_sat lacc limiters

#Isqrefmax upi pos_sat,LT upi limiters
#Isqrefmax

sacl

iSqref

?

练习
?

?

?

1、统计数据存储单元200H与201H中“1”的 个数,结果存放在存储单元202H中; 2、将两个数4.5和0.4相乘,其结果采用Q12 表示存放在数据存储单元200H中; 3、编写中断INT1的初始化程序和通用中断 服务程序。


推荐相关:

第六章_DSP的汇编语法寻址... 126页 2财富值 第三章DSP指令寻址方式 9页 5财富值 DSP寻址方式与指令系统 76页 1财富值 DSP-04寻址方式与指令系统 45页 免...


指令系统及编程方法指令系统及编程方法隐藏>> DSP 应用系统设计讲义 第四章 指令系统及编程方法一、 寻址方式 1. 立即寻址方式 .指令中包含了指令所需的一个常数...


DSP的指令系统_计算机软件及应用_IT/计算机_专业资料...有129条基本指令,由于操作数的寻址方式不 同,由...第三章 DSP指令系统 165页 1下载券 第5章 dsp...


8086的寻址方式和指令系统_理学_高等教育_教育专区。8086的寻址方式和指令系统第3 章 8086 的寻址方式和指令系统【课前思考】 课前思考】 (1) 什么是指令和指令...


指令系统 ?寻址方式 ? 指令概述(分类、符号、指令格式) ? C24x DSP 汇编指令 ? 简单程序举例 三种基本寻址方式: 立即寻址、直接寻址、间接寻址 立即寻址、直接...


第五章 点的运动学 暂无评价 35页 免费 4.1圆的周长 14页 免费如要投诉违规...7. 在’C54x DSP 寻址和指令系统中, Xmem 和 Ymem 表示 16 位双寻址操作...


DSP第6章 暂无评价 23页 2财富值 DSP第六章 暂无评价 49页 免费 DSP第七章...2、TMS320C24x 指令系统有几种数据寻址方式?举例说明他们是如何寻址的? C24X ...


dsp 暂无评价 2页 2财富值 DSP第6章 暂无评价 23页 2财富值 DSP第六章 暂无...在’C54x DSP 寻址和指令系统中,Xmem 和 Ymem 表示 16 位双寻址操作数 ,...


(p10) 指令两种形式。(p39) 1 表示选用对战指针 SP 的直接寻址方式;ST1 的 6.C54x DSP指令系统有助记符指令和 7.DROM 为 C16 等于 1 0 40 ,片内 ...


2012 至 2013 学年度第 二 学期 电气、自动化 专业 电气 2010、自动化 10-...DSP 汇编语言指令的寻址方式 DSP 汇编语言指令系统 DSP 编程环境 CCS 介绍 实验...

网站首页 | 网站地图
3986 3986.net
文档资料库内容来自网络,如有侵犯请联系客服。zhit325@qq.com