TMS320C54x的指令系统x.ppt
《TMS320C54x的指令系统x.ppt》由会员分享,可在线阅读,更多相关《TMS320C54x的指令系统x.ppt(100页珍藏版)》请在三一办公上搜索。
1、第3章 TMS320C54x的指令系统,3.1 寻址方式 3.2 TMS320C54x的指令表示方法 3.3 TMS320C54x的指令系统,3.1 寻址方式,当硬件执行指令时,寻找指令所指定的参与运算的操作数的方法寻址方式。根据程序的要求采用不同的寻址方式,可以有效地缩短程序的运行时间和提高代码执行效率。,3.1 寻址方式,C54x有7种基本的数据寻址方式:,立即寻址 绝对寻址 累加器寻址 直接寻址 间接寻址 存储器映像 寄存器寻址 堆栈寻址,:由指令提供一个操作数:由指令提供一个操作数地址:以累加器的内容为地址访问程序空间某单元:寻址地址为DP或SP的值加上指令提供的偏移量:利用辅助寄存器
2、访问存储器:用来改变映像寄存器,但不影响DP或SP的值:用来管理系统堆栈中的操作,3.1.1 立即寻址,指令中含有执行指令所需的操作数。操作数紧随操作码存放在程序存储器中。,例如:LD#F180H,A;将立即数F180H加载到A,立即数的数值形式:短立即数。3、5、8、9位,单字指令;长立即数。16位,双字指令。,特点:指令中含有一个固定的立即数,运行速度较快,但需占用程序存储空间,并且数值不能改变。,用途:用于表示常数或对寄存器初始化。,注意:在立即寻址的指令中,应在数值或符号前面加一个“#”,表示是一个立即数,以区别于地址。,3.1.2 绝对寻址,指令中含有所要寻找的操作数的16位存储单元
3、地址。,16位地址表示形式:地址标号,如:TABLE;16位符号常量,如:89AB、1234。,例如:,MVKD TABLE,*AR1;将数据存储器TABLE为地址 的单元数据送入AR1寄存器 指定的数据存储单元中,LD*(DATA),A;将DATA指定的数据存储单元 中的数据送入累加器A中,特点:指令中包含一个固定的16位地址,能寻 址所有数据存储空间,但运行速度慢,需要较大的存储空间。,用途:用于对速度要求较低的场合。,3.1.2 绝对寻址,绝对寻址是利用16位地址来寻址操作数的存储单元。由于绝对地址代码的位数为16位,所以绝对地址寻址的指令至少应为2个字长。,绝对寻址有四种类型:数据存储
4、器地址寻址;程序存储器地址寻址;端口寻址;*(lk)寻址。,1.数据存储器地址寻址,用于确定操作数存于数据存储单元的地址。,例如,将数据存储器EXAM1地址单元中的数据复制到AR5寄存器所指向的数据存储单元中。MVKD EXAM1,*AR5,语法:使用一个程序标号或一个数字来指定数 据空间的一个地址。,数据存储器的16位地址,2.程序存储器地址寻址,用于确定程序存储器中的一个地址。,例如,将程序存储器TABLE地址单元中的内容复制到AR2寄存器所指向的数据存储单元中。MVPD TABLE,*AR2,语法:使用一个符号或具体的数字来指定程序 空间的一个地址。,程序存储器的16位地址,3.端口(P
5、A)寻址,用一个符号或一个数字来确定外部I/O端口的地址。,例如,把一个数从端口为FIFO的I/O口复制到AR5寄存器所指向的数据存储单元中。PORTR FIFO,*AR5,I/O端口地址,4.*(1k)寻址,使用一个符号或者一个常数来确定数据存储器中的一个地址。,例如,把地址为2000H的数据单元中的数据装到累加器A中。LD*(2000H),A,注意:*(1k)寻址的指令不能与循环指令(RPT,RPTZ)一起使用。,3.1.3 累加器寻址,将累加器的内容作为地址去访问程序存储单元,即将累加器中的内容作为地址,用来对存放数据的程序存储器寻址。,例如:READA Smem;将A中的数据作为地址寻
6、址程序 存储器中的数据,并将数据送 入Smem指定的数据存储单元。,WRITA Smem;将Smem指定的数据存储单元中的 数据,写入A所指定的程序存储 单元。,用途:用于完成程序存储空间与数据存储空间之间的数据传输。,注意:,大多数C54x用A的低16位作为程序存储器的地址,而C548和C549是以A的低23位作为程序存储器地址,C5402是以A的低20位作为程序存储器地址;,只能使用累加器A寻址程序空间。,累加器A用来寻址程序空间。Smem用来寻址数据空间。,3.1.4 直接寻址,利用数据指针DP和堆栈指针SP寻址。,16位数据存储器地址由基地址(数据 页指针DP或堆栈指针SP)和偏移地址
7、(dmad)共同构成。,第3章 TMS320C54x的指令系统,指令格式:,特点:指令中只含有数据存储器的低7位地 址(偏移地址dmad);,3.1.4 直接寻址,所要寻址的数据存储器16位地址是由基地址和偏移地址构成。,基地址:,数据页指针DP(9位);堆栈指针SP。,当CPL=0时,数据存储器16位地址由DP和偏移地址dmad构成;,当CPL=1时,数据存储器16位地址由SP加偏移地址dmad构成。,第3章 TMS320C54x的指令系统,地址形成过程:,当CPL=0时,,高9位,低7位,16位数据存储器地址,第3章 TMS320C54x的指令系统,地址形成过程:,当CPL=1时,,高9位
8、,低7位,16位数据存储器地址,SP+dmad,第3章 TMS320C54x的指令系统,3.1.4 直接寻址,DP地址的范围是从0511(29-1),将存储器分成512页。,以DP为基准的直接寻址是由DP值确定是512页中的哪一页,由dmad确定是该页中的哪一个单元。,7位dmad范围是从0127,每页有128个可以访问的单元。,SP可以指向存储器中的任意一个地址。dmad可以指向当前页中具体的单元,从而允许访问存储器任意基地址中的连续的128个单元,第3章 TMS320C54x的指令系统,3.1.4 直接寻址,直接寻址标识:变量前加,如x;在偏移量前加,如5。,利用直接寻址可以在不改变DP或
9、SP的情况下,随机寻址128个存储单元中的任何一个单元。,直接寻址的优点:每条指令只需要一个字。,第3章 TMS320C54x的指令系统,3.1.4 直接寻址,例1:数据存储器存储数据如图所示,采用数据页指针DP直接寻址,完成x,y单元的两个数据求和。,RSBX CPL,LD#3,DP,LD x,A,ADD y,A,;CPL复位;立即数3赋给DP;x单元的数据送入A;完成x和y单元的数 据相加,LD#3,DP,LD#3,DP,LD x,A,LD x,A,01FF,1000,01FF,1000,ADD y,A,0180,0001,0180,0001,ADD y,A,第3章 TMS320C54x的
10、指令系统,3.1.4 直接寻址,例2:数据存储器存储数据如图所示,利用堆栈指针SP直接寻址,求堆栈中两个数x,y的和。,SSBX CPL,LD 1,A,ADD 2,A,;CPL置位;x单元的数据送入A;完成x和y单元的数 据相加,SP,x:,y:,SP,x:,y:,SSBX CPL,LD 1,A,x:,0200H,1=0201H,0100,00 0000 0100,0100,x:,ADD 2,A,2=0202H,y:,0050,0,00 0000,5,1,0,+,y:,0050,00 0000 0150,第3章 TMS320C54x的指令系统,3.1.4 直接寻址,直接寻址特点:所寻址数据存储
11、器的16位地址是由DP或SP 与7位偏移地址dmad构成;可在单周期寻址128个单元;寻址速度快,能进行流水线并行操作。,用途:主要用于要求运算速度较快的场合。,注意:上述两种直接寻址方式是相互排斥的;采用DP寻址时,要注意数据所在的页面 指针。,第3章 TMS320C54x的指令系统,3.1.5 间接寻址,是根据辅助寄存器(AR0-AR7)给出的16位地址进行寻址,8个辅助寄存器(AR0-AR7),由一 个辅助寄存器指针(ARP 3-bit)来指定,辅助寄存器算术单元(ARAU)作16-bit 无符号数运算,决定一个新的地址,装 入辅助寄存器中的一个,第3章 TMS320C54x的指令系统,
12、3.1.5 间接寻址,第3章 TMS320C54x的指令系统,3.1.5 间接寻址,1.单操作数寻址,用来完成存储单元中16位单数据的读写操作。,在使用AR0-AR7寻址时,AR的内容相当灵活:,将该AR的内容加1或减1,再寻址(循环常用),将该AR的内容加上或减去AR0的内容,再寻址。,将该AR的内容加上或减去一个立即数,再寻址。,第3章 TMS320C54x的指令系统,ADD*AR1,8,A;将当前辅助寄存器所指的地址里的数据,左移8-bit后加给AccA,ADD*AR1+,8,A,AR4;数据左移,加给AccA后,当前辅助寄存器加1,选择辅助寄存器AR4,ADD*AR1+0,8,A;执行
13、加法后,将AR0的内容加给当前辅助寄存器,ADD*AR1+,8,A;数据左移,加给AccA后,当前辅助寄存器加1,3.1.5 间接寻址,第3章 TMS320C54x的指令系统,3.1.5 间接寻址,2.双操作数寻址,用于完成执行2次读操作或者1次读和1次的并行存储操作。这些指令代码都是1个字长,而且只能以间接寻址方式进行操作。,两个数据存储器操作数由Xmem和Ymem表示。,Xmem:读操作数;,Ymem:,在两次读操作的指令中,表示一个读操作数;,在一次读和一次写的指令中,表示写操作数。,第3章 TMS320C54x的指令系统,2.双操作数寻址,用于完成执行2次读操作或者1次读和1次的并行存
14、储操作。这些指令代码都是1个字长,而且只能以间接寻址方式进行操作。,第3章 TMS320C54x的指令系统,2.双操作数寻址,可用于双操作数间接寻址的辅助寄存器有4个,分别是:AR2、AR3、AR4、AR5,MPY*AR2,*AR3,A;将AR2和AR3所指地址里的数据相乘,乘积放入ACCA,第3章 TMS320C54x的指令系统,间接寻址特点:通过辅助寄存器和辅助寄存器指针来寻址数据空间存储单元,并自动实现增量、减量、变址寻址、循环寻址等。,用途:用于需要按固定步长寻址的场合。,3.1.5 间接寻址,第3章 TMS320C54x的指令系统,3.1.6 存储器映像寄存器寻址,是一种不考虑DP和
15、SP为何值,以0为基地址来访问MMR的寻址方式。主要用于修改存储器映像寄存器的内容。,1.采用直接寻址方式,2.采用间接寻址方式,高9位数据存储器地址置0,利用指令中的低7位地址直接访问MMR。,高9位数据存储器地址置0,按照当前辅助寄存器ARx的低7位地址访问MMR。,第3章 TMS320C54x的指令系统,3.1.6 存储器映像寄存器寻址,C54x共有8条指令可以进行MMR寻址。,LDM MMR,dst;将MMR加载到累加器 MVDM dmad,MMR;数据存储器向MMR传送数据 MVMD MMR,dmad;MMR向指定地址传送数据 MVMM MMRx,MMRy;MMRx向MMRy传送数据
16、 POPM MMR;将数据从栈顶弹至MMR PSHM MMR;将MMR数据压入堆栈 STLM src,MMR;累加器低位存入MMR STM#lk,MMR;长立即数lk存入MMR,第3章 TMS320C54x的指令系统,3.1.6 存储器映像寄存器寻址,MMR寻址特点:,寻址速度快,对MMR执行写操作开销小;可直接利用MMR的名称快速访问数据存储空间的0页资源;只能寻址数据空间的0页单元。,用途:主要用于不改变DP、SP的情况下,修改MMR中的内容。,第3章 TMS320C54x的指令系统,3.1.7 堆栈寻址,堆栈:当发生中断或子程序调用时,用来自动保存PC内容以及保护现场或传送参数。,C54
17、x的堆栈是向低地址生长,并由16位堆栈指针SP管理。SP总是指向栈顶。,堆栈寻址:利用SP指针,按照先进后出的原则进 行寻址。,当进栈操作时,SP先减小,然后数据进入堆栈;,当出栈操作时,数据先出栈,然后SP增加。,第3章 TMS320C54x的指令系统,3.1.7 堆栈寻址,进栈操作时,SP先减小,然后数据进入堆栈;,SPSP-1,使SP指向03FEH;,SP,03FEH,数据进栈,SP=03FEH。,13FF,SP,出栈操作时,数据先出栈,然后SP增加。,SP=03FEH,数据出栈;,SP,13FF,SPSP+1,使SP指向03FFH。,SP,第3章 TMS320C54x的指令系统,3.1
18、.7 堆栈寻址,采用堆栈寻址的指令:,PSHD Smem;将Smem中的数据压入堆栈 PSHM MMR;将MMR中的数据压入堆栈 POPD Smem;将数据从栈顶弹至Smem中 POPM MMR;将数据从栈顶弹至MMR中,第3章 TMS320C54x的指令系统,3.2 TMS320C54x的指令表示方法,C54x的助记符指令是由标号:、助记符、操作数列表、;注释四部分组成。,例如:begin:LD#0FFh,A;将立即数0FF传送至A,助记符,源操作数,目的操作数,注释,第3章 TMS320C54x的指令系统,标号,3.2.1 汇编程序语句格式,3.2.1 混编程序语句格式,1.标号域,第3章
19、 TMS320C54x的指令系统,对所有C54x的汇编语言指令和大多数的汇编伪指令,标号域为可选项。但是伪指令.set和.equ在使用时必须有标号。,标号必须从源语句的第一列开始书写,一个标号最多允许有32个字符;标号可由下列字符组成:AZ、az、09、_和$,但是标号的第一个字符不能是数字,并且标号区分大小写。,标号后的:为可选项,当不使用标号时,源语句的第一列只能是空格、分号或星号,3.2.1 混编程序语句格式,1.标号域,第3章 TMS320C54x的指令系统,标号值等于它所指向的语句所在的单元地址,START:.word 0AH,3,7;把0AH、3、7三个数存放到当前段的 连续 的单
20、元中,在这条指令中,START的值就等于存放0AH的单元地址值,MVPD START,*AR2,;将程序存储器START地址单元中的内容复制到AR2 寄存器所指向的数据存储单元中。,第3章 TMS320C54x的指令系统,3.2.1 混编程序语句格式,2.指令域,在标号域后面是指令域。如果没有标号域,指令域只能从第一列以后开始书写,如果从第一列开始书写指令,则汇编器会误认为为标号。,指令域可以包括下列指令码之一:汇编语言指令、汇编伪指令、宏指令,第3章 TMS320C54x的指令系统,3.2.1 混编程序语句格式,3.操作数域,操作数域中包含的是源操作数和目的操作数,操作数可以是常量、符号,或
21、者是常量和符号的混合表达式。,根据寻址方式的不同,操作数可以是立即数、地址或间接地址,可以在操作数前加上前缀符号来进行区分。,#:表示其后的操作数是立即数。,*:表示其后的操作数是间接地址。,:表示其后的操作数是采用直接寻址。,注:助记符指令格式中,在使用直接寻址方式时可以省略。,第3章 TMS320C54x的指令系统,3.2.1 混编程序语句格式,4.注释域,注释域可以从任意列开始书写,但是必须以;开头。如果注释从第一列开始书写也可以用*开头。,小结:,(1)语句的开头只能是标号、空格、星号或分号。,(2)标号域是可选的,如果使用只能从第一列开始。,(3)每个域之间必须有空格分开。,(4)注
22、释域是可选项,如果从第一列开始必须用;或*开头,从其他列开始只能用;开头。,(5)源语句的字符数每行不能超过200个。,第3章 TMS320C54x的指令系统,3.2.2 汇编语言常量,C54x汇编器支持7种类型的常量:二进制、八进制、十进制、十六进制、字符常量、汇编时间常量和浮点数常量。,1.二进制整数常量,可以由最多16个二进制数字组成,后缀为B或b。如果少于16位,汇编器会把数字右对齐并在左边补0。,2.八进制整数常量,最多由6个八进制数字组成,后缀为Q或q。,3.十进制整数常量,由十进制数字串组成,范围从32768 32767,或从0 65535。,4.十六进制整数常量,最多由4个十六
23、进制数字组成,后缀为H或h,也可以用前缀0 x表示,第3章 TMS320C54x的指令系统,3.2.2 汇编语言常量,5.字符常量,字符常量是由单引号括住的一个或两个字符组成,在汇编器内部会用字符对应的ASC码进行表示。如果单引号中间为空,则表示为0。,6.汇编时间常量,用.set伪指令给一个符号赋值,则这个符号等效一个常量。,shift.set 3LD#shift,A;伪指令给一个符号赋值,则这个符号等效一个常 量。,7.浮点数常量,浮点数常量可用来表示小数,通常由一串十进制数字、小数点、小数部分、指数部分组成。,第3章 TMS320C54x的指令系统,3.2.3 字符串,字符串是由双引号括
24、起来的一串字符,主要为伪指令所用。,3.2.4 符号,符号可用于标号、常量和替代其他字符,一个符号名最多可以有32位字符组成(AZ、az、09、_和$),第一位不能是数字,并且字符之间不能有空格。符号对大小写敏感。,用作标号的符号在使用前必须被定义,该标号代表程序中对应位值的地址。,3.3 TMS320C54x的指令系统,C54x的指令系统共有129条基本指令,由于操作数的寻址方式不同,由它们可以派生多至205条指令。,按指令的功能可分成五大类:,数据传送指令 算术运算指令 逻辑运算指令,程序控制指令 重复操作指令,第3章 TMS320C54x的指令系统,练习:阅读下列程序段,添加注释,了解程
25、序功能,第3章 TMS320C54x的指令系统,.bss x,5.bss y,1.def start table:.word 10,20,3,4,5start:STM#x,AR1 RPT#4 MVPD table,*AR1+LD#0,A CALL SUMend:B endSUM:STM#x,AR3 STM#4,AR2 loop:ADD*AR3+,A BANZ loop,*AR2-STL A,*(y)RET.end,3.3.1 数据传送指令,是从存储器中将源操作数传送到目的操作数所指定的存储器中。,包括:,装载指令,存储指令,条件存储指令,混合装载和存储指令,第3章 TMS320C54x的指令系



- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- TMS320C54x 指令系统

链接地址:https://www.31ppt.com/p-6522016.html