第3章39;C54x的指系统_第1页
第3章39;C54x的指系统_第2页
第3章39;C54x的指系统_第3页
第3章39;C54x的指系统_第4页
第3章39;C54x的指系统_第5页
已阅读5页,还剩151页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、3.1 寻址方式寻址方式 3.2 tms320c54x的指令表示方法的指令表示方法 3.3 tms320c54x的指令系统的指令系统 c54xc54x有有7 7种基本的数据寻址方式:种基本的数据寻址方式:立即寻址立即寻址 绝对寻址绝对寻址 累加器寻址累加器寻址 直接寻址直接寻址 间接寻址间接寻址 存储器映像存储器映像 寄存器寻址寄存器寻址 堆栈寻址堆栈寻址由指令提供一个操作数由指令提供一个操作数:由指令提供一个操作数地址由指令提供一个操作数地址 :以累加器的内容为地址访问程序空间某单元以累加器的内容为地址访问程序空间某单元:寻址地址为寻址地址为dpdp或或spsp的值加上指令提供的偏移量的值加

2、上指令提供的偏移量:利用辅助寄存器访问存储器利用辅助寄存器访问存储器 :用来改变映像寄存器,但不影响用来改变映像寄存器,但不影响dpdp或或spsp的值的值:用来管理系统堆栈中的操作用来管理系统堆栈中的操作smemxmemymemdmadpmadpasrcdst1k指令中含有执行指令所需的操作数。操作数紧随指令中含有执行指令所需的操作数。操作数紧随操作码存放在程序存储器中。操作码存放在程序存储器中。指令中含有所要寻找的操作数的指令中含有所要寻找的操作数的1616位存储单元位存储单元地址。地址。特点:指令中包含一个固定的特点:指令中包含一个固定的1616位地址,能寻位地址,能寻 址所有数据存储空

3、间,但运行速度慢,址所有数据存储空间,但运行速度慢, 需要较大的存储空间。需要较大的存储空间。 绝对寻址是利用绝对寻址是利用1616位地址来寻址操作数的存储位地址来寻址操作数的存储单元。由于绝对地址代码的位数为单元。由于绝对地址代码的位数为1616位,所以绝对位,所以绝对地址寻址的指令至少应为地址寻址的指令至少应为2 2个字长。个字长。1.1.数据存储器地址寻址数据存储器地址寻址 用于确定操作数存于数据存储单元的地址。用于确定操作数存于数据存储单元的地址。 2.2.程序存储器地址寻址程序存储器地址寻址 用于确定程序存储器中的一个地址。用于确定程序存储器中的一个地址。 3.3.端口(端口(pap

4、a)寻址)寻址 用一个符号或一个数字来确定外部用一个符号或一个数字来确定外部i/o端口的端口的地址。地址。 4. 4. * *(1k)(1k)寻址寻址 使用一个指定数据空间的地址来确定数据存使用一个指定数据空间的地址来确定数据存储器中的一个地址。储器中的一个地址。 允许所有使用单数据存储器允许所有使用单数据存储器(smem)(smem)寻址寻址 的指令去访问数据空间的任意单元,而的指令去访问数据空间的任意单元,而 不改变不改变dpdp的值,也不用对的值,也不用对arxarx进行初始化。进行初始化。 这种寻址可用于支持单数据存储器操作数的指令。这种寻址可用于支持单数据存储器操作数的指令。 注意:

5、注意:* *(1k)(1k)寻址的指令不能与循环指令寻址的指令不能与循环指令(rpt(rpt,rptz)rptz)一起使用。一起使用。 特点:特点: 当当cpl=0时,数据存储器时,数据存储器1616位地址由位地址由dp和偏和偏移地址移地址dmad构成;构成;当当cpl=1时,数据存储器时,数据存储器1616位地址由位地址由sp加加偏移偏移地址地址dmad构成。构成。当当cpl=0时,时,高高9位位低低7位位当当cpl=1时,时,高高9位位低低7位位dpdpdmadma0 0000 0011111 1111操作码操作码 0 111 1111机器码机器码x 0 0000 0011111 1111

6、0 1 f fxa00 0000 1000操作码操作码 0 000 0000机器码机器码000 0000y 0 0000 0011000 00001 8 0 0y0180h0001+1001100100 000000 0000 1001adpdp0 0000 0011dmadma111 11110 1 f fxa00 0000 1000dpdp0 0000 0100dmadma000 00000 2 0 0y05000200h05000200h+005100 0000 00 0000 150000 0000 1500a结果结果120000 0010 0000 0000000 0001000 0

7、0100 2 0 10 2 0 2a00 0000 0150a执行结果执行结果 上述两种上述两种直接寻址方式是相互排斥的;直接寻址方式是相互排斥的; 采用采用dp寻址时,要注意数据所在的页面寻址时,要注意数据所在的页面 指针。指针。 modarf arxarx1 arx1 arx1arxar0 注注11:寻址:寻址1616位字时增位字时增/ /减量为减量为1 1,3232位字时增位字时增/ /减量为减量为2 2。 注注22:这种方式只能用写操作指令。:这种方式只能用写操作指令。 注注33:这种方式不允许对存储器映像寄存器寻址。:这种方式不允许对存储器映像寄存器寻址。 (ar2)=0100h (

8、0100h)=0030hld *ar2,a(a)=0030h (ar2)=0100h (ar2)=0100h (0100h)=0030h(0ffh)=200ld *ar2-,a ld *ar2,b (a)=0030h (ar2)=00ffh (b)=200 arxar0ar0arxarx1arxar0 注注11:寻址:寻址1616位字时增位字时增/ /减量为减量为1 1,3232位字时增位字时增/ /减量为减量为2 2。(ar2)=0100h (ar0)=0002h(0100h)=0030h (0101h)=100(0102h)=200ld *ar2+0,a ld *ar2,b (a)=003

9、0h (ar2)=0102h (b)=200arx116arx16 注注33:这种方式不允许对存储器映像寄存器寻址。:这种方式不允许对存储器映像寄存器寻址。 循环缓冲区的长度循环缓冲区的长度r r,由循环缓冲区长度寄存器由循环缓冲区长度寄存器bkbk确定,可通过指令设定。确定,可通过指令设定。 81000000000810000001100011000910011001200100100101010010130011110011101111014010000101211000011501011010131101101160110011014111001117011111101511111111

10、 xmodxarymodyar 0 0=arxarx0 1=arxarx=arx-11 0=arxarx=arx+11 1=arxarx=circ(arx+ar0)1.1.采用直接寻址方式采用直接寻址方式2.2.采用间接寻址方式采用间接寻址方式当进栈操作时,当进栈操作时,spsp先减小,然后数据进入堆栈;先减小,然后数据进入堆栈;当出栈操作时,数据先出栈,然后当出栈操作时,数据先出栈,然后spsp增加。增加。smem smem 操作码操作码 源操作数源操作数目的操作数目的操作数3.2.13.2.1 指令系统中的符号指令系统中的符号 3.2.13.2.1 指令系统中的符号指令系统中的符号 2.2

11、.指令操作码符号和缩略语指令操作码符号和缩略语2.2.指令操作码符号和缩略语指令操作码符号和缩略语3.2.23.2.2 指令系统中的运算符指令系统中的运算符 1.1.指令系统中使用的记号指令系统中使用的记号2.2.指令系统的运算符号指令系统的运算符号是从存储器中将源操作数传送到目的操作数所是从存储器中将源操作数传送到目的操作数所指定的存储器中。指定的存储器中。即取数或赋值指令,用于将存储器内容或立即即取数或赋值指令,用于将存储器内容或立即数赋给目的寄存器,共计数赋给目的寄存器,共计2121条。条。根据条件将源操作数存入目的存储器,共计根据条件将源操作数存入目的存储器,共计4 4条条指令。指令。

12、用于完成数据存储器、程序存储器以及用于完成数据存储器、程序存储器以及i/oi/o口口之间的数据传输,共计之间的数据传输,共计1212条。条。包括:包括:(1)(1)加法指令加法指令 add smemsmemxmemxmem#lk#lksrcadd smem,srcadd smem,srcadd smem,ts,srcadd smem,ts,srcadd smem,16,src,dstadd smem,16,src,dstadd smem,shift,src,dstadd smem,shift,src,dst 操作码操作码 源操作数源操作数 指令格式指令格式add xmem,shift,srca

13、dd xmem,shift,srcadd xmem,ymem,dstadd xmem,ymem,dstadd #lk,shft,src,dstadd #lk,shft,src,dstadd #lk,16,src,dstadd #lk,16,src,dstadd src,shift,dstadd src,shift,dstadd src,asm,dstadd src,asm,dst(1)(1)加法指令加法指令 addc 操作码操作码 源操作数源操作数 指令格式指令格式 smem addc smem,src addm #lk addc #lk, ,smem adds smem addc smem,

14、 ,src 加法指令功能加法指令功能 a=0000 2700hb=0000 2718h (2)(2)减法指令减法指令 减法指令功能减法指令功能 subs subs smem smem , , srcsrcsrcsrc=src-src-uns(smemsmem操作操作(3)(3)乘法指令乘法指令 c54x的指令系统提供了的指令系统提供了1010条乘法运算指令,其条乘法运算指令,其运算结果都是运算结果都是3232位的,存放在累加器位的,存放在累加器a a和和b b中。而参与中。而参与运算的乘数可以是运算的乘数可以是t t寄存器、立即数、存储单元和累寄存器、立即数、存储单元和累加器加器a a或或b

15、b的高的高1616位。位。乘法指令功能乘法指令功能 (4)(4)乘法乘法- -累加和乘法累加和乘法- -减法指令减法指令 这类指令共计这类指令共计2222条,除了完成乘法运算外,还具条,除了完成乘法运算外,还具有加法或减法运算。因此,在一些复杂的算法中,可有加法或减法运算。因此,在一些复杂的算法中,可以大大提高运算速度。以大大提高运算速度。 参与运算的乘数可以是参与运算的乘数可以是t t寄存器、立即数、存储寄存器、立即数、存储单元和累加器单元和累加器a a或或b b的高的高1616位。位。 乘法运算结束后,再将乘积与目的操作数进行加乘法运算结束后,再将乘积与目的操作数进行加法或减法运算。法或减

16、法运算。乘法乘法- -累加和乘法累加和乘法- -减法指令功能减法指令功能 乘法乘法- -累加和乘法累加和乘法- -减法指令功能减法指令功能 乘法乘法- -累加和乘法累加和乘法- -减法指令功能减法指令功能 (5)(5)双字算术运算指令双字算术运算指令 双字算术运算指令共计双字算术运算指令共计6 6条,完成双条,完成双1616位数的加位数的加减运算。减运算。 dadd dadd lmemlmem, ,srcsrc,dstdst 功能功能: : 若若c16c16 = 0 0,则完成双精度加法,则完成双精度加法 dstdst = lmemlmem + +srcsrc ; 若若c16c16 = 1 1

17、,则双,则双1616位数加法位数加法 dstdst(39-16)(39-16)= lmemlmem(31-16)(31-16)+ +srcsrc(31-16)(31-16) dst dst(15-0)(15-0)= lmemlmem(15-0)(15-0)+ +srcsrc(15-0)(15-0)(5)(5)双字算术运算指令双字算术运算指令 (6)(6)特殊运算指令特殊运算指令 特殊运算指令共特殊运算指令共1515条。条。 (6)(6)特殊运算指令特殊运算指令 包括:包括: 16 16 16例:n将0100h单元中的高8位数据屏蔽(变为0),程序如何实现? 带进位位循环右移带进位位循环右移 操

18、作数操作数src:累加器累加器a或或b 指令功能:指令功能: 累加器累加器src与进位位与进位位c循环右移一位。循环右移一位。 执行过程:执行过程: c的值移入的值移入src的的3131位位 累加器累加器src右移一位右移一位 src的最低位的最低位移入移入c src的保护位清的保护位清039 3231 0 0 带进位位循环左移带进位位循环左移 带测试位循环左移带测试位循环左移 操作数操作数src:累加器累加器a或或b 指令功能:指令功能: 累加器累加器src与测试位与测试位tc循环左移一位。循环左移一位。 执行过程:执行过程:39 3231 0tc tc的值移入的值移入src的最低位的最低位

19、 累加器累加器src左移一位左移一位 src的最高位的最高位移入移入tc src的保护位清的保护位清0 0 算术移位算术移位 操作数操作数src:累加器累加器a或或b 指令功能:指令功能: 根据根据shift,src的内容算术移位。的内容算术移位。 算术移位算术移位执行过程:执行过程:当当shift 0时,进行算术左移时,进行算术左移 1) src的第的第(39-shiet)位复制到进位位位复制到进位位c; 2) 40位位src左移左移shift位,结果存入位,结果存入src或或dst; 3) 将将0置入置入dst的低的低shift的各位的各位 0写入写入dst(shift-1)0) 条件移位

20、条件移位 操作数操作数src:累加器累加器a或或b 条件移位条件移位 执行过程:执行过程: 当当srcsrc = 0 0时时,将将1 1写入测试位写入测试位tctc; 当当srcsrc0 0时,时,进行条件移位。进行条件移位。 若若srcsrc有两个有效符号位有两个有效符号位,则移位。则移位。 3232位位srcsrc左移一位左移一位; 保护位保护位src(39src(3932)32)不变不变; 0 0写入测试位写入测试位tctc。 若若srcsrc只有一个符号位只有一个符号位,则不移位。则不移位。 1 1写入测试位写入测试位tctc。 逻辑移位逻辑移位 操作数操作数src:累加器累加器a或或

21、b 逻辑移位逻辑移位执行过程:执行过程: 若若shiftshift 0 0,则进行逻辑左移。则进行逻辑左移。 srcsrc的第的第( (3131-(-(shiftshift- -1 1)位复制到进位位位复制到进位位c c; src(src(31-31-shiftshift) )0 0) )左移左移shiftshift位存入位存入dstdst; 0 0写入写入dstdst的低的低shiftshift位位, ,即即0 0dstdst(shiftshift-1)-1)0 0) ); 0 0写入写入dstdst的高的高8 8位位, ,即即0 0dstdst(39(393232) )。 bit 指令格式

22、:指令格式: bit xmem,bitc 指令功能:指令功能: ( (xmem( (1515- -bitc)tc功能说明:功能说明: 将将xmem的指定位复制到的指定位复制到tc位。位。 操操 作作 数:数: xmem双数据存储操作数双数据存储操作数 bitc测试位的位代码测试位的位代码, 取值:取值:0 01515 bitf 指令格式:指令格式: bitf smem,#lk 指令功能:指令功能: if(smem) )and and lk)=)= 0 then 0 tc else 1 tc功能说明功能说明: 测试测试smemsmem中由中由1k1k指定的某些位指定的某些位。 若指定的测试位为若

23、指定的测试位为0,tc=0,0,tc=0,否则否则,tc=1,tc=1。 lklk在测试指定位中起屏蔽作用。在测试指定位中起屏蔽作用。操操 作作 数:数: smem单数据存储操作数单数据存储操作数 #lk1616位长立即数位长立即数, 取值:取值:0 0 6 65 5 535535 bitt 指令格式:指令格式: bitt smem 指令功能:指令功能: ( (smem(15-(15-t(3(30 0)tc功能说明功能说明: 将将smemsmem的的指定位复制到指定位复制到tctc中中。 t t寄存器的低寄存器的低4 4位位t(3t(30)0)用于确定测试位用于确定测试位 的位代码的位代码,位

24、地址对应于位地址对应于15-t(315-t(30)0)。操操 作作 数:数: smem单数据存储操作数单数据存储操作数 cmpm 指令格式:指令格式: cmpm smem,#lk 操操 作作 数:数: smem单数据存储操作数单数据存储操作数 #lk长立即数长立即数, 取值:取值:-32-32 768768 3232 768768指令功能:指令功能: if ( (smem) )= lk then 1 tc else 0 tc功能说明功能说明: 比较比较smemsmem中的操作数与常量中的操作数与常量1k1k是否相等是否相等。 若若(smem)(smem)= 1k,1k,则则tctc = 1,1

25、,否则否则,tc,tc = 0 0。 cmpr 指令格式:指令格式: cmpr cc,arx 操操 作作 数:数: cc条件代码,取值:条件代码,取值:00b00b11b11b arx辅助寄存器辅助寄存器ar0 0ar7 7 指令功能:指令功能: if (cond) (cond) then 1 tc else 0 tc功能说明功能说明: 根据条件代码根据条件代码cccc,将指定的将指定的arxarx与与ar0ar0比较。比较。 若满足条件若满足条件, ,则则tctc = 1,1,否则否则,tc,tc = 0 0。 测试条件与代码测试条件与代码eqltgtneq0 00 11 01 1注意:注意

26、:所有的条件都以无符号操作数的形式参与运算。所有的条件都以无符号操作数的形式参与运算。包括:包括:操操 作作 数:数: pmad立即数表示的程序存储器立即数表示的程序存储器 地址。取值:地址。取值:0 06565 535535 指令格式:指令格式: bd pmad 指令功能:指令功能: pmad pc bd 指令格式:指令格式: bd pmad 功能说明:功能说明: 将将pmadpmad指定的程序存储器地址赋给指定的程序存储器地址赋给pcpc, 实现分支转移。实现分支转移。 bd 注注 意:意: 若指令带后缀若指令带后缀d d,则为延迟方式,紧随则为延迟方式,紧随 该指令的两条单字指令或一条双

27、字指令该指令的两条单字指令或一条双字指令 先被取出执行,然后程序再转移。先被取出执行,然后程序再转移。 该指令不能被循环执行。该指令不能被循环执行。 指令格式:指令格式: baccd src baccd 操操 作作 数:数: src累加器累加器a或或b 指令功能:指令功能: src(150) pc 指令格式:指令格式: banzd pmad,sind banzd 操操 作作 数:数: sind单间接寻址操作数单间接寻址操作数 pmad程序存储器地址程序存储器地址 指令功能:指令功能: if (arx) 0) then pmadpc else (pc)+2pc 功能说明:功能说明: 若当前若当前

28、arx0arx0,则,则pmadpmad的值赋给的值赋给pcpc, 否则,否则,pcpc值加值加2 2。 指令格式:指令格式: bcd pmad, cond, cond, cond bcd 功能说明:功能说明: 若满足特定条件,则若满足特定条件,则pmadpmad的值赋给的值赋给pcpc, 否则,否则,pcpc值加值加2 2。指令格式:指令格式: fbd extpmad fbd 指令格式:指令格式: fbaccd src fbaccd 功能说明:功能说明: 将将srcsrc的高的高7 7位位(22221616) 赋给赋给xpcxpc,srcsrc的的 低低1616位位(15150 0) 赋给赋

29、给pcpc。操操 作作 数:数: src累加器累加器a或或b 指令格式:指令格式: calad src 指令功能:指令功能: 若非延时,若非延时,( (sp)-1sp)-1spsp ( (pc)+1pc)+1tostos (src(15 (src(150)0)pcpc 若延时,若延时,( (sp)-1sp)-1spsp ( (pc)+3pc)+3tostos (src(15 (src(150)0)pcpc calad 功能说明:功能说明: 首先将返回的地址压入栈顶保存,然后首先将返回的地址压入栈顶保存,然后 将将src的低的低1616位赋给位赋给pcpc,实现子程序调用。实现子程序调用。指令格

30、式:指令格式: calld pmad calld fcalld 指令格式:指令格式: fcalld extpmad 指令格式:指令格式: ccd pmad, cond, cond, cond ccd fcalad 指令格式:指令格式: fcalad src 操操 作作 数:数: k小于小于9 9位的短立即数位的短立即数 指令格式:指令格式: intr k trap k 指令功能:指令功能: ( (sp)-1sp)-1spsp ( (pc)+1pc)+1tostos intr功能说明:功能说明: 首先将首先将pcpc值压入栈顶,然后将值压入栈顶,然后将k k所确定的所确定的 中断向量赋给中断向量

31、赋给pcpc,执行中断服务子程序。执行中断服务子程序。 中断标志寄存器中断标志寄存器ifrifr对应位清对应位清0 0且且intm=1intm=1。 trap指令格式:指令格式: fretd 指令功能:指令功能: (tos(tos) )xpcxpc ( (sp)+1sp)+1spsp (tos (tos) )pcpc ( (sp)+1sp)+1sp sp fretd 功能说明:功能说明: 长返回指令长返回指令。指令格式:指令格式: freted 指令功能:指令功能: (tos(tos) )xpcxpc ( (sp)+1sp)+1spsp (tos (tos) )pcpc ( (sp)+1sp)

32、+1sp 0sp 0intmintm freted 功能说明:功能说明: 长中断返回指令。长中断返回指令。指令功能:指令功能: ifif (cond(s) (cond(s) then then (tos(tos) )pcpc (s(sp)+1p)+1spsp else else ( (pc)+1pc)+1pc pc rcd 功能说明:功能说明: 若满足条件,栈顶数据弹出到若满足条件,栈顶数据弹出到pcpc,spsp加加1 1, 若不满足条件,执行若不满足条件,执行pcpc加加1 1。指令格式:指令格式: rcd cond, cond, cond 指令功能:指令功能: (tos(tos) )pc

33、pc (s(sp)+1p)+1spsp retd 功能说明:功能说明: 栈顶栈顶1616位数据弹出到位数据弹出到pcpc,spsp加加1 1。指令格式:指令格式: retd 指令功能:指令功能: (tos(tos) )pcpc (s(sp)+1p)+1sp 0sp 0intmintm reted 功能说明:功能说明: 栈顶栈顶1616位数据弹出到位数据弹出到pc,sppc,sp加加1,1,intmintm清清0 0。指令格式:指令格式: reted 指令功能:指令功能: (rtn(rtn) )pcpc (s(sp)+1p)+1sp 0sp 0intmintm retfd 功能说明:功能说明:

34、将快速返回寄存器将快速返回寄存器rtnrtn中的内容赋给中的内容赋给pcpc, 然后然后spsp加加1 1,intmintm清清0 0。指令格式:指令格式: retfd 指令格式:指令格式: frame k 指令功能:指令功能: (sp(sp)+k)+ksp sp frame 功能说明:功能说明: 将短立即数偏移将短立即数偏移k k加到加到spsp中。中。操操 作作 数:数: k9 9位短立即数,取值:位短立即数,取值:-128-128127127 指令格式:指令格式: popd smem 指令功能:指令功能: (tos(tos) )smem (sp)+1smem (sp)+1sp sp po

35、pd 功能说明:功能说明: 由由spsp寻址的数据存储器单元中的内容复寻址的数据存储器单元中的内容复 制到由制到由smemsmem确定的数据存储器单元中确定的数据存储器单元中。 然后然后spsp加加1 1。 popm 指令格式:指令格式: popm mmr pshd 指令格式:指令格式: pshd smem 指令功能:指令功能: (sp(sp)-1)-1spsp smem smem tos tos 功能说明:功能说明: spsp减减1 1操作后,将存储单元操作后,将存储单元smemsmem的内容的内容 压入压入spsp指向的数据存储单元指向的数据存储单元。 pshm 指令格式:指令格式: pshm mmr 指令格式:指令格式: idle k idle 功能说明:功能说明: 强迫程序执行等待操作直到产生非屏蔽强迫程序执行等待操作直到产生非屏蔽 中断或复位操作。中断或复位操作。pcpc值加值加

温馨提示

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

评论

0/150

提交评论