版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章
TMS320C54x的指令系统3.4TMS320C54x指令系统概述
C54x的助记符指令由操作码和操作数组成。
例如:
LD
#0FFH,A
;将立即数0FFH传送至A
操作码源操作数目的操作数注释3.4.1指令系统中的符号和缩写表3-1指令系统中的符号和缩写表3-1指令系统中的符号和缩写(续1)表3-1指令系统中的符号和缩写(续2)表3-1指令系统中的符号和缩写(续3)表3-1指令系统中的符号和缩写(续4)3.4.2指令系统中的运算符
TMS320C54x汇编器使用与C语言相似的优先级表3-2指令系统中的运算符号和运算优先级序号符号运算功能求值顺序1+-~!取正、取负、按位求补、逻辑负
从右至左2*/%乘法、除法、求模从左至右3+-加法、减法从左至右4^指数
从左到右
5<<>>左移、右移从左至右6<小于、小于等于从左至右7>大于、大于等于从左至右8!=不等于从左至右9&按位与运算从左至右10∧
按位异或运算从左至右11|按位或运算从左至右3.4.3汇编指令介绍算数运算指令逻辑运算指令程序控制指令装载和存储(数据传送)指令
TMS320C54x的指令系统共有129条基本指令,由于操作数的寻址方式不同,又可派生至205条指令。按功能分为如下几类:算术运算指令加法指令(ADD、ADDC、ADDM、ADDS)减法指令(SUB、SUBB、SUBC、SUBS)乘法指令(MPY[R]、MPYA、MPYU、SQUR)乘累加指令(MAC[R]、MACA[R]、MACD、MACP、MACSU、
SQURA、MAS[R]、MASA[R]、SQURS)乘减指令(MASA)双字/双精度指令(DADD、DADST、DRSUB、DSADT)特殊操作指令(ABDST、ABS、CMPL、DELAY、EXP、MAX、
MIN、POLY、SAT、RND、SQDST、FIRS、
LMS、NEG、NORM)加法指令共4条:ADD、ADDC、ADDM、ADDS加法指令功能:把一个16bit数加到选定累加器dst[src]中加法指令该指令受SXM和OVM影响,且影响C和OVdst(OVsrc)加法指令举例例3.45ADD*AR3+,14,ADataMemory加法指令举例例3.47ADD#456BH,8,A,B
例3.46ADDA,-8,B加法指令功能:把16bit的Smem和进位位C的值加到src中加法指令举例例3.48ADDC*+AR2(5),A加法指令功能:16bit的Smem与16bit立即数1k相加,结果放在Smem中。加法指令举例例3.49ADDM#0123BH,*AR4+DataMemory例3.50
ADDM,#0FFF8H,*AR4+DataMemory加法指令举例加法指令功能:把无符号16bit的Smem加到src中加法指令举例例3.51ADDS*AR2-,BDataMemory减法指令减法指令(续)共4条:SUB、SUBB、SUBC、SUBS功能:从选定累加器或双Xmem中减去一个16bit值,结果放在dst[src]例3.52
SUB*AR1+,14,A
DataMemory减法指令举例例3.53SUBA,-8,B
减法指令举例例3.54
SUB#12345,8,A,B减法指令举例减法指令功能:从源累加器中减去Smem的值和进位位C的逻辑反例3.55SUBBDAT5,ADataMemory减法指令举例例3.56
SUBB*AR1+,BDataMemory减法指令举例减法指令功能:16bit的Smem左移15bit,再从src中减去移位后的值。若结果大于0,则结果左移一位加上1,放入src中;否则只把src的值左移一位,放入src中。例3.57
SUBCDAT2,ADataMemory减法指令举例例3.58
RPT#25SUBC*AR1,BDataMemory减法指令举例减法指令功能:从源累加器src中减去16bit无符号Smem的值。例3.59SUBS*AR2-,B
DataMemory减法指令举例乘法指令共4条:MPY[R]、MPYA、MPYU、SQUR功能:T寄存器的值或一个数据存储器值与另一个数据存储器的值或一个立即数相乘,结果放入dst。在读操作数阶段把Smem或Xmem的值装入T寄存器中。该指令受FRCT和OVM的影响,并能影响OVdst。例3.60
MPYDAT13,ADataMemory乘法指令举例例3.62
MPY#0FFFEH,A
乘法指令举例乘法指令功能:A的高位与Smem或T寄存器的值相乘,结果放dst或B中。在读操作数期间把Smem装入T寄存器。例3.63
MPYA*AR2
DataMemory乘法指令举例例3.64
MPYAB
乘法指令举例乘法指令功能:无符号T寄存器值与无符号Smem相乘,结果放入dst。例3.65MPYU*AR0-,ADataMemory乘法指令举例乘法指令功能:Smem或累加器A的高位平方后,结果放在dst中。例3.67SQURA,B乘法指令举例乘加和乘减指令乘加和乘减指令共9条:乘-加:MAC[R]、MACA[R]、MACD、MACP、MACSU、SQURA乘-减:MAS[R]、MASA[R]、SQURS乘加和乘减指令功能:完成乘和累加运算,并可进行凑整,结果放dst/src中。乘加和乘减指令该指令受FRCT和OVM的影响,并能影响OVdst。例3.68MAC*AR5+,ADataMemory乘-累加指令举例例3.69MAC#345H,A,B
乘-累加指令举例DataMemory乘-累加指令举例例3.71MAC*AR5+,*AR6+,A,B乘加和乘减指令功能:A的高位与Smem或T寄存器中的内容相乘,乘积加到累加器B中或src中。例3.73MACAT,B乘-累加指令举例DataMemory乘-累加指令举例例3.74MACAR*AR5+,B
乘加和乘减指令功能:Smem与pmad相乘,乘积和src值相加,结果放src中。并把Smem装入下一数据单元和T寄存器。ProgramMemory乘-累加指令举例例3.75MACD*AR3–,COEFFS,A乘加和乘减指令功能:Smem与pmad相乘,乘积和src相加,结果放src中。同时把Smem复制到T寄存器中。ProgramMemory乘-累加指令举例例3.76MACP*AR3-,COEFFS,A
乘加和乘减指令功能:无符号Xmem与带符号Ymem相乘,乘积与src相加,结果放src中。同时把Xmem存入T寄存器。例3.77MACSU*AR4+,*AR5+,A乘-累加指令举例乘加和乘减指令功能:对Smem求平方并加到src中;同时Smem放到T寄存器中。例3.84SQURA*AR3+,ADataMemory乘-累加指令举例乘加和乘减指令功能:Xmem在读操作数阶段装入到T寄存器中;一个存储器操作数与T寄存器内容相乘,或两个存储器操作数相乘,再从src或dst中减去该乘积,结果存放src或dst中。例3.78MAS*AR5+,ADataMemory乘-减指令举例例3.80MASR*AR5+,*AR6+,A,B乘-减指令举例DataMemory乘-减指令举例例3.81MASA*AR5+例3.81MASA*AR5+,B例3.82MASAT,B乘-减指令举例例3.85SQURSDAT9,A
乘-减指令举例双精度指令共6条:DADD、DADST、DRSUB、DSADT、DSUB、DSUBTDataMemory双字算数运算指令举例例3.86DADD*AR3+,A,BDataMemory双字算数运算指令举例例3.90DRSUB*AR3+,A例3.94DSUB*AR3+,A
DataMemory双字算数运算指令举例例3.95DSUB*AR3-,A
双字算数运算指令举例专用指令共15条:ABDST、ABS、CMPL、DELAY、EXP、MAX、MIN、POLY、SAT、RND、SQDST、FIRS、
LMS、
NEG、
NORM逻辑运算指令与指令(AND、ANDM)或指令(OR、ORM)异或指令(XOR、XORM)移位指令(ROL、ROLTC、ROR、SFTA、SFTC、SFTL)测试指令(BIT、BITF、BITT、CMPM、CMPR)与逻辑运算指令共2条:AND、ANDM例3.121ANDA,3,B与指令举例例3.122ANDM#00FFh,*AR4+DataMemory与指令举例或逻辑运算指令共2条:OR、ORM例3.123ORA,3,B或指令举例例3.124
ORM0404H,*AR4+DataMemory或指令举例异或逻辑运算指令共2条:XOR、XORM例3.126XORA,3,B例3.125XOR*AR3+,A异或指令举例例3.127XORM#0404H,*AR4-DataMemory异或指令举例移位指令共6条:ROL、ROLTC、ROR、SFTA、SFTC、SFTL例3.128ROLA移位指令举例例3.129ROLTCA移位指令举例例3.130RORA移位指令举例例3.131SFTAA,-5,B例3.132SFTAB,+5移位指令举例例3.133SFTCA移位指令举例例3.134SFTLA,-5,B例3.135SFTLB,+5移位指令举例测试指令共5条:BIT、BITF、BITT、CMPM、CMPR例3.136BIT*AR5+,3;testbit12DataMemory测试指令举例例3.137BITFDAT5,#00FFHDataMemory测试指令举例例3.138BITT*AR7+0DataMemory测试指令举例例3.139CMPM*AR4+,#0404HDataMemory测试指令举例例3.140CMPR2,AR4测试指令举例程序控制指令分支转移指令(B[D]、BACC[D]、BANZ[D]、BC[D]、FB[D]、FBACC[D])子程序调用指令(CALA[D]、CALL[D]、CC[D]、FCALA[D]、FCALL[D])中断指令(INTR、TRAP)返回指令(FRET[D]、FRETE[D]、RC[D]、RET[D]、RETE[D]、RETF[D])重复指令(RPT、RPTB[D]、RPTZ)堆栈处理指令(FRAME、POPD、POPM、PSHD、PSHM)混合程序控制指令(IDLE、MAR、NOP、RESET、RSBX、SSBX、XC)
分支转移指令功能:指令指针指向指定的pmad(一个符号或数字)。共6条:B[D]、BACC[D]、BANZ[D]、BC[D]、FB[D]、FBACC[D]例3.141BD1000HANDM#4444H,*AR1+
操作数与4444H相与后,程序继续从1000H单元开始执行。分支转移指令举例分支转移指令功能:程序指针PC指向src的低位所确定的16bit地址。例3.142BACCA分支转移指令举例分支转移指令功能:若当前辅助寄存器ARx不为0,则程序指针转移到指定pmad;否则PC指针加2。例3.143BANZ1FFFH,*AR3-分支转移指令举例分支转移指令功能:满足特定条件,指令就转移到pmad上;否则PC加2且紧接着该指令的两个字继续执行例3.144BC1FFFH,AGT分支转移指令举例例3.145BC2000H,AGT例3.146BCD1000H,BOVANDM#4444H,*AR1+注意:存储器单元的数据和#4444H相与后,如果满足OVB就发生转移;否则继续按顺序执行。
分支转移指令举例例3.147BC1000H,TC,NC,BIO分支转移指令举例分支转移指令功能:PC指向由pmad的22~16位决定的页中pmad的15~0位所确定的程序存储器地址。例3.148FB012000H执行过程:(pmad(15-0))→PC (pmad(22-16))→XPC2000H装入PC,01装入XPC,程序继续从单元开始执行。分支转移指令举例分支转移指令功能:把src的22~16位值装入XPC,并让PC指向src的低位所确定的16bit地址。例3.149FBACCDBANDM#4444H*AR1+注意:操作数和#4444H相与后,7FH装入XPC;程序继续从第7FH页的2000H单元开始执行。
子程序调用指令功能:程序指针转移到src的低位所确定的16bit地址单元,返回地址压入栈顶。例3.150CALAADataMemory子程序调用指令举例子程序调用指令功能:程序指针指向确定的pmad,返回地址在pmad装入PC前压入栈顶保存。例3.151CALL5678HDataMemory子程序调用指令举例子程序调用指令功能:满足确定条件时,PC指向pmad;否则PC指针加2。例3.152CCD1111H,BOVANDM#4444H,*AR1+DataMemory子程序调用指令举例子程序调用指令功能:把src的22~16位值装入XPC,PC指向src的低15~0位所确定的16bit地址。例3.153FCALADBANDM#4444H,*AR1+DataMemory
子程序调用指令举例子程序调用指令功能:PC指向pmad的22~16位确定的页中pmad的15~0位所确定的程序存储器地址。返回地址在pmad的低端装入PC前被压入堆栈。例3.154FCALL013333H子程序调用指令举例中断指令功能:程序指针PC指向由K所确定的中断向量,该指令影响INTM和IFR。例3.155INTR3DataMemory中断指令举例中断指令功能:程序指针PC指向由K所确定的中断向量。例3.156TRAP3DataMemory中断指令举例0025PCBeforeInstructionAfterInstructionFFPC
01FFIPTR01FFIPTR1000SP0FFFSP返回指令共6条:FRET[D]、FRETE[D]、RC[D]、RET[D]、RETE[D]、RETF[D]例3.157FRETDataMemory返回指令举例返回指令例3.158FRETE
返回指令举例返回指令例3.159RCAGEQ,ANOV;如果A的值为正,且OVA等于0就返回DataMemory返回指令举例返回指令例3.160RET
DataMemory返回指令举例返回指令例3.161RETE
DataMemory返回指令举例返回指令RIN:快速返回寄存器例3.162RETFDataMemory返回指令举例重复指令功能:指令执行时,首先把循环的次数装入循环计数器(RC)。例3.163RPTDAT127;DAT127等于0FFFHDataMemory重复指令举例例4.164RPT#1111H ;下一条指令循环执行4370次重复指令功能:循环执行一指令块,循环的次数由存储器映射的块循环计数器(BRC)确定。例3.165
STM#99,BRC RPTBend_block-1;end_block-1=BottomofBlock重复指令举例例3.166
STM#99,BRC RPTBDend_block-1MCDMPOINTER,AR1;初始化指针,end_block-1为块底部重复指令举例重复指令功能:对目的累加器dst清0,循环执行下一条指令n+1次。例3.167
RPTZA,#1023;下一条指令重复执行1024次。STLA,*AR2+重复指令举例堆栈操作指令功能:把一短立即数偏移k加到SP中。例3.168FRAME10H堆栈指令举例堆栈操作指令功能:把由SP寻址的数据存储器单元的内容转移到由Smem确定的数据存储器单元中。然后SP执行加1操作。例3.169POPDDAT10DataMemory堆栈指令举例堆栈操作指令功能:把由SP寻址的数据存储器单元的内容转移到指定的存储器映射寄存器MMR中。然后SP执行加1操作。例3.170POPMAR5DataMemory堆栈指令举例堆栈操作指令功能:SP减1后,把存储器单元Smem的内容压入堆栈指针SP指向的数据存储器单元中去。例3.171PSHD*AR3+DataMemory堆栈指令举例堆栈操作指令功能:堆栈指针SP减1后,把MMR中的内容压入到SP所指的数据存储器单元中去。例3.172PSHMBRCDataMemory堆栈指令举例混合程序控制指令例3.173IDLE1
处理器保持空闲状态直到产生一个复位或非屏蔽中断。例3.174IDLE2
处理器保持空闲状态直到产生一个复位或外部非屏蔽中断。例3.175IDLE3
处理器保持空闲状态直到产生一个复位或外部非屏蔽中断。混合程序控制指令
功能:修改由Smem所确定的辅助寄存器的内容例3.176MAR*AR3+混合程序控制指令举例混合程序控制指令功能:该指令除了PC执行加1操作以外不执行任何操作。这在建立流水和执行延迟方面比较有用。混合程序控制指令功能:实现了一个非屏蔽的软件复位例3.178RESET混合程序控制指令举例混合程序控制指令功能:对ST0和ST1的特定位清0。N指明被修改的状态寄存器,SBIT确定被修改的位。例3.179RSBXSXM;SXM的意思是:n=1,SBIT=8混合程序控制指令举例例3.180RSBX1,8混合程序控制指令功能:状态寄存器ST0或ST1的指定位置为1。例3.181SSBXSXM;SXM意味着N=1,SBIT=8混合程序控制指令举例混合程序控制指令功能:该指令的执行是由n的值和所选择的条件决定的。XC1,ALEQMAR*AR1+ADDA,DAT100例3.182如果累加器的值小于或等于0,加法指令执行之前修改AR1。混合程序控制指令举例装载和存储(数据传送)指令一般的装载和存储指令(DLD、LD、LD、LDM等;ST、DST、STH、STL、STM、STLM等)条件存储指令(CMPS、SACCD、SRCCD、STRCD)并行装载和存储指令并行装载和乘法指令并行存储和加、减法指令并行存储和乘法指令混合装载和存储指令装载指令是将存储器内容或立即数送目的寄存器;存储指令是把源累加器或立即数送存储器或寄存器。一般装载指令共7条:DLD、LD、LD、LDM、LDR、LDU、LTDDataMemory因为该指令是一个长操作指令,所以AR3在执行后加2。一般装载指令举例例3.1DLD*AR3+,B例3.2LD*AR1,ADataMemory一般装载指令举例*在所有累加器装入操作中都会受到SXM的影响。例3.3LD*AR1,ABeforeInstructionAfterInstructionDataMemory一般装载指令举例例3.4LD*AR1,TS,BDataMemory一般装载指令举例例3.5LD*AR3+,16,ADataMemory一般装载指令举例例3.6LD*AR3+,TDataMemory一般装载指令举例例3.7LD*AR4,DPDataMemory一般装载指令举例例3.12LDMAR4,A一般装载指令举例例3.14LDU*AR1,ADataMemory一般装载指令举例例3.15LTD*AR3DataMemory一般装载指令举例一般存储指令共6条:DST、ST、STH、STL、STLM、STM例3.16DSTB,*AR3+DataMemory一般存储指令举例例3.18STT,*AR7-DataMemory一般存储指令举例例3.19STHA,DAT10DataMemory一般存储指令举例例3.20STHB,–8,*AR7–一般存储指令举例例3.21STLA,DAT11一般存储指令举例例3.22ST
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 车辆主题探究课程设计
- 课程设计型船
- 国际交流校本课程设计计划
- 2024版空调购销合同模板
- 2024某企业关于提供新能源发电解决方案的合同
- 2024版船舶结构设计服务合同
- 2025年度安全生产标准化信息化建设方案合同3篇
- 2024知名品牌与零售商之间的产品销售合同
- 2024汽车驾驶培训及考试服务合同
- 2024年项目融资合同标的及条件
- 中外美术史试题及答案
- 2025年安徽省铜陵市公安局交警支队招聘交通辅警14人历年高频重点提升(共500题)附带答案详解
- 公共政策分析 课件 第8章政策评估;第9章政策监控
- 人教版八年级上学期物理期末复习(压轴60题40大考点)
- 企业环保知识培训课件
- 2024年度管理评审报告
- 暨南大学《微观经济学》2023-2024学年第一学期期末试卷
- 医药销售合规培训
- DB51-T 5038-2018 四川省地面工程施工工艺标准
- 三年级数学(上)计算题专项练习附答案
- 2024年广东省深圳市中考英语试题含解析
评论
0/150
提交评论