第3章指令系统08

上传人:平*** 文档编号:27903482 上传时间:2018-01-13 格式:PPT 页数:72 大小:1,004.12KB
返回 下载 相关 举报
第3章指令系统08_第1页
第1页 / 共72页
第3章指令系统08_第2页
第2页 / 共72页
第3章指令系统08_第3页
第3页 / 共72页
第3章指令系统08_第4页
第4页 / 共72页
第3章指令系统08_第5页
第5页 / 共72页
点击查看更多>>
资源描述

《第3章指令系统08》由会员分享,可在线阅读,更多相关《第3章指令系统08(72页珍藏版)》请在金锄头文库上搜索。

1、D S P 技 术 及 应 用,第三章:TMS320C54x指令系统 7种寻址方式4种基本类型的汇编语言指令。,第三章:TMS320C54x指令系统,教学要求: C54x DSP的指令系统包括汇编语言指令、汇编伪指令、宏指令,本章主要介绍C54x的7种寻址方式和汇编语言指令,其他指令将在第4章介绍。 了解汇编源程序的书写格式,掌握常见的7种寻址方式,尤其是间接寻址方式。掌握算术运算、逻辑运算、程序控制、存储和装入4种基本类型的汇编语言指令。,第三章:C54x指令系统_3.1 汇编源程序格式,C54x汇编语言语句格式如下(4个部分): 标号 : 指令 操作数列表 ;注释 begin: LD #4

2、0, AR1 ;将立即数40传送给ARl 其中:(1) 标号供本程序的其他部分或其他程序调用。 (2) 指令域包括以下指令码之一: 助记符指令 (如STM,MAC,MPVD,STL); 汇编伪指令(如.data,.list,.set); 宏指令(如.macro,.var,.mexit); 宏调用。注:作为助记符指令,一般用大写;汇编伪指令和宏指令,以句点“.”开始,且为小写。,第三章:C54x指令系统_3.1 汇编源程序格式,(3)操作数可以是常量、符号,或是常量和符号的混合表达式,操作数之间用逗号分开。 汇编器允许在操作数前使用前缀来指定操作数(常数、符号或表达式)是地址还是立即数或间接地址

3、。 前缀的使用规则如下: 前缀 #表示其后的操作数为立即数。 例如:Label: ADD #123,A ;,第三章:C54x指令系统_3.1 汇编源程序格式,前缀 *表示其后的操作数为间接地址。例如:Label:LD *AR4,A ;以AR4的内容为地址,将该地址的内容装入累加器A 前缀 表示其后的操作数是采用直接寻址或绝对寻址的地址。例如: ADD #10, XYZ (4)注释可以从一行的任一列开始直到行尾。任一ASCII码(包括空格)都可以组成注释。如果注释从第一列开始,用“;”号或“*”号开头。,第三章:C54x指令系统_3.2 指令集符号与意义,TMS320C54x的指令系统符号和意义

4、见表3-1,第三章:C54x指令系统_3.3 寻 址 方 式,寻址方式:指当CPU执行指令时,寻找指令所指定的参与运算的操作数的方法。 作用:可以根据程序要求采用不同的寻址方式,以提高程序的速度和代码效率。不同的寻址方式为编程提供了极大的柔性编程操作空间,,第三章:C54x指令系统_3.3 寻 址 方 式,C54共有7种基本寻址方式立即寻址绝对寻址累加器寻址直接寻址间接寻址存储器映像寄存器寻址堆栈寻址,第三章:C54x指令系统_3.3 寻 址 方 式,1. 立即寻址含义:指令中已包含有执行指令所需的操作数;用途:主要用R或M的初始化;说明: 在数值或符号前加#表示立即数; 立即数有两种形式:短

5、和长 例如: LD #10 , A ; 立即数10A累加器 RPT #99;将紧跟在后面的语句重复99+1次,第三章:C54x指令系统_3.3 寻 址 方 式,2. 绝对寻址 含义:指令中包含所需寻址的M单元地址或I/O端口地址; 用途:利用16位地址寻址M或I/O 说明:绝对寻址的四种类型 数据存储器寻址:程序标号or数据,表示数据M地址 如:MVKD DATA,*AR5;(DATA)(AR5),第三章:C54x指令系统_3.3 寻 址 方 式, 程序存储器寻址: 如:MVPD TABLE,*AR7-;(TABLE)(AR7) and AR7=AR7-1 I/O端口寻址(2条) 如:PORT

6、R FIFO,*AR5;从端口FIFO读数据(AR5) PORTW *AR2,BOFO;将(AR2)BOFO端口 *(1K)寻址:用一个符号或常数确定一个数据M地址 如:LD *(BUFFER),A; (BUFFER)A 注:访问数据空间的任意单元而不改变DP的值,不用对AR初始化,第三章:C54x指令系统_3.3 寻 址 方 式,3. 累加器寻址 含义:用累加器的数据作为地址来读写程序存储器; 用途:累加器对存放数据的程序存储器寻址; 说明: 累加器的内容低16位是程序存储器的地址; 仅有两条指令用该寻址方式: READA ; WRITA ;如:READA Smem;以A中的数为地址,从PM

7、中读一个数由Smem所指的DM中;,第三章:C54x指令系统_3.3 寻 址 方 式,4. 直接寻址 含义:用指令中包含的数据M地址的低7位+基地址 16位数据存储器地址。 基地址: DP_ 数据页指针 SP_堆栈指针 用途:利用数据页指针和堆栈指针寻址DM 指令代码格式:,第7位确定了寻址方式,若I=0,表示指令使用直接寻址方式,第三章:C54x指令系统_3.3 寻 址 方 式,说明: 地址形成 当ST1中的CPL=0时,由ST0中的DP值(9位地址)与指令中的7位地址一道形成16位数据存储器地址。, 当ST1中的CP=时,将指令中的7位地址与16位堆栈指针SP相加,形成16位的数据存储器地

8、址。,第三章:C54x指令系统_3.3 寻 址 方 式,说明: 该方式可在不改变DP或SP的情况下,随机寻址128个单元;因为DP值的范围是从0到511(129),把存储器分成512页。 指令长度只需1个字(16位);举例: RSBX CPL; CPL=0 LD #2, DP; LD 60H, 16, A; 第2页的60H单元内容装入A高16位,第三章:C54x指令系统_3.3 寻 址 方 式,5. 间接寻址 含义:按辅助R中的内容寻址数据M 用途:主要用在需要存储器地址以步进方式连续变化的场合。 说明:(1)地址形式: AR0AR7 (2)间接寻址方式非常灵活:在一条指令中访问两个DM单元(

9、能在两个独立的M读数据,或在一个M读另一个M单元写) (3)间接寻址有两种方式。 单操作数间接寻址:从存储器中读或写一个单16位数据操作数。双操作数间接寻址:在一条指令中访问两个数据存储单元。,第三章:C54x指令系统_3.3 寻 址 方 式,(1)单操作数间接寻址 单操作数寻址是一条指令中,只有一个存储器操作数(即从存储器中只存取一个操作数),其指令的格式: 其中:158位是指令的操作码;第7位I=1,表示指令的寻址方式为间接寻址;63位为方式(MOD),定义了间接寻址的类型(表3-3);20位定义寻址所使用的辅助寄存器(如AR0AR7)。 例如:LD *AR2+,A ;表示将由AR2寄存器

10、内容所指向的数据存储器单元中的数据传送到累加器A中,然后AR2中的地址加1。,第三章:C54x指令系统_3.3 寻 址 方 式,MOD域:共有16种间接寻址的类型可以加1、减1;(如*ARx- 、*ARx+ )加一个16位偏移量;(如*ARx(lk)、*+ARx(lk) )用AR0中的值索引寻址;(如*ARx-0和*ARx+0) 以%符号表示的循环寻址,如*ARx+0%; 以B符号表示位倒序寻址,如*ARx+0B。 可以在指令执行存取操作前或后修改要存取操作数的地址。,第三章:C54x指令系统_3.3 寻 址 方 式,循环寻址表示:用%表示,其辅助寄存器使用规则与其他寻址方式相同。用途:在卷积

11、、自相关和FIR滤波器等许多算法中,都需要在存储 器中设置循环缓冲区。 它是一个滑动窗,包含最近的数据, 若有新的数据到来,它将覆盖旧的数据。 循环指针在第一次的移动从1,2,3,4,5,6,78; 第二次是从2,3,4,5,6,781; 第三次是从3,4,5,6,7812;循环寻址:实现循环缓冲区的关键。,第三章:C54x指令系统_3.3 寻 址 方 式, 循环缓冲器主要参数: 长度计数器(BK):定义了循环缓冲区的大小R(R2N); 有效基地址(EFB):定义了循环缓冲区的起始地址,即ARx低N位设为0所得到的值; 尾地址(EOB):定义了循环缓冲区的尾部地址; 缓冲区索引(Index):

12、当前ARx的低N位; 步长(Step):一次加到辅助R或从辅助R中减去的值;例如,一个长度为31个字的循环缓冲区必须开始于最低5位为零的地址(即XXXX XXXX XXX0 0000b),且赋值BK=31。,第三章:C54x指令系统_3.3 寻 址 方 式,循环缓冲示意图,第三章:C54x指令系统_3.3 寻 址 方 式, 循环寻址的算法: If 0index+stepBK; Index =index+step; Else if index+step BK; Index =index+step-BK; Else if index+step0; Index =index+step+BK;,第三章

13、:C54x指令系统_3.3 寻 址 方 式,循环寻址 使用循环寻址时,必须遵循以下三个原则: 循环缓冲区的长度 R2N,且地址从一个低N位为0的地址开始; 步长小于或等于循环缓冲区的长度; 所使用的辅助寄存器必须指向缓冲区单元。,第三章:C54x指令系统_3.3 寻 址 方 式,举例: LD *+AR1(8)%,A; STL A, *+AR1(8)%; 假定:BK=10,N=4,AR1=100H 由上可知:index = 0 (因为 AR1的低四位) Step =8(*+AR1(8)%) 执行第一条指令时:index = index + step = 8 (寻址108H单元) 执行第二条指令时:index = index+ step= 8+8=16 BK; 故:index=index+step-BK=8+8-10=6 (寻址106H单元),第三章:C54x指令系统_3.3 寻 址 方 式,循环寻址过程,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号