DSPC2000汇编指令

合集下载

DSP第四章 TMS320C20X系列的寻址方式及汇编指令

DSP第四章 TMS320C20X系列的寻址方式及汇编指令

LT *0+
执行指令前: ARP=1, (AR1)=100H,(AR0)=3 执行操作: 用AR1所指的数据存储器100H内 容装载暂时寄存器; 执行指令后: ARP=1,(AR1)=103H
⑤减去索引量
方法
举例
指令使用AR内容作
LT *0-
为数据存储器地址,
执行指令后AR内容 执行指令前:
自动减去ARO的内容。 ARP=1, (AR1)=100H,(AR0)=3
执行操作:
用AR1所指的数据存储器100H内
容装载暂时寄存器;
执行指令后:
ARP=1,(AR1)=FEH
⑥加上索引量,反向进位
方法
举例
指令使用AR内容作为 数据存储器地址,执 行指令后AR内容自动 加上AR0的内容,该 加法采用反向进位方 法。 注:主要用于FFT算 法
LT *BR0+
把AR0加到辅助寄存器中时,地址以位倒序的方 式产生,即进位是从左向右,而不是从右向左进位。
LTP ind [,ARn]
MAC MAC pma , dma
乘且累加
MAC pma, ind [ , ARn]
MACD MACD pma, dma
乘且累加,并将被寻址数据移至下一单元
MACD pma, ind [, ARn]
MPY MPY dma
MPY ind [, ARn]
MPYA/MPYS
累加前次乘积,再将TREG与被寻址数相乘
PAC PAC
PREG转入累加器ACC
SPH
存储PREG高16位,直接或间接寻址
SPL
存储PREG低16位,直接或间接寻址
例1:MAC
0FF00H,02H ;DP=6,地址300H~37FH,PM=0, CNF=1

DSP_c2000_C语言编程要点

DSP_c2000_C语言编程要点
2> 全部采用小数,这样因为小数之间相乘永远是小数,永远不会溢出。取一个极限最 大值(最好使用 2 的 n 次幂),转换成 x/Max 的小数(如果 Max 是取的 2 的 n 次幂,就 可以使用移位代替除法)。
例 3、DSP 程序中比较通用的命名方法
1) 变量、常量和对象命名多用名词或形容词+名词,比如 ADC 的寄存器就可以命名为 “AdcRegs”。
例 2、Q 格式
由于 C2000 系列是定点 DSP,遇到小数时不能直接处理,所以就要想一些办法,通常 DSP 用 Q 格式来表示。当假定小数点位于第 0 位的右侧时,为 Q0;当小数电位于第 15 位的 右侧时为 Q15;若是 32 位处理器则最大可为 Q31。
浮点数和定点数转换的公示:
X 为浮点数, X 为定点数。
WDCR=0x0068; WDKEY=0X0055; WDKEY=0X00aa; printf(“hello,DSP world\n”); for(;;) ; } 首先,要禁止看门狗 watchdog。DSP 默认上电后看门狗会自动启动,时间一到就会令 DSP 复位。 其次,DSP 的 C 需要绝对定位,而主机的 C 的代码有操作系统定位。在“printf(“hello, DSP world\n”);”语句后,需要加设死循环语句“for(;;) ;”。标准 C 运行在操作系统下, 退出 main()函数后,控制权会交给操作系统。而一般 DSP 没有操作系统,退出 main() 函数即意味着程序跑飞了,所以要在主函数里加一个死循环。 在程序开头是通过宏定义去表示 watchdog 的寄存器,因为例子中用到的 DSP 芯片是 F240 系列的,而其 WDCR 和 WDKEYD7 寄存器的地址分别是 0x7029h 和 0x7025h,(volitial unsigned int*)表明 0x7029 是一个可被修改的无符号整型指针变量。

DSP 第五章指令

DSP 第五章指令

C2000提供了4种修改方法: 例: 无增量或减量 加1或减1 加或减一个变址量
LT *0+ ;用当前AR所指的数据存 储器地址内容装载TREG, 然后向当前AR内容加上 AR0内容 。 LT *0- ;用当前AR所指的数据存 然后将当前AR内容减1。
储器地址内容装载TREG, 按逆向进位方式加或逆向借位方式减一个变址量
C2000提供了4种修改方法: LT *BR0+ ;用当前AR所指的数据存储器地址内容装载TREG, 然
后向当前AR内容加上 AR0内容 , 加法采用逆向进位方式。 无增量或减量 后将当前AR内容减1。减法采用逆向借位方式。 加1或减1 LT *BR0- ;用当前AR所指的数据存储器地址内容装载TREG,然 AR TREG
应注意 : 1. 在程序开始时必须初始化DP。 2. 如果程序中的所有指令均访问同一个数据页,只需在程序的 前面装入DP,而不必在采用直接寻址方式的每个指令之前设 置数据页。若访问新的数据页,需重新装新的DP值。 3. 用直接寻址方式的指令其操作数不加前缀“#”
例1: LDP ADD
Байду номын сангаас
#4 9h,5
直接寻址方式的数据存储器地址产生
状态寄存器ST0 D8 DP(9LSBs) D0 D15 8MSBs 指令操作码 指令寄存器 D8 D7 D6 0 7LSBs D0
D15 DP(9MSBs)
D7 D6 偏移量 (7LSBs)
D0
16位数据存储器地址
使用直接寻址方式访问数据存储器的步骤: 1)设置数据页面,将当前数据页面(0-511)装入DP: LDP #k 2)设置偏移量, 给出7位偏移量作为指令的一个操作数。 ADD 5Dh
三、指令句法描述

DSPC2000实时处理器手册

DSPC2000实时处理器手册
视频 — 观看培训视频、工程设计专题讨论及 TI 活动事件。欢迎访问 E2E 视频板块,了解 TI 产品信息以及 新技术与新的发展趋势。
博客 — 阅读众多见解独到的博客帖子,内容涵盖新技术发现和“网络滞后”等各种话题。在这里您可以 一睹 TI 最优秀工程师的观点。
论坛 — 您可在 TI E2E 论坛上获得帮助。TI 的内外部工程师均会阅读该论坛,总会有人知道您问题的答 案。如果您也能为他人伸出援手并一展才华,那么欢迎您加入到论坛的互帮互助中来。
/c2000
C2000™ 微处理器 3
存储器总线与快速中断
C2000 MCU 具备 96 个中断矢量,可帮助您的设计项目实现 终极灵活性。C28x™ 微处理器内核专为实时控制而精心设 计,其快速中断能实现 10 个周期的上下文环境开关。
通过采用改进的哈佛架构 (Harvard architecture),32 位数据 与外设总线可确保内核、存储器以及外设能够实现高效 互动。高度安全的闪存、RAM 与 ROM 能保护您的知识产 权不被盗用。此外,部分器件还可提供六通道 DMA。
超过 100 种代码兼容的器件
新的 C2834x Delfino MCU 甚至可进 一步实现高达 600 MFLOPS 的极 限性能。与当前的 C2000 MCU 相 比,C2834x 平台能将代码大小 精简 52%,存储器存取时间减少 70%。此外,高分辨率 PWM 还支 持 65ps 的分辨率。全新的高速 度可使高端实时控制应用实现更
Communication Ports
Device
12-bit ADC
Channels/
Speed
RAM Flash ROM PWM HiRes Quadrature Event

C2000使用手册

C2000使用手册

TMS320C2000系列DSP寄存器及初始化TMS320LF240X系列DSP使用时,在掌握了其工作原理和过程之后,就要熟练使用DSP自带的一些资源如:IO口、DSRM、SRAM、EVA、,EVB、SCI、SPI、ADC和WD等等;对这些资源的使用很重要的一点就是对其合理配置和初始化,初始化的关键就是对其相关寄存器的设置,设置寄存器必须了解各位的含义,记住每位的含义是不大现实的;为此,我们专门设计了DSP初始化子程序,注明每个模块所用到的寄存器以及每位的含义,以方便设计。

=================================================DSP系统初始化=================================================ARB---辅助寄存器指针缓冲器:当ARP被加载到ST0,除了使用LST指令外,原有的ARP值被复制到ARB中当通过LST#1指令加载ARB时,也把相同的ARB值复制到ARPARP---辅助寄存器指针:ARP选择间接寻址时当前的辅助寄存器AR当ARP被加载时,原有的ARP值被复制到ARB 寄存器中在间接寻址时,ARP可由存储器相关指令改变,也可由LARP,MAR,和LST指令改变当执行LST#1指令时,ARP也可加载每ARB相同的值C---- 进位位:此位在加法结果产生进位时被置为1,或在减法结果产生借位时被清0否则,除了执行带有16 位移位的ADD或SUB指令外,C在加法后被清除或在减法后被设置在ADD或USB指令时,ADD仅可对进位位进行置位而SUB仅可对进位位进行清除,而不会对进位位产生其他影响移1位和循环指令也可影响进位位C,以及SETC、CLRC和LST指令也可影响C条件转移、调用和返回指令可以根据C的状态进行执行复位时C 被置1CNF---片内DARAM配置位:若CNF=0,可配置的双口RAM区被映射到数据存储空间若CNF=I,可配置的双口RAM 区被映射到程序存储空间CNF位可通过SETC CNF,CLRC CNF和LST指令修改R/S/复位时CNF置为0 DP----数据存储器页指针:9位的DP寄存器与一个指令字的低七位一起形成一个16位的直接寻址地址INTM---中断模式位:当INTM被置为0时,所有的未屏蔽中断使能当它被置1,所有可屏蔽中断禁止OV----溢出标志位:该位保存一个被锁存的值,用以指示CALU中是否有溢出发生一旦发生溢出,OV位保持为1直到下列条件中的一个发生时才能被清除OVM---溢出方式位:当OVM=0时,累加器中结果正常溢出当OVM=1时,根据遇到溢出的情况,累加器被设置为它的最大正值或负值SETC指令和CLRC指令分别对该位进行置位和复位PM----乘积移位方式:若PM=00,乘法器的32位乘积结果不移位直接装入CALU若PM=01,PREG输出左移1位后装入CALU,最低位LSB以0填充若PM=10,PREG输出左移4位后装入CALU,最低位LSB以0填充若PM=11,时PREG输出进行符号扩展右移六位SXM----符号扩展方式位:当SXM=1时,数据通过定标移位器传送到累加器时将产生符号扩展SXM=0将抑制符号扩展SXM位对某些指令没有影响TC---- 测试/控制标志位:在下述情况之一,TC位被置1:由BIT或BITT指令测试的位为1当利用NORM指令测试时,累加器的两个最高有效位"异或"功能为真条件转移、调用和返回指令可根据TC位的条件来执行BIT、BITT、CMPR、LST和NORM指令影响TC位XF---- XF引脚状态位:该位决定XF引脚的状态SETCXF指令可对位XF进行置位,而CLRCXF指令可对其进行清0复位时XF置1SCSR1--系统控制和状态寄存器1---地址7018HD15---保留位D14---CLKSRC。

第4章TMS320C2000DSP指令系统

第4章TMS320C2000DSP指令系统
1 0 1 1 1 0 1 1 0 1 1 0 0 0 1 1
指令字中 包含指令 所使用的 一个常数
立即寻址方式 的RPT操作码
短立即操作数 99(63h)
长立即数寻址方式举例
ADD #16384,2 ;将16384(4000h)左移2位 ;后与累加器内容相加,结果保存在累加器中 第1个指令字为指令操作码和移位数
;加,结果保存到当前辅助寄存器中。
MAR *+,AR5 ;将当前辅助寄存器的内容加1, ;并将5送到ARP,ARP原来的值送到ARB
参见:TMS320C20x用户 指南.pdf 第6、7章
4.3 ’C2000指令系统简介
‘C2xx DSP中共有汇编语言指令88条,分成6类: ①累加器、算术和逻辑指令26条如:ADD、LACC、AND ②辅助寄存器和数据页面指针指令7条如:MAR、LAR等 ③TREG、PREG和乘法指令20条如:LT、MTY、PAC等 ④分支、调用指令12条如:B、BCND、INTR等 ⑤控制指令15条如:SPM、POP、BIT等 ⑥存储器和I/O操作指令8条如:BLDD、SPLK、TBLR等 注:有些指令助记符是增强性指令,对应于几条简单指令(机器
立即寻址: LACC #lk[,shift] 长立即数经左移shift位后装入ACC, shift=0~15,shift=0时可不写;
LACC立即寻址举例
LDP #05h SPLK #0a5a5h,35h MAR *,AR3 LAR AR3,#02b5h LAR AR0,#0123h LACC #1234h,15 *1234h=01 0010 0011 0100b ——>左移15位 ——〉0 1001 0001 1010 0000 0000 0000 0000 b =91a0000h——〉ACC

c2000,c5000,c6000系列DSP编程方法

c2000,c5000,c6000系列DSP编程方法

二、TI公司三大系列内部结构的简介 1、C2000系列的内部结构1,C2000系列基于改进的哈佛结构,支持分开的程序空间和数据空间。

还有第三个空间,即I/O空间,用于片外总线接口。

外设总线映射到数据空间,因此,运行在数据空间的所有指令,都可以运行于所有的外设寄存器。

C2000系列的CPU包括:一个32位的中心算术逻辑单元(CALU)、一个32位的累加器(ACC)、CALU具有输入和输出数据定标移位器、一个16x16位乘法器、一个乘积定标移位器、数据地址产生逻辑:包括8个辅助寄存器和1个辅助寄存器算术单元(ARAU)、程序地址产生单元C2000系列采用2xLPASIC核,其内部设有6组16位的数据与程序总线。

这6组总线是:PAB(ProgramAddr.Bus)程序地址总线DRAB(Data-ReadAddr.Bus)数据读地址总线; DWAB(Data-WriteAddr.Bus)数据写地址总线; PRDB(ProgramReadBus)程序读总线;DRDB(DataReadBus)数据读总线;DWEB(DataWriteBus)数据写总线。

将数据读地址总线(DRAB)和数据写地址总线(DWAB)分开,CPU就可以在同一个机器周期内读和写数据。

C2000系列具有以下类型的片内存储器:双访问RAM(DARAM),即一个机器周期内可以访问两次的存器;FlashEEPROM或工厂掩模的ROM。

C2000系列的存储器分为单独可选择的4个空间,总共的地址范围为224K字:程序存储器(64K字);局部数据存储器(32K字);全局数据存储器(64K字);输入/输出(64K字)。

2、C5000系列的内部结构C5000系列中央处理单元CPU包括算术逻辑单元、乘法器、累加器、移位寄存器、各种专门用途的寄存器、地址发生器、比较选择单元、指数编码器。

具体内容如下①先进的多总线结构,具有1条程序存储器数据总线、3条数据存储器数据总线和4条地址总线;②40位算术逻辑单元(ALU),包括40位的桶形移位寄存器和2个独立的40位的累加器;③17位乘17位的并行乘法器与一个40位的专用加法器结合在一起,用于单周期乘/累加操作;④比较、选择和存储单元(CSSU),用于Viterbi操作(一种通信的编码方式)中的加/比较选择;⑤指数编码器用于在单周期内计算40位累加器的指数值;⑥2个地址生成器,包括8个辅助寄存器和2个辅助寄存器算术单元[6]。

dsp汇编指令

dsp汇编指令

dsp中的汇编伪指令伪指令分类伪指令及其表示格式具体描述段定义伪指令 .asect “段名” , 地址汇编到一以绝对地址为起始的段中.bss 符号,字数[,块标号] 在未初始化数据段bss中保留空间.data 汇编到已初始化数据段data中.sect “段名”汇编到一已命名(已初始化)的段中.text 汇编到可执行代码段text中符号 .usect “段名”,字数[,块标号] 在一已命名(未初始化)的段中保留空间常数初始化伪指令(包括数据和地址常数) .bes 位数在当前段中保留位数(标号指向所保留空间的尾部).bfloat 数值初始化一个32位,IEEE单精度的浮点常数;禁止有跨页的初始化对象。

.blong 数值1[,…,数值n] 初始化一个或多个32位整数;禁止有跨页的初始化对象。

.byte 数值1[,…,数值n] 初始化当前段中一个或多个连续字节.field 数值1[,…,数值n] 初始化一个可变长度的字段.float 数值初始化一个32位,IEEE单精度的浮点常数.int 数值1[,…,数值n] 初始化一个或多个16位整数.long 数值1[,…,数值n] 初始化一个或多个32位整数.space 位数在当前段中保留位数(标号指向所保留空间的头部).string “字符串1”[,…,“字符串n”] 初始化一个或多个文本字符串.word 数值1[,…,数值n] 初始化一个或多个16位整数对准段程序计数器的伪指令 .align 在一页的边缘对准SPC(段程序计数器).even 在一偶数的边缘对准SPC定义输出列表格式的伪指令 .drlist 使所有伪指令行都被列出(缺省方式).drnolist 禁止某些伪指令行的列出.fclist 允许列出错误的条件代码块(缺省方式).fcnolist 禁止列出错误的条件代码块.length 页的长度定义源文件列表的页长.list 从头开始源文件的列表.mlist 允许宏列表和循环块(缺省方式).mnolist 禁止宏列表和循环块定义输出列表格式的伪指令 .nolist 停止源文件列表.option{B/D/F/L/M/T/X} 选择输出列表文件的参数.page 在源文件列表中生成一页.sslist 允许扩展子程序符号列表.ssnolist 禁止扩展子程序符号列表(缺省方式).tab 大小设置表的大小.title “字符串”在列表页头显示一个标题.width 页宽设置源文件列表的页宽外部文件定位的指伪令 .copy [“]文件名[”] 包含其他文件中的源语句.def 符号1[,…,符号n] 标明一个或多个在当前模块中定义而在其他模块中要用到的符号.global 符号1[,…,符号n] 标明一个或多个全局(外部)符号.include [“]文件名[”] 包含其他文件中的源语句.mlib [“]文件名[”] 定义宏定义库.ref符号1[,…,符号n] 标明一个或多个在另一模块中定义而在当前模块中要用到的符号条件汇编伪指令.break [确切定义的表达式] 如果条件满足,就结束.loop汇编。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
代码生成工具编译生成的。 在下面的讲解当中会牵涉到模式的转换,希望读者要搞清楚每一个模式的对应关系。
本节假设条件为芯片工作于 C28x 模式(OBJMODE=1,AMODE=0)。复位后,通过执行指令 C28OBJ 或者 SETC OBJMODE 将 ST1 中的 OBJMODE 位置 1,芯片即可工作于 C28x 模式。
测试标志位
0000 NEQ 不等于
Z=0
0001 EQ
等于
Z-1
0010 GT
大于(有符号减法)
Z=0 且 N=1
0011 GEQ 大于或等于(有符号减法) N=0
0100 LT
小于(有符号减法)
N=1
0101 LEQ 小于或等于(有符号减法) Z=1 或 N=1
0110 HI
高于(无符号减法)
C=1 且 Z=0
BIO=0
1111 UNC 无条件
表 6-2 影响指令的判断条件的说明
在汇编程序当中实现乘法操作时一件非常不简单的事,由于是属于纯寄存器操作,因此, 开发人员需要准备保存乘法结果的地址,在表 6-1 当中讲解操作数符号的时候有一个关于乘 积操作的符号—PM,那么它的结果保存是如何执行的呢?下面通过表 6-3 来说明一下。
6.2 寻址方式
通过 6.1 节当中读者们应当对汇编语言编程有了一定的了解,仅仅了解了汇编语言的操 作符还是不过的,接下来就从汇编语言最根本的开始学习——寻址方式寻址方式就是寻找操 作数或者操作数地址的方式,在存储器中,操作数或指令字写入或读出的方式,有地址指定 方式、相联存储方式或堆栈存取方式。几乎所有的计算机,在内存中都采用地址指定方式。 当采用地址指定方式时,形成操作数或指令地址的方式称为寻址方式。C28x 系列 DSP 的指 令集采用 7 种寻址方式: 1. 直接寻址方式:DP(数据页指针),在此方式中,16 位的 DP 寄存器被当做一个固定的
0111 HIS,C 高于或相同(无符号减法) C=1
1000 LO,NC 低于(无符号减法)
C=0
1001 LOS 低于或相同(无符号减法) C=1 或 Z=0
1010 NOV 无溢出
V=0
1011 OV
溢出
V=1
1100 NTC 测试位为 0
TC=0
1101 TC
测试位为 1
TC=1
1110 NBIO BIO 输入等于零
表 6-3 PM 与结果保存方式的关系
6.1.2 汇编语法指令描述
前一小节提到过,汇编指令一般都由操作符和操作数组成,操作符也被称为指令助记符, 它是指令中的关键字,表示本条指令操作类型,不能省略。操作数可以省略,也可以有很多, 但各操作数之间要用“,”分开。指令助记符与操作数之间要用空格分开。
ARn: n 为数值 0~7,ARn 指定下次的辅助寄存器。 ind: 选择一下 7 种符号之一:*,*+,*-,*0+,*0-,*BR0+,*BR0-(兼容模式使用)。 #:立即寻址方式中常用的前缀。数值前面带“#”,表示该数值为一个立即数。 <<左移。 >>右移。
表示这个单元内的 16/32 位数据。
在寄存寻址方式下, loc16/loc32 表示一个 16 位或 32 位寄存器(如 ACC、P、XT、AH
等), [loc16]/[loc32]表示这些寄存器内的 16/32 位数据。
ARn,ARm 32 位辅助寄存器 XAR0~XAR7 的低 16 位
ARnH ARPn AR(ARP) XAR(ARP) AX # PM PC ~ [loc16] 0:[loc16] S:[loc16] [loc32] 0:[loc32] S:[loc32] 7bit 0:7bit S:7bit 8bit 0:8bit S:8bit 10bit 0:10bit S:10bit 16bit 0:16bit S:16bit 22bit 0:22bit S:22bit LSb LSB LSW MSb MSB MSW OBJ N {} = ==
6.1.1 DSP中的操作数
汇编语言离不开操作符和操作数,操作符可以认为就是 CPU 的指令或者编译器上的伪指
令,操作数是指令执行过程中的参与者,也可以说操作数就是指令所控制的对象。
如表 6-1,表 6-2 和表 6-3 对指令中常用到的一些操作数符号进行说明
符号
描述
XARn
32 位辅助寄存器 XAR0~XAR7
页指针,讲指令中提供 6 未或者 7 位的地址偏移量与 DP 寄存器中的值组合起来就构成 完整的地址。当访问具有固定地址的数据结构时,这种寻址方式特别有用,例如,外设 寄存器和 C/C++中的全局及静态变量。 2. 堆栈寻址方式:SP(堆栈指针),在这种方式下,16 位的 SP 指针被用来访问软件堆栈 的内容。C28x 系列的堆栈是从低端地址想高端地址生长的,SP 总是指向下一个空的存 储单元。当需要访问堆栈中的数据时,SP 的值减去指令仲提供的 6 位偏移量作为被访 问数据的地址和,而堆栈指针将在入栈后加 1,出栈前减 1. 3. 间接寻址方式:XAR0 到 XAR7(辅助寄存器指针),在该方式下,32 位的 XARn 寄存器被 当做一般的数据指针来使用个。通过相应的指令可以实现操作后 XARn 加 1、操作前/后 减 1,还可以配合 3 位偏移量或者其他 16 位寄存器实现变址寻址。 4. 寄存器寻址方式:这种方式下,另一个寄存器可以是该次访问的资源或者目的操作数。 这样在 C28x 中既能实现寄存器到寄存器的操作。 5. 数据/程序/IO 空间寻址方式:在这种方式下,存储器中操作数的地址被包含在指令中。 6. 程序空间间接寻址方式:某些指令可以通过指针来访问位于程序空间中的存储器操作 数。由于在 C28xCPU 中存储器是统一寻址的,所以单周期内可以读取两个操作数。 7. 字节寻址方式:该方式能访问到股东地址单元的最低有效位和最高有效位。
PM 保存方式 +4 P(31:4)=相乘结果中低 38 位的(27:0),P(3:0)+0 +1 P(31:1)=相乘结果中低 38 位的(30:0),P(31)+0 0 P(31:0)=相乘结果中低 38 位的(31:0) -1 P(31:0)=相乘结果中低 38 位的(32:1) -2 P(31:0)=相乘结果中低 38 位的(33:2) -3 P(31:0)=相乘结果中低 38 位的(34:3) -4 P(31:0)=相乘结果中低 38 位的(35:4) -5 P(31:0)=相乘结果中低 38 位的(36:5) -6 P(31:0)=相乘结果中低 38 位的(37:6)
@: 当使用 C28x 语法时,64 位字段数据与通过“@”符号来表示,一帮组程序员理解当前正在 使用哪种寻址模式。
@@: 当使用 C28x 语法时,128 位字段数据页通过“@@”符号来表示。 loc16:16 位寻址方式指定地址单元的内容。 loc32:32 位寻址方式指定地址单元的内容。 #16bitsigned:16 位有符号立即数。
第六章 DSP的寻址方式和汇编指令
当硬件执行指令时,寻找指令所指定的参与运算飞操作数的方式——寻址方式。根据 程序的要求采用不同的寻址方式,可以有效地缩短程序的运行时间和提高代码执行效率。汇 编指令是可执行指令,每一条指令对应一条机器码,用来控制处理器仲的执行部分进行各种 操作。在本章节当中将主要以基于 C28x 的 DSP 芯片为例,为读者讲解 DSP 的寻址方式和汇 编指令系统,其中大部分内容也可适用于其他 Ti 公司的 DSP 产品。
在进行汇编讲解之前先来了解一下开发的核心——CPU。在 TMS320C2000 系列中,CPU 内核为: C20x/C24x/C240x:C2xLP: C27x/C28x:C27x、C28x 这些 CPU 的硬件结构有一定差别,指令集也不相同,但是,在 C28x 芯片中可以通过选择兼 容特性模式,使 C28xCPU 与 C27xCPU 及 C2xLPCPU 具有最佳兼容性。可通过状寄存器 STl 的 位 OBJMODE 和位 AMODE 的组合,选定模式。 C28x 芯片具有 3 种操作模式: 1. C28x 模式:在该模式中,用户可以使用 C28x 的所有有效特性、寻址方式和指令系统,
地址对应的 16/32 位数据。以上 7 种寻址方式都与“loc16/loc32”组合起来使用。
在间接寻址方式下,loc16/loc32 表示放在辅助寄存器(XAR0~XAR7)中的一个地址,
[loc16]/[loc32]表示这个地址对应的 16/32 位数据。
在堆栈寻址方式下,loc16/loc32 表示堆栈指针指向的一个堆栈单元,[loc16]/[loc32]
因此,一般应使 C28x 芯片工作于该种模式。 2. C27x 目标——兼容模式:在复位时,C28x 的 CPU 处于 C27x 目标-兼容模式。在该模式
下,目标码与 C27xCPU 完全兼容,且它的循环—计数也与 C27xCPU 兼容。 3. C2xLP 源——兼容模式:该模式允许用户运行 C2xLP 的源代码,这些源代码是用 C28x
[loc16]表示 loc16 这种寻址方式对应的 16 位数据。
2. loc32:为32位数据访问选择直接/堆栈/间接/寄存器寻址方式。
[loc32]表示 loc32 这种寻址方式对应的 32 位数据。
在直接寻址方式下,loc16/loc32 指的是一个用标号表示的地址和操作码内 8 位字段的 6 位或 7 位偏移量共同决定。[loc16]/[loc32]表示这个
32 位辅助寄存器 XAR0~XAR7 的高 16 位 32 位辅助寄存器指针,ARP0 指向 XAR0,ARP1 指向 XAR1…… ARP 指向的辅助寄存器的低 16 位 ARP 指向的辅助寄存器 累加器的高 16 位寄存器 AH 或者 16 位寄存器 AL 立即数助记符 乘积移位方式(+4 ,1 ,0 ,-1,-2,-3,-4 ,-5 ,-6) 22 位程序计数器 按位求反码 Loc16 寻址方式对应的 16 位数据 将 Loc16 寻址方式对应的 16 位数据进行零扩展 将 Loc16 寻址方式对应的 16 位数据进行符号扩展 Loc32 寻址方式对应的 32 位数据 将 Loc32 寻址方式对应的 32 位数据进行零扩展 将 Loc32 寻址方式对应的 32 位数据进行符号扩展 表示 7 位立即数 7 位立即数,零扩展 7 位立即数,符号扩展 表示 8 位立即数 8 位立即数,零扩展 8 位立即数,符号扩展 表示 10 位立即数 10 位立即数,零扩展 10 位立即数,符号扩展 表示 16 位立即数 16 位立即数,零扩展 16 位立即数,符号扩展 表示 22 位立即数 22 位立即数,零扩展 22 位立即数,符号扩展 最低有效位 最低有效字节 最低有效字 最高有效位 最高有效字节 最高有效字 对于某条指令,位 OBJMODE 的状态 重复次数(N=0,1,2,3,4,5,6…) 可选字段 赋值 等于
相关文档
最新文档