杭电研一课件-11、寻址.ppt

上传人:max****ui 文档编号:15490589 上传时间:2020-08-12 格式:PPT 页数:42 大小:1.26MB
收藏 版权申诉 举报 下载
杭电研一课件-11、寻址.ppt_第1页
第1页 / 共42页
杭电研一课件-11、寻址.ppt_第2页
第2页 / 共42页
杭电研一课件-11、寻址.ppt_第3页
第3页 / 共42页
资源描述:

《杭电研一课件-11、寻址.ppt》由会员分享,可在线阅读,更多相关《杭电研一课件-11、寻址.ppt(42页珍藏版)》请在装配图网上搜索。

1、本章学习目标,第九章 TMS320C54软件结构,掌握各种寻址方式,掌握常用指令,会分析常用汇编语言程序结构,一、汇编源程序的格式,C54x汇编语言语句格式如下(4个部分):,标号 : 指令 操作数列表 ;注释,begin: LD #40, AR1 ;将立即数40传送给ARl,其中:(1) 标号供本程序的其他部分或其他程序调用。标 号的值和它所指向的语句所在单元值相同。,(2) 指令域包括以下指令码之一: 助记符指令 (如STM,MAC,MPVD,STL); 汇编伪指令(如.data,.list,.set); 宏指令(如.macro,.var,.mexit); 宏调用。,助记符指令,一般用大写

2、; 汇编伪指令和宏指令,以句点“.”开始,且为小写。,(3)操作数可以是常量、符号,或是常量和符号的混合 表达式,操作数之间用逗号分开。,前缀 #表示其后的操作数为立即数。 例如:Label: ADD #123,A ;,汇编器允许在操作数前使用前缀来指定操作数(常数、符号或表达式)是地址还是立即数或间接地址。,前缀 *表示其后的操作数为间接地址。 例如:Label:LD *AR4,A ;以AR4的内容为地址,将该地址的内容装入累加器A,前缀 表示其后的操作数是采用直接寻址或绝对寻址的地址。 例如: ADD #10, XYZ ;XYZ作为偏移量与数据页指针组合。,(4)注释可以从一行的任一列开始

3、直到行尾。任一ASCII码(包括空格)都可以组成注释。如果注释从第一列开始,用“;”号或“*”号开头。,TMS320C54x的指令系统符号和意义见表3-1,二、寻址方式,寻址方式:指当CPU执行指令时,寻找指令所指定的参与运算的操作数的方法。,作用:可以根据程序要求采用不同的寻址方式,以提高程序的速度和代码效率。不同的寻址方式为编程提供了极大的柔性编程操作空间。,C54共有7种基本寻址方式, 立即寻址, 绝对寻址, 累加器寻址, 直接寻址, 间接寻址, 存储器映像寄存器寻址, 堆栈寻址,1、立即寻址, 短立即数寻址(短字指令,数是8bit),含 义:指令中包含有执行指令所需的操作数;,用 途:

4、主要用于寄存器和存储器的初始化;,RPT #99;将紧跟在后面的语句重复99+1次,LD #10 , A ; 立即数10A累加器,LD #0h , DP ; 立即数0装入数据页指针,注意:立即数前必须有#号,后面跟h表示十六进制数。,ADD #0ffh , A ; 将0ffh加给AccA, 短立即数寻址示图, 长立即数寻址(16bit),指令字的后一个字是立即数,所以是双字指令。,ADD #1234h , A ; 将立即数1234h加给AccA,2、绝对地址寻址, 数据存储器地址(dmad)寻址,用一个符号或一个数来确定数据空间中的一个地址,如:MVKD,DATA,*AR5;(DATA)(AR

5、5), 程序存储器地址(pmad)寻址,用一个符号或一个数来确定程序空间中的一个地址,如:MVPD,TABLE,*AR5;(TABLE)(AR5), 端口地址(PA)寻址,用一个符号或一个数来确定端口的一个地址, lk寻址,如:PORTR,FIFO,*AR5;从端口FIFO读数据(AR5) PORTW,*AR2,BOFO;将(AR2)BOFO端口,用一个符号或常数确定一个数据存储器地址 如:LD,*(BUFFER), A ; (BUFFER)A 注:访问数据空间的任意单元而不改变DP的值,不用对AR初始化,3、 累加器寻址,含义:用累加器的数据作为地址来读写程序存储器;,WRITA Smem,

6、READA Smem;,以A中的数作为地址,从程序存储器中读一个数由Smem所指的数据存储器中,说明:累加器的内容低16位是程序存储器的地址;,将数据存储器中的数由A所指的程序存储器中,4、直接寻址, TMS320C54的数据存储器分为512页,每页128字。设置一个9位的数据页指针DP,加上一个7位的页内偏移地址,构成16位的数据地址。,LD #4 , DP ;指向页4(0200h-027Fh),ADD 9h , A ;将数据页4中地址为9h的数据加给AccA,直接寻址:用指令中包含的数据存储器地址的低7位+基地址 16位数据存储器地址。,第7位确定了寻址方式,若I=0,表示指令使用直接寻址

7、方式,基地址: DP_ 数据页指针 SP_堆栈指针,指令代码格式:,用途:利用数据页指针和堆栈指针寻址数据存储器,说明: 地址形成 当ST1中的CPL=0时,由ST0中的DP值(9位地址)与指令中的7位地址一道形成16位数据存储器地址。, 当ST1中的CP=时,将指令中的7位地址与16位堆栈指针SP相加,形成16位的数据存储器地址。,RSBX CPL ; CPL=0,选用数据页指针,SSBX为设置 LD #2, DP; LD 60H, 16, A ; 第2页的60H单元内容左移装入A中, 该方式可在不改变DP或SP的情况下,随机寻址128个单元; 因为DP值的范围是从0到511,把存储器分成5

8、12页。, 指令长度只需1个字(16位);,例如:,5、间接寻址,含义:按辅助寄存器R中的内容寻址数据存储器,用途:主要用在需要存储器地址以步进方式连续变化的场合。,1)地址形式: AR0AR7,2)间接寻址方式非常灵活:在一条指令中访问两个DM单元(能在两个独立的M读数据,或在一个M读另一个M单元写),3)间接寻址有两种方式: 单操作数间接寻址,双操作数间接寻址。,单操作数间接寻址,一条指令中,只有一个存储器操作数(即从存储器中只存取一个操作数),其指令的格式,第7位I=1,表示指令的寻址方式为间接寻址;,63位为方式(MOD),定义了间接寻址的类型(P57表33),20位定义寻址所使用的辅

9、助寄存器(如AR0AR7)。,例如:LD *AR2+,A ;表示将由AR2寄存器内容所指向的数据存储器单元中的数据传送到累加器A中,然后AR2中的地址加1。,间接寻址示图,间接寻址示图,MOD域,共有16种间接寻址的类型, 加1、减1;(如*ARx- 、*ARx+ 、*+ARx), 加一个16位偏移量;(如*ARx(lk)、*+ARx(lk) ), 用AR0中的值索引寻址;(如*ARx-0和*ARx+0), 以%符号表示的循环寻址,如*ARx+0%;, 以B符号表示位倒序寻址,如*ARx+0B。, 可以在指令执行存取操作前或后修改要存取操作数的地址。,间接寻址举例,ADD *, 8 , A ;

10、 将当前辅助寄存器所指的地址里的数据,左移 8位后加给AccA,ADD *+, 8 , A ,AR4 ; 数据左移 8位加给AccA后,当前辅助寄存器加1,选择辅助寄存器AR4,间接寻址举例,ADD *+0, 8 , A ; 数据左移 8位加给AccA后,将AR0的值加给当前辅助寄存器,ADD *ARx+0B, 8 , A ; 数据左移 8位加给AccA后,将AR0的值加给当前辅助寄存器,但反向进位。,正向进位与反向进位,1 0 0,1 0 0, 1 0 0, 1 0 0,1 0 0 0,0 1 0,用途:用在位倒序寻址,循环寻址,实现循环缓冲区的关键是循环寻址。,用途:在卷积、自相关和FIR

11、滤波器等许多算法中,都需要在存储器中设置循环缓冲区。 它是一个滑动窗,包含最近的数据,若有新的数据到来,它将覆盖旧的数据。,循环缓冲器主要参数,步长(Step):一次加到辅助R或从辅助R中减去的值;,例如,一个长度为31个字的循环缓冲区必须开始于最低5位为零的地址(即XXXX XXXX XXX0 0000b),且赋值BK=31。,长度计数器(BK):定义了循环缓冲区的大小R( );,有效基地址(EFB):定义了循环缓冲区的起始地址,即ARx低N位设为0所得到的值;,尾地址(EOB):定义了循环缓冲区的尾部地址;,缓冲区索引(Index):当前ARx的低N位;,If 0index+step BK

12、; Index =index+step; Else if index+step BK; Index =index+step-BK; Else if index+step 0; Index =index+step+BK;,循环寻址的算法,使用循环寻址时,必须遵循以下三个原则, 所使用的辅助寄存器必须指向缓冲区单元。, 循环缓冲区的长度 ,且地址从一个低N位为0的地址开始;, 步长小于或等于循环缓冲区的长度;,执行第二条指令时:index = index+ step= 8+8=16 BK; 故:index=index+step-BK=8+8-10=6 (寻址106H单元),举例: LD *+AR1

13、(8)%,A; STL A, *+AR1(8)%;,假定:BK=10,N=4,AR1=100H,由上可知:index = 0 (因为 AR1的低四位) Step =8(*+AR1(8)%),执行第一条指令时:index = index + step = 8 (寻址108H单元),循环寻址过程,位倒序寻址,用途:主要用于FFT运算,可提高FFT算法的执行速度和存储器的使用效率。,原因:当FFT输入样点值是倒序时,输出是顺序;反之亦然,采用位码倒寻址的方式恰好符合FFT算法要求。,实现方法: AR0存放的整数N是总单元个数的1/2; ARX指向一个数据存放的物理单元; AR0以地址倒序的方式+AR

14、x(即进行从左到右加法进位);,位倒序寻址举例,假设辅助寄存器都是8位字长,AR2中存放数据存储器的基地址,指向X(0)的存储单元,设定AR0的值是FFT长度的一半。 即: AR2=0110 0000(存储器基地址) AR0=0000 1000(FFT长度的一半),举例:以16点FFT为例,当输入序列是顺序时,其FFT变换结果的次序为X(0)、X(8)、X(4)、X(15)的倒序方式(表3-4 ),,执行指令: RPT#15;循环执行下一条语句15+1次 PORTW *AR2 +0B,PA;PA为外设输出端口,AR0以倒序方式加入,注:第0次循环 (0110 0000) PA X(0) 第1次

15、循环 (0110 1000) PA X(1) 第2次循环 (0110 0100) PA X(2) 第3次循环 (0110 1100) PA X(3) 利用上述两条指令即可向外设口(口地址为PA)输出整序后的FFT变换结果。,双操作数间接寻址,用途:用在完成两个读或一个读且一个写的指令中。,说明:该指令只有一个字长,只能以间接寻址的方式工作。,其中: 76位为Xmod,定义了用于访问Xmem操作数间接寻址方式的类型(见表3-5);,10位为Yar,确定了包含Ymem的辅助寄存器。,54位为Xar,确定了包含Xmem地址的辅助寄存器;,32位为Ymod,定义了用于访问Ymem操作数的间接寻址方式的

16、类型;,6、存储器映射寄存器(MMR)寻址,存储器映射寄存器寻址用来修改存储器映射寄存器而不影响当前数据页指针(DP)或堆栈指针(SP)的值。存储器映射寄存器寻址既可以在直接寻址中使用,又可以在间接寻址中使用。,地址产生方式: 采用直接寻址方式:高9位数据存储器地址(DMA)置0,利用指令中的低7位地址 存储器映射寄存器(MMR); 采用间接寻址方式:高9位DMA置0,按当前ARx中的低位地址 MMR; (P36,P41),7、 堆栈寻址,PSHD 将数据存储器中的一个数压入堆栈; PSHM 将一个MMR中的值压入堆栈; POPD 从堆栈弹出一个数至数据存储单元; POPM 从堆栈弹出一个数至

17、MMR。,堆栈操作时,利用堆栈指针来寻址;,用途:堆栈内容的压入/弹出;用在中断和子程序中存放程序寄存器,也可存放额外的数据或传递数据。,说明:a:特殊的存储区域(先进后出); b:堆栈指示(指针)SP(16位) 始终指向栈顶; c:C54X的堆栈是从高地址低地址方向生长;,.mmregs ;存储器映射 .bss x , 4 , 1 ;为未初始化的变量保留空间 a0 .word 012h;定义带符号整型量 a1 .word 3211h a2 .word 0fe11h a3 .word 0ff03h .sect “program” ;定义段 LD #X , AR1 LD #0 , A , AR1 LD #a0 ,T,MAC *+ , A LD #a1 , T MAC *+ , A LD #a2 , T MAC *+ , A LD #a3 , T MAC * , A,

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!