附录 TMS320C54X汇编语言指令系统Word文档下载推荐.docx

上传人:b****6 文档编号:18606694 上传时间:2022-12-29 格式:DOCX 页数:176 大小:105.31KB
下载 相关 举报
附录 TMS320C54X汇编语言指令系统Word文档下载推荐.docx_第1页
第1页 / 共176页
附录 TMS320C54X汇编语言指令系统Word文档下载推荐.docx_第2页
第2页 / 共176页
附录 TMS320C54X汇编语言指令系统Word文档下载推荐.docx_第3页
第3页 / 共176页
附录 TMS320C54X汇编语言指令系统Word文档下载推荐.docx_第4页
第4页 / 共176页
附录 TMS320C54X汇编语言指令系统Word文档下载推荐.docx_第5页
第5页 / 共176页
点击查看更多>>
下载资源
资源描述

附录 TMS320C54X汇编语言指令系统Word文档下载推荐.docx

《附录 TMS320C54X汇编语言指令系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《附录 TMS320C54X汇编语言指令系统Word文档下载推荐.docx(176页珍藏版)》请在冰豆网上搜索。

附录 TMS320C54X汇编语言指令系统Word文档下载推荐.docx

ADDCSmem,src

src=src+Seme+C

带进位加法

ADDM#lk,Smem

Smem=Smem+#lk

长立即数加至存储器

ADDSSmem,src

src=src+uns(Smem)

符号位不扩展的加法

整数分有符号数和无符号数两种格式,表示有符号数时,其最高位表示符号,最高位为0表示其为正数,1表示为负数;

无符号数其最高位仍做为数值位计算。

例如,有符号数能够表示的最大的正数为07FFFh,等于32767,而0FFFFH表示最大的负数–1;

无符号数不能表示负数,它能够表示的最大的数为0FFFFh,等于十进制数的65535。

小数符号和上面整数的表示一样,但必须注意如何安排小数点的位置。

2.减法指令

减法指令共有13条,见表1.1.2所示。

表1.1.2减法指令

SUBSmem,src

src=src-Smem

从累加器中减去操作数

SUBSmem,TS,src

src=src-Smem<

从累加器中减去移位后的操作数

SUBSmem,16,scr[,dst]

dst=dst-Smem<

从累加器中减去左移16位后的操作数

SUBSmem[,SHIFT],src[,dst]

dst=src-Smem<

操作数移位后与累加器相减

SUBXmem,SHFT,src

src=src-Xmem<

SUBXmem,Ymem,dst

16-Ymem<

两个操作数分别左移16位后相减

SUB#lk[,SHFT],src[,dst]

dst=dst-#lk<

长立即数移位后与累加器相减

SUB#lk,16,src[,dst]

dst=src-#lk<

长立即数左移16位后与累加器相减

SUBsrc,[,SHIFT][,dst]

dst=dst-src<

源累加器移位后与目的累加器相减

SUBsrc,ASM[,dst]

源累加器按ASM移位后与目的累加器相减

SUBBSmem,src

src=src-Smem-C

从累加器中减去带借位减操作数

SUBCSmem,src

if(src-Smem<

15)≥0

src=(src-Smem<

15)<

1+1

elsesrc=src<

有条件减法

SUBSSmem,src

src=src-uns(Smem)

符号位不扩展的减法

3.乘法指令

乘法指令共有10条,见表1.1.3。

表1.1.3乘法指令

MPYSmem,dst

dst=T*Smem

T寄存器值与操作数相乘

MPYRSmem,dst

dst=rnd(T*Smem)

T寄存器值与操作数相乘(带舍入)

MPYXmem,Ymem,dst

dst=Xmem*Ymem,T=Xmem

两个操作数相乘

续表

MPYSmem,#lk,dst

dst=Smem*#lk,T=Smem

长立即数与操作数相乘

MPY#1k,dst

dst=T*#lk

长立即数与T寄存器值相乘

MPYAdst

dst=T*A(32~16)

T寄存器与累加器A高位相乘

MPYASmem

B=Smem*A(32~16),T=Smem

操作数与累加器A高位相乘

MPYUSmem,dst

dst=uns(T)*uns(Smem)

无符号数乘法

SQURSmem,dst

dst=Smem*Smem,T=Smem

操作数的平方

SQURA,dst

dst=A(32~16)*A(32~16)

累加器A高位的平方

4.乘加和乘减指令

乘加和乘减指令共有22条,见表1.1.4所示。

表1.1.4乘加和乘减指令

MACSmem,src

src=src+T*Smem

操作数与T寄存器值相乘后加至累加器

MACXmem,Ymem,src[,dst]

dst=src+Xmem*Ymem

T=Xmem

两个操作数相乘后加至累加器

MAC#lk,src[,dst]

dst=src+T*#lk

长立即数与T寄存器值相乘后加至累加器

MACSmem,#lk,src[,dst]

dst=src+Smem*#lk

T=Smem

长立即数与操作数相乘后加至累加器

MACRSmem,src

dst=rnd(src+T*Smem)

操作数与T寄存器值相乘后加至累加器(带舍入)

MACRXmem,Ymem,src[,dst]

dst=rnd(src+Xmem*Ymem)

两个操作数相乘后加至累加器(带舍入)

MACASmem[,B]

B=B+Smem*A(32~16)

操作数与累加器A高位相乘后加至累加器B

MACAT,src[,dst]

dst=src+T*A(32~16)

T寄存器值与累加器A高位相乘

MACARSmem[,B]

B=rnd(B+Smem*A(32~16))

T值与累加器A高位相乘后加至累加B(带舍入)

MACART,src[,dst]

dst=rnd(src+T*A(32~16))

A高位与T值相乘后与源累加器相加(带舍入)

MACDSmem,pmad,src

src=src+Smem*pmad

T=Smem,(Smem+1)=Smem

操作数与程序存储器值相乘后累加并延迟

3

MACPSmem,pmad,src

Src=src+Smem*pmad

T=Smem

操作数与程序存储器值相乘后加至累加器

MACSUXmem,Ymem,src

src=src+uns(Xmem)*Ymem

T=Xmem

无符号数与有符号数相乘后加至累加器

MASSmem,src

src=src-T*Smem

从累加器中减去T寄存器值与操作数的乘积

MASRXmem,Ymem,src[,dst]

dst=rnd(src-Xmem*Ymem)

从累加器中减去两操作数的乘积(带舍入)

MASXmem,Ymem,src[,dst]

dst=src-Xmem*Ymem

从源累加器中减去两操作数的乘积

MASRSmem,src

src=rnd(src-T*Smem)

从累加器中减去T值与操作数的乘积(带舍入)

MASASmem[,B]

B=B-Smem*A(32~16)

从累加器B中减去操作数与累加器A高位的乘积

MASAT,src[,dst]

dst=src-T*A(32~16)

从源累加器中减去T寄存器值与累加器A高位乘积

MASART,src[,dst]

dst=rnd(src-T*A(32~16))

从源中减去T寄存器值与累加器A高位乘积(带舍入)

SQURASmem,src

src=src+Smem*Smem

操作数平方并累加

SQURSSmem,src

src=src-Smem*Smem

从累加器中减去操作数的平方

5.双操作数指令

双操作数指令共有6条,见表1.1.5所示。

表1.1.5双操作数指令

DADDLmem,src[,dst]

ifC16=0,dst=Lmem+src

ifC16=1

dst(39~16)=Lmem(31~16)+src(31~16)

dst(15~0)=Lmem(150)+src(15~0)

双精度/双16位数加至累加器

DADSTLmem,dst

ifC16=0,dst=Lmem+(T<

16+T)

dst(39~16)=Lmem(31~16)+T

dst(15~0)=Lmem(15~0)-T

双精度/双16位数与T寄存器值相加/减

DRSUBLmem,src

ifC16=0,src=Lmem-src

src(39~16)=Lmem(31~16)-src(31~16)

src(15~0)=Lmem(15~0)-src(15~0)

双精度/双6位数中减去累加器值

DSADTLmem,dst

IC16=0,dst=Lmem-(T<

IfC16=1

dst(39~16)=Lmem(31~16)-T

dst(15~0)=Lmem(15~0)+T

长操作数与T寄存器值相加减

DSUBLmem,src

IfC16=0,src=src-Lmem

src(39~16)=src(31~16)-Lmem(31~16)

src(15~0)=src(15~0)-Lmem(15~0)

从累加器中减去双精度/双16位数

DSUBTLmem,dst

IfC16=0,dst=Lmem-(T<

从长操作数中减去T寄存器值

6.特殊应用指令

特殊应用指令共有15条,见表1.1.6所示。

表1.1.6特殊应用指令

ABDSTXmem,Ymem

B=B+|A(32~16)|,

A=(Xmem–Ymem)<

绝对距离

ABSsrc[,dsst]

dst=|src|

累加器值取绝对值

CMPLsrc[,dst]

dst=src

累加器取反

DELAYSmem

(Smem+1)=Smem

存储器单元延迟

EXPsrc

T=numberofsignbits(src)–8

求累加器中数据的指数

FIRSXmem,Ymem.pmand

B=B+A*pamd,A=(Xmem+Ymem)<

对称FIR滤波

LMSXmem,Ymem

B=B+Xmem*Ymem,A=(A+Xmem<

16)+215

求最小均方值

MAXdst

dst=max(A,B)

求累加器(A,B)最大值

MINdst

dst=min(A,B)

求累加器(A,B)最小值

NEGsrc[,dst]

dst=-src

NORMsrc[,dst]

dst=src<

TS,dst=norm(src,TS)

归一化

PLOYSmem

B=Smem<

16,A=rnd(A*T+B)

求多项式的值

RNDsrc[,dst]

dst=src+215

累加器四舍五入运算

SATsrc

saturate(src)

累加器饱和运算

SQDSTXmem,Ymem

B=B+A(32~16)*A(32~16),A=(Xmem-Ymem)<

求两点距离的平方

Ⅱ、逻辑运算指令

逻辑运算指令包括与指令(AND),或指令(OR),异或指令(XOR),移位指令(ROL)和测试指令(BITF)。

1.与指令

与指令共5条,见表2.2.1。

表2.2.1与指令

ANDSmem,src

src=src&

Smem

操作数与累加器相与

AND#lk[,SHFT],src[,dst]

dst=src&

#lk<

长立即数移位后与累加器相与

AND#lk,16,src[,dst]

长立即数左移16位后与累加器相与

ANDsrc[,SHIFT][,dst]

dst=dst&

src<

源累加器移位后与目的累加器相与

ANDM#lk,Smem

Smem=Smem&

#lk

操作数与长立即数相与

2.或指令

或指令共5条,见表2.2.2。

表2.2.2或指令

ORSmem,src

src=src|Smem

操作数与累加器相或

OR#lk[,SHFT],src[,dst]

dst=src|#lk<

长操作数移位后与累加器相或

OR#lk16,src[,dst]

长操作数左移16位后与累加器相或

ORsrc[,SHIFT][,dst]

dst=dst|src<

源累加器移位后和目的累加器相或

ORM#lk,Smem

Smem=Smem|#lk

操作数和长立即数相或

3.异或指令

异或指令共5条,见表2.2.3。

表2.2.3异或指令

XORSmem,src

src=src∧Smem

操作数和累加器相异或

XOR#lk[,SHFT],src[,dst]

dst=src∧#lk<

长立即数移位后和累加器相异或

XOR#lk,16,src[,dst]

长立即数左移16位后和累加器相异或

XORsrc[,SHIFT][,dst]

dst=dst∧src<

源累加器移位后和目的累加器相异或

XORM#lk,Smem

Smem=Smem∧#lk

操作数和长立即数相异或

4.移位指令

移位指令共6条,见表2.2.4。

表2.2.4移位指令

ROLsrc

Rotateleftwithcarryin

累加器经进位位循环左移

ROLTCsrc

RotateleftwithTCin

累加器经TC位循环左移

RORsrc

Rotaterightwithcarryin

累加器经进位位循环右移

SFTAsrc,SHIFT[,dst]

SHIFT{arithmeticshift}

累加器算术移位

SFTCsrc

ifsrc(31)=src(30)thensrc=src<

l

累加器条件移位

SFTLsrc,SHIFT[,dst]

SHIFT{logicalshift}

累加器逻辑移位

5.测试指令

测试指令共5条,见表见表2.2.5。

表2.2.5测试指令

BITXmem,BITC

TC=Xmem(15-BITC)

测试指定位

BITFSmem,#lk

TC=(Smem&

#lk)

测试由立即数指定的位

BITTSmem

TC=Smem(15-T(3-0))

测试由T寄存器指定的位

CMPMSmem,#lk

TC=(Smem==#lk)

存储单元与长立即数比较

CMPRCC,ARx

CompareARxwithAR0

辅助寄存器ARx与AR0比较

Ⅲ、程序控制指令

程序控制指令包括分支指令(B,BC),调用指令(CALL),中断指令(INTR,TRAP),返回指令(RET),重复指令(RPT),堆栈操作指令(FRAME,POP),其它程序控制指令(IDLE,NOP)。

分别例于下列表中。

1.分支指令

分支指令共6条,见表3.3.1。

表3.3.1分支指令

B[D]pmad

PC=pmad(15~0)

无条件分支转移

4/[2*]

BACC[D]src

PC=src(15~0)

按累加器规定地址转移

6/[4*]

BANZ[D]pmad,Sind

if(Sind(s)≠0)

thenPC=pmad(15~0)

辅助寄存器不为0转移

4‡/2§

/[2*]

BC[D]pmad,cond[cond[,cond]]

if(cond(s))

条件分支转移

5‡/3§

/[3*]

FB[D]extpmad

PC=pmad(15~0),

XPC=pmad(22~16)

无条件远程分支转移

FBACC[D]src

PC=src(15~0),

XPC=src(22~16)

按累加器的地址远程分支转移

‡条件为真,§

条件为假,*延迟指令

2.调用指令

调用指令共5条,见表3.3.2。

表3.3.2调用指令

CALA[D]src

--SP=PC

按累加器的地址调子程序

CALL[D]pmad

--SP=PC

无条件调用子程序

4/[2§

]

CC[D]pmad,cond[cond[,cond]]

if(cond(s))then--SP=PCPC=pmad(15~0)

有条件调用子程序

FCALA[D]src

--SP=PC,--SP=XPC

按累加器的远程调子程序

FCALL[D]extpmad

无条件远程调用子程序

4[2*]

3.中断指令

中断指令有2条,见下表。

表3.3.3中断指令

INTRK

PC=IPTR(15~7)+K<

INTM=1

非屏蔽软件中断,关闭其他可屏蔽中断

TRAPK

非屏蔽软件中断,不影响INTM位

4.返回指令

返回指令共有6条,见下表。

表3.3.4返回指令

FRET[D]

XPC=SP++,PC=SP++

远程返回

FRETE[D]

XPC=SP++,PC=SP++

INTM=0

开中断,从远程中断返回

RC[D]cond[,cond[,cond]]

If(cond(s))thenPC=SP++

条件返回

RET[D]

PC=SP++

返回

5/[3*]

RETE[D]

PC=SP++,INTM=0

开中断,从中断返回

RETF[D]

PC=RTN,SP++,INTM=0

开中断,从中断快速返回

3/[1*]

5.重复指令

重复指令共5条,见下表。

表3.3.5重复指令

RPTSmem

重复执行一条指令,RC=Smem

重复执行下条

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1