第3.2章 汇编指令DSP教案
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Before Instruction B C AR1 00 0000 0041 X 1000 B C AR1 After Instruction 00 0002 0009 1 1000
Data Memory
1000H 0007 1000H 0007
减法指令
功能:从源累加器src中减去16 bit无符号Smem的值。
例3.49 ADDM #0123BH, *AR4+
Before Instruction AR4 0100 AR4 After Instruction 0101
Data Memory
0100H 0004 0100H 123F
例3.50 ADDM ,#0FFF8H,*AR4+
Before Instruction OVM SXM AR4 1 1 0100 OVM SXM AR4 After Instruction 1 1 0101
例3.55 SUBB DAT5,A
BeforeInstructi n o A C DP 00 0000 00 05 0 008 A C DP AfterInstructi n o FF FFFF FFFF 0 008
Data Memory
0205H 0005 0205 H 0005
例3.56 SUBB *AR1+,B
例3.47 ADD #456BH, 8, A, B
Before Instruction A B C 00 0000 1100 00 0000 1700 1 A B C After Instruction 00 0000 1100 00 0011 E900 0
加法指令
功能:把16 bit的Smem和进位位C的值加到src中
Data Memory
020DH 0006 020DH 0006
例3.62 MPY #0FFFEH,A
Before Instruction A T FRCT 00 0000 1234 2000 0 A T FRCT After Instruction FF FFFF C000 2000 0
乘法指令
Data Memory
0100H 1500 0100H 1500
例3.53 SUB A,-8,B
Before Instruction A B C SXM 00 0000 1200 00 0000 1800 X 1 A B C SXM After Instruction 00 0000 1200 00 0000 17EE 0 1
Data Memory
1000H FE00 1000H FE00
乘法指令
功能:Smem或累加器A的高位平方后,结果放在dst中。
例3.67 SQUR A,B
Before Instruction A B FRCT 00 000F 0000 00 0101 0101 1 A B FRCT After Instruction 00 000F 0000 00 0000 01C2 1
乘加和乘减指令
乘加和乘减指令
共9条:乘-加:MAC[R]、MACA[R]、MACD、MACP、MACSU、SQURA 乘-减:MAS[R]、MASA[R]、SQURS
乘加和乘减指令
功能:完成乘和累加运算,并可进行凑整,结果放dst/src中。
乘加和乘减指令
该指令受FRCT和OVM的影响,并能影响。
AR2
Data Memory
0200H 5555 0200H 5555
例3.64 MPYA B
Before Instruction A B T FRCT FF 8765 1111 00 0000 0320 4567 0 A B T FRCT After Instruction FF 8765 1111 FF DF4D B2A3 4567 0
例3.59 SUBS *AR2-,B
Before Instruction B C AR2 00 0000 0002 X 0100 B C AR2 After Instruction FF FFFF 1114 0 00FF
Data Memory
0100H EEEE 0100H EEEE
乘法指令
共4条:MPY[R]、MPYA、MPYU、SQUR
表3-1 指令系统中的符号和缩写(续2)
表3-1 指令系统中的符号和缩写(续3)
表3-1 指令系统中的符号和缩写(续4)
3.4.2 指令系统中的运算符
TMS320C54x汇编器使用与C语言相似的优先级
表3-2 指令系统中的运算符号和运算优先级 序号
1 2 3 4
符 号
+-~! * /% + ^
功能:T寄存器的值或一个数据存储器值与另一个数据存储器的值或一个立即数相 乘,结果放入dst。在读操作数阶段把Smem或Xmem的值装入T寄存器中。
该指令受FRCT和OVM的影响,并能影响OVdst。
例3.60 MPY DAT13,A
BeforeInstructi n o A T FRCT DP 00 0000 0033 0006 1 008 A T FRCT DP AfterInstructi n o 00 0000 0048 0006 1 008
乘累加指令(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)
Before Instruction B C OVM AR1 FF 8000 0006 1 1 0405 B C OVM AR1 After Instruction FF 8000 0000 1 1 0406
Data Memory
0405H 0006 0405H 0006
减法指令
功能:16 bit的Smem左移15 bit,再从src中减去移位后的值。若结果大于0, 则结果左移一位加上1,放入src中;否则只把src的值左移一位,放入src中。
例3.68 MAC *AR5+,A
BeforeInstructi n o A T FRCT AR5 00 0000 1000 0400 0 0100 A T FRCT AR5 AfterInstructi n o 00 0044 5400 0400 0 0101
Data Memory
0100H 1111 0100H 1111
加法指令
共4条:ADD、ADDC、ADDM、ADDS
加法指令
功能:把一个16 bit数加到选定累加器dst[src]中
加法指令
该指令受SXM和OVM影响,且影响C和OVdst(OVsrc)
例3.45 ADD *AR3+,14,A
Before Instruction A C AR3 SXM 00 0000 11FF 1 0100 1 A C AR3 SXM After Instruction 00 0500 11FF 0 0101 1
例3.48 ADDC *+AR2(5), A
Before Instruction A C AR2 00 0000 0011 1 0100 A C AR2 After Instruction 00 0000 0016 0 0105
0105H
0004
0105H
0004
加法指令
功能:16 bit的Smem与16 bit立即数1k相加,结果放在Smem中。
例3.57 SUBC DAT2,A
BeforeInstructi n o A C DP 00 0000 0004 X 006 A C DP AfterInstructi n o 00 0000 0008 0 006
Data Memory
0202H 0001 0202H 0001
例3.58 RPT #25 SUBC *AR1,B
例3.54 SUB #12345,8,A,B
Before Instruction A B C SXM 00 0000 1E00 00 0000 1800 X 1 A B C SXM After Instruction 00 0000 1E00 FF FFCF D900 0 1
减法指令
功能:从源累加器中减去Smem的值和进位位C的逻辑反
乘法指令
功能:无符号T寄存器值与无符号Smem相乘,结果放入dst。
例3.65 MPYU *AR0-,A
BeforeInstructi n o A T FRCT AR0 FF 8000 0000 4000 0 1000 A T FRCT AR0 AfterInstructi n o 00 3F80 0000 4000 0 0FFF
第3章 TMS320C54x的指令系统
3.4 TMS320C54x指令系统概述
C54x的助记符指令由操作码和操作数组成。
例如: LD #0FFH, A ;将立即数0FFH传送至A
操作码
源操作数
目的操作数
注释
3.4.1 指令系统中的符号和缩写
表3-1 指令系统中的符号和缩写
表3-1 指令系统中的符号和缩写(续1)
Data Memory
0100H F006 0100H F006
减法指令
减法指令(续)
共4条:SUB、SUBB、SUBC、SUBS
功能:从选定累加器或双Xmem中减去一个16 bit值,结果放在dst[src]
例3.52 SUB *AR1+,14,A
Before Instruction A C SXM AR1 00 0000 1200 X 1 0100 A C SXM AR1 After Instruction FF FAC0 1200 0 1 0101
功能:A的高位与Smem或T寄存器的值相乘,结果放dst或B中。在读操作数期间把 Smem装入T寄存器。
例3.63 MPYA *AR2
Before Instruction A B T FRCT FF 5678 1111 00 0000 0320 1234 0 0200 A B T FRCT AR2 After Instruction FF 5678 1111 FF C77D 8DD 5555 0 0200
Data Memory
0100H 1400 0100H 1400
例3.46 ADD A,-8, B
Before Instruction A B C 00 0000 1100 00 0000 1700 1 A B C
After Instruction
00 0000 1100 00 0000 1711 0
运算功能
取正、取负、按位求补、逻辑负 乘法、除法、求模
加法、减法 指数
求值顺序
从右至左 从左至右 从左至右
从左到右
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)
例3.69 MAC #345H,A,B
Before Instruction A B T FRCT 00 0000 1000 00 0000 0000 0400 1 A B T FRCT
After Instruction 00 0000 1000 00 001A 3800 0400 1
Data Memory
0100H 7008 0100H 7000
加法指令
功能:把无符号 16 bit的Smem加到src中
例3.51 ADDS *AR2-,B
Before Instruction B C AR2 00 0000 0001 X 0100 B C AR2 After Instruction 00 0000 F007 0 00FF
Data Memory
1000H 0007 1000H 0007
减法指令
功能:从源累加器src中减去16 bit无符号Smem的值。
例3.49 ADDM #0123BH, *AR4+
Before Instruction AR4 0100 AR4 After Instruction 0101
Data Memory
0100H 0004 0100H 123F
例3.50 ADDM ,#0FFF8H,*AR4+
Before Instruction OVM SXM AR4 1 1 0100 OVM SXM AR4 After Instruction 1 1 0101
例3.55 SUBB DAT5,A
BeforeInstructi n o A C DP 00 0000 00 05 0 008 A C DP AfterInstructi n o FF FFFF FFFF 0 008
Data Memory
0205H 0005 0205 H 0005
例3.56 SUBB *AR1+,B
例3.47 ADD #456BH, 8, A, B
Before Instruction A B C 00 0000 1100 00 0000 1700 1 A B C After Instruction 00 0000 1100 00 0011 E900 0
加法指令
功能:把16 bit的Smem和进位位C的值加到src中
Data Memory
020DH 0006 020DH 0006
例3.62 MPY #0FFFEH,A
Before Instruction A T FRCT 00 0000 1234 2000 0 A T FRCT After Instruction FF FFFF C000 2000 0
乘法指令
Data Memory
0100H 1500 0100H 1500
例3.53 SUB A,-8,B
Before Instruction A B C SXM 00 0000 1200 00 0000 1800 X 1 A B C SXM After Instruction 00 0000 1200 00 0000 17EE 0 1
Data Memory
1000H FE00 1000H FE00
乘法指令
功能:Smem或累加器A的高位平方后,结果放在dst中。
例3.67 SQUR A,B
Before Instruction A B FRCT 00 000F 0000 00 0101 0101 1 A B FRCT After Instruction 00 000F 0000 00 0000 01C2 1
乘加和乘减指令
乘加和乘减指令
共9条:乘-加:MAC[R]、MACA[R]、MACD、MACP、MACSU、SQURA 乘-减:MAS[R]、MASA[R]、SQURS
乘加和乘减指令
功能:完成乘和累加运算,并可进行凑整,结果放dst/src中。
乘加和乘减指令
该指令受FRCT和OVM的影响,并能影响。
AR2
Data Memory
0200H 5555 0200H 5555
例3.64 MPYA B
Before Instruction A B T FRCT FF 8765 1111 00 0000 0320 4567 0 A B T FRCT After Instruction FF 8765 1111 FF DF4D B2A3 4567 0
例3.59 SUBS *AR2-,B
Before Instruction B C AR2 00 0000 0002 X 0100 B C AR2 After Instruction FF FFFF 1114 0 00FF
Data Memory
0100H EEEE 0100H EEEE
乘法指令
共4条:MPY[R]、MPYA、MPYU、SQUR
表3-1 指令系统中的符号和缩写(续2)
表3-1 指令系统中的符号和缩写(续3)
表3-1 指令系统中的符号和缩写(续4)
3.4.2 指令系统中的运算符
TMS320C54x汇编器使用与C语言相似的优先级
表3-2 指令系统中的运算符号和运算优先级 序号
1 2 3 4
符 号
+-~! * /% + ^
功能:T寄存器的值或一个数据存储器值与另一个数据存储器的值或一个立即数相 乘,结果放入dst。在读操作数阶段把Smem或Xmem的值装入T寄存器中。
该指令受FRCT和OVM的影响,并能影响OVdst。
例3.60 MPY DAT13,A
BeforeInstructi n o A T FRCT DP 00 0000 0033 0006 1 008 A T FRCT DP AfterInstructi n o 00 0000 0048 0006 1 008
乘累加指令(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)
Before Instruction B C OVM AR1 FF 8000 0006 1 1 0405 B C OVM AR1 After Instruction FF 8000 0000 1 1 0406
Data Memory
0405H 0006 0405H 0006
减法指令
功能:16 bit的Smem左移15 bit,再从src中减去移位后的值。若结果大于0, 则结果左移一位加上1,放入src中;否则只把src的值左移一位,放入src中。
例3.68 MAC *AR5+,A
BeforeInstructi n o A T FRCT AR5 00 0000 1000 0400 0 0100 A T FRCT AR5 AfterInstructi n o 00 0044 5400 0400 0 0101
Data Memory
0100H 1111 0100H 1111
加法指令
共4条:ADD、ADDC、ADDM、ADDS
加法指令
功能:把一个16 bit数加到选定累加器dst[src]中
加法指令
该指令受SXM和OVM影响,且影响C和OVdst(OVsrc)
例3.45 ADD *AR3+,14,A
Before Instruction A C AR3 SXM 00 0000 11FF 1 0100 1 A C AR3 SXM After Instruction 00 0500 11FF 0 0101 1
例3.48 ADDC *+AR2(5), A
Before Instruction A C AR2 00 0000 0011 1 0100 A C AR2 After Instruction 00 0000 0016 0 0105
0105H
0004
0105H
0004
加法指令
功能:16 bit的Smem与16 bit立即数1k相加,结果放在Smem中。
例3.57 SUBC DAT2,A
BeforeInstructi n o A C DP 00 0000 0004 X 006 A C DP AfterInstructi n o 00 0000 0008 0 006
Data Memory
0202H 0001 0202H 0001
例3.58 RPT #25 SUBC *AR1,B
例3.54 SUB #12345,8,A,B
Before Instruction A B C SXM 00 0000 1E00 00 0000 1800 X 1 A B C SXM After Instruction 00 0000 1E00 FF FFCF D900 0 1
减法指令
功能:从源累加器中减去Smem的值和进位位C的逻辑反
乘法指令
功能:无符号T寄存器值与无符号Smem相乘,结果放入dst。
例3.65 MPYU *AR0-,A
BeforeInstructi n o A T FRCT AR0 FF 8000 0000 4000 0 1000 A T FRCT AR0 AfterInstructi n o 00 3F80 0000 4000 0 0FFF
第3章 TMS320C54x的指令系统
3.4 TMS320C54x指令系统概述
C54x的助记符指令由操作码和操作数组成。
例如: LD #0FFH, A ;将立即数0FFH传送至A
操作码
源操作数
目的操作数
注释
3.4.1 指令系统中的符号和缩写
表3-1 指令系统中的符号和缩写
表3-1 指令系统中的符号和缩写(续1)
Data Memory
0100H F006 0100H F006
减法指令
减法指令(续)
共4条:SUB、SUBB、SUBC、SUBS
功能:从选定累加器或双Xmem中减去一个16 bit值,结果放在dst[src]
例3.52 SUB *AR1+,14,A
Before Instruction A C SXM AR1 00 0000 1200 X 1 0100 A C SXM AR1 After Instruction FF FAC0 1200 0 1 0101
功能:A的高位与Smem或T寄存器的值相乘,结果放dst或B中。在读操作数期间把 Smem装入T寄存器。
例3.63 MPYA *AR2
Before Instruction A B T FRCT FF 5678 1111 00 0000 0320 1234 0 0200 A B T FRCT AR2 After Instruction FF 5678 1111 FF C77D 8DD 5555 0 0200
Data Memory
0100H 1400 0100H 1400
例3.46 ADD A,-8, B
Before Instruction A B C 00 0000 1100 00 0000 1700 1 A B C
After Instruction
00 0000 1100 00 0000 1711 0
运算功能
取正、取负、按位求补、逻辑负 乘法、除法、求模
加法、减法 指数
求值顺序
从右至左 从左至右 从左至右
从左到右
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)
例3.69 MAC #345H,A,B
Before Instruction A B T FRCT 00 0000 1000 00 0000 0000 0400 1 A B T FRCT
After Instruction 00 0000 1000 00 001A 3800 0400 1
Data Memory
0100H 7008 0100H 7000
加法指令
功能:把无符号 16 bit的Smem加到src中
例3.51 ADDS *AR2-,B
Before Instruction B C AR2 00 0000 0001 X 0100 B C AR2 After Instruction 00 0000 F007 0 00FF