第 4 章 TMS320C54x 汇编指令系统

60
第4第 TMS320C54x 第第第第第 4.1 第第第 第第第第第第第 4.2 第第第

description

第 4 章 TMS320C54x 汇编指令系统. 4.1 指令系统中的符号和缩写 4.2 指令系统. 4.1 指令系统中的符号和缩写. 表4-1 指令系统中的符号和缩写. 返回首页. 返回本节. 4.2 指令系统. 4.2.1 算术运算指令 4.2.2 逻辑运算指令 4.2.3 程序控制指令 4.2.4 加载和存储指令. 返回首页. 4.2.1 算术运算指令. - PowerPoint PPT Presentation

Transcript of 第 4 章 TMS320C54x 汇编指令系统

Page 1: 第 4 章 TMS320C54x 汇编指令系统

第 4 章 TMS320C54x 汇编指令系统

4.1 指令系统中的符号和缩写

4.2 指令系统

Page 2: 第 4 章 TMS320C54x 汇编指令系统

4.1 指令系统中的符号和缩写表 4-1 指令系统中的符号和缩写

返回首页

Page 3: 第 4 章 TMS320C54x 汇编指令系统
Page 4: 第 4 章 TMS320C54x 汇编指令系统
Page 5: 第 4 章 TMS320C54x 汇编指令系统
Page 6: 第 4 章 TMS320C54x 汇编指令系统

返回本节

Page 7: 第 4 章 TMS320C54x 汇编指令系统

4.2 指令系统

4.2.1 算术运算指令

4.2.2 逻辑运算指令

4.2.3 程序控制指令

4.2.4 加载和存储指令

返回首页

Page 8: 第 4 章 TMS320C54x 汇编指令系统

4.2.1 算术运算指令

C54x 的算术运算指令包括加法指令、减法指令、乘法指令、乘累加指令与乘法减法指令、双字 /双精度运算指令及专用指令。分别如表 4-2 、表4-3 、表 4-4 、表 4-5 、表 4-6 、表 4-7 所示。

Page 9: 第 4 章 TMS320C54x 汇编指令系统

指令中表示整数时,有有符号数和无符号数两种格式。 TMS320C54x 提供了多条用于加法的指令,如ADD 、 ADDC 、 ADDM 和 ADDS ,具体说明见表 4-2

1) 加法指令

Page 10: 第 4 章 TMS320C54x 汇编指令系统

ADD 指令有 10 种句法。如果目的累加器dst 被指定,则结果存放在 dst 中;如果没有被指定,则结果存放在源累加器 src 中。移位操作数的范围为 ?16≤SHIFT≤15 , 0≤SHFT≤15 。正数为左移位,左移位低位添 0 ,高位受 SXM 位影响。如果 SXM= 1 ,则高位进行符号扩展;如果 SXM = 0 ,则高位清零。负数为右移位,受 SXM 位影响。如果SXM = 1 ,则高位进行符号扩展;如果 SXM = 0 ,则高位清零。

Page 11: 第 4 章 TMS320C54x 汇编指令系统

表 4-2 加法指令

Page 12: 第 4 章 TMS320C54x 汇编指令系统

【例 1 】 ADD *AR3+ , 14 , A

  指令执行前   指令执行后

A 00 0000 1200H A 00 0540 1200H

C 1 C 0

AR3 0100H AR3 0101H

SXM 1 SXM 1

数据存储器      

0100H 1500H 0100H 1500H

Page 13: 第 4 章 TMS320C54x 汇编指令系统

【例 2 】 ADD A , -8 ,B

  指令执行前   指令执行后

A 00 0540 1200H A 00 0540 1200H

B 00 0000 1800H B 00 0005 5812H

C 1 C 0

Page 14: 第 4 章 TMS320C54x 汇编指令系统

【例 3 】 ADD #4568H , 8 , A , B

  指令执行前   指令执行后

A 00 0000 1200H A 00 0000 1200H

B 00 0000 1800H B 00 0045 7A00H

C 1 C 0

Page 15: 第 4 章 TMS320C54x 汇编指令系统

【例 4 】 ADDC *+AR2(5) , A ;不受 SXM 位影响

  指令执行前   指令执行后

A 00 0000 0030H A 00 0000 0045H

C 1 C 0

AR2 0100H AR2 0105H

数据存储器      

0100H 0000H 0100H 0000H

0105H 0014H 0105H 0014H

Page 16: 第 4 章 TMS320C54x 汇编指令系统

【例 5 】 ADDM #123BH , *AR4+ ;该指令不能循环执行

  指令执行前   指令执行后

AR4 0100H AR4 0101H

数据存储器      

0100H 0014H 0100H 124FH

Page 17: 第 4 章 TMS320C54x 汇编指令系统

【例 6 】 ADDM #0F088H , *AR2+

  指令执行前   指令执行后

VOM 1 VOM 1

SXM 1 SXM 1

AR2 0105H AR2 0106H

数据存储器      

0105H 8007H 0105H 8000H 

Page 18: 第 4 章 TMS320C54x 汇编指令系统

【例 7 】 ADDS *AR2- , B ;无论SXM 为何值,都不进行符号扩展

  指令执行前   指令执行后

B 00 0000 0003H B 00 0000 F004H

C x C 0

AR2 0106H AR2 0105H

数据存储器      

0106H F001H 0106H F001H

Page 19: 第 4 章 TMS320C54x 汇编指令系统

2) 减法指令

TMS320C54x 中 减 法 指 令 有 许 多 , 如SUB 、 SUBB 、 SUBC 和 SUBS ,具体说明见表4-3 。其中, SUBS 是无符号数的减法运算, SUBB是带借位的减法运算,而 SUBC 是含条件的移位减。在 TMS320C54x 中,没有专门的除法指令,要实现除法运算一般有两种方法:一种方法是用乘法进行,如要除以某个数,可以先求出该数的倒数,再乘以其倒数;另一种方法是用 SUBC 指令,再重复 16 次减法运算,可实现两个无符号数的除法运算。减法指令中状态位与加法指令中的基本相同。

Page 20: 第 4 章 TMS320C54x 汇编指令系统

表 4-3 减法指令

Page 21: 第 4 章 TMS320C54x 汇编指令系统
Page 22: 第 4 章 TMS320C54x 汇编指令系统

【例 8 】 SUB #12345 , 8 , A , B

  指令执行前   指令执行后

A 00 0000 1200H A 00 0000 1200H

B 00 0000 1800H B FF FFCF D900H

C X C 0

SXM 1 SXM 1 

Page 23: 第 4 章 TMS320C54x 汇编指令系统

【例 9 】

LD #8 , DP ;使页面指针 DP = 8

LD #0006H , A ;加载 A 累加器 SSBX C ;置借位位 C 为 1

SUBB @5 , A ;完成带借位的减法运算。 数据地址= 0405H ,为直接寻址

Page 24: 第 4 章 TMS320C54x 汇编指令系统

  指令执行前   指令执行后

A 00 0000 0006H A FF FFFF FFFEH

C 1 C 0

DP 008H DP 008H

数据存储器      

0405H 0008H 0405H 0008H

Page 25: 第 4 章 TMS320C54x 汇编指令系统

3) 乘法指令

TMS320C54x 中有大量的乘法运算指令,其结果都是 32 位,放在 A 或 B 累加器中,如表 4-4 所示。乘数在 TMS320C54x 的乘法指令中的使用很灵活,可以是 T 寄存器、立即数、存储单元以及 A 或 B 累加器的高 16 位。如果是无符号数相乘,则使用一条专用于无符号数相乘的指令,即 MPYU 指令,其他指令都是有符号数的乘法。

Page 26: 第 4 章 TMS320C54x 汇编指令系统

表 4-4 乘法指令

Page 27: 第 4 章 TMS320C54x 汇编指令系统

【例 10 】 实现整数乘法。

LD #0030H , A ;将 0030H 装入累加器 A

STM #0100H , AR2 ; AR2 = 0100H

ST #2000H , *AR2 ; (AR2) = 2000H

RSBX FRCT ;清 FTCT 标志位,准备整数乘 LD #2 , DP ; DP = 002H

LD 0 , T ;将 AR2 中的内容 2000H 装入 T寄存器

MPY #-2 , A ;完成 2000H 与 0FFFEH 相乘,结果

放入 A 累加器 (32 位 ) , ; A = FF FFFF C000H

Page 28: 第 4 章 TMS320C54x 汇编指令系统

4) 乘加和乘减指令

乘加指令完成一个乘法运算,将乘积再与源累加器的内容相加。指令中使用 R 后缀的,其运算结果要进行凑整。

乘减指令完成从累加器 B 或源累加器 src 或目的累加器 dst 中减去 T 寄存器或一个操作数与另一个操作数的乘积,结果存放在累加器 B 或dst 或 src 中。表 4-5 是对乘加、乘减指令的说明。

Page 29: 第 4 章 TMS320C54x 汇编指令系统

表 4-5 乘加和乘减指令

Page 30: 第 4 章 TMS320C54x 汇编指令系统
Page 31: 第 4 章 TMS320C54x 汇编指令系统

【例 11 】 MAC #345H , A , B

  指令执行前   指令执行后

A 00 0000 1000H A 00 0000 1000H

B 00 0000 0000H B 00 000D 2400H

T 0400H T 0400H

FRCT 0 FRCT 0

Page 32: 第 4 章 TMS320C54x 汇编指令系统

【例 12 】 MAC #345H , A , B

  指令执行前   指令执行后

A 00 0000 1000H A 00 0000 1000H

B 00 0000 0000H B 00 001A 3800H

T 0400H T 0400H

FRCT 1 FRCT 1

Page 33: 第 4 章 TMS320C54x 汇编指令系统

【例 13 】 MACR *AR3+ , *AR4+ , A , B

  指令执行前   指令执行后

A 00 0000 1000H A 00 0000 1000H

B 00 0000 0004H B 00 0C4C 0000H

T 0008H T 5678H

FRCT 1 FRCT 1

AR3 0100H AR3 0101H

AR4 0200H AR4 0201H

数据存储器      

0100H 5678H 0100H 5678H

0200H 1234H 0200H 1234H

Page 34: 第 4 章 TMS320C54x 汇编指令系统

【例 14 】 MACSU *AR3+ , *AR4+ , A

  指令执行前   指令执行后

A 00 0000 1000H A 00 09A0 AA84H

T 0008H T 8765H

FRCT 0 FRCT 0

AR3 0100H AR3 0101H

AR4 0200H AR4 0201H

数据存储器      

0100H 8765H 0100H 8765H

0200H 1234H 0200H 1234H 

Page 35: 第 4 章 TMS320C54x 汇编指令系统

【例 15 】 MAS *AR3+ , *AR4+ , A , B

  指令执行前   指令执行后

A 00 0000 1000H A 00 0000 1000H

B 00 0000 0004H B FF F3B4 0F40H

T 0008H T 5678H

FRCT 1 FRCT 1

AR3 0100H AR3 0101H

AR4 0200H AR4 0201H

数据存储器      

0100H 5678H 0100H 5678H

0200H 1234H 0200H 1234H

Page 36: 第 4 章 TMS320C54x 汇编指令系统

表 4-6 双精度( 32 位操作数)指令

Page 37: 第 4 章 TMS320C54x 汇编指令系统

表 4-7 专用指令

返回本节

Page 38: 第 4 章 TMS320C54x 汇编指令系统

4.2.2 逻辑运算指令

逻辑指令包括与、或、异或(按位)、移位和测试指令,分别如表 4-8 、表 4-9 、表 4-10 、表 4-11 、表 4-12 所示。

Page 39: 第 4 章 TMS320C54x 汇编指令系统

表 4-8 与逻辑运算指令

Page 40: 第 4 章 TMS320C54x 汇编指令系统

表 4-9 或逻辑运算指令

Page 41: 第 4 章 TMS320C54x 汇编指令系统

表 4-10 异或逻辑运算指令

Page 42: 第 4 章 TMS320C54x 汇编指令系统

表 4-11 移位逻辑运算指令

Page 43: 第 4 章 TMS320C54x 汇编指令系统

表 4-12 测试指令

返回本节

Page 44: 第 4 章 TMS320C54x 汇编指令系统

4.2.3 程序控制指令

程序控制指令包括分支转移指令、子程序调用指令、中断指令、返回指令、重复指令、堆栈操作指令及混合程序控制指令,分别如表 4-13 、表 4-14 、表 4-15 、表 4-16 、表 4-17 、表 4-18 及表4-19 所示。

Page 45: 第 4 章 TMS320C54x 汇编指令系统

表 4-13 分支转移指令

Page 46: 第 4 章 TMS320C54x 汇编指令系统

表 4-14 子程序调用指令

Page 47: 第 4 章 TMS320C54x 汇编指令系统

表 4-15 中断指令

Page 48: 第 4 章 TMS320C54x 汇编指令系统

表 4-16 返回指令

Page 49: 第 4 章 TMS320C54x 汇编指令系统

表 4-17 重复指令

Page 50: 第 4 章 TMS320C54x 汇编指令系统

表 4-18 堆栈操作指令

Page 51: 第 4 章 TMS320C54x 汇编指令系统

表 4-19 混合程序控制指令

返回本节

Page 52: 第 4 章 TMS320C54x 汇编指令系统

4.2.4 加载和存储指令

加载和存储指令包括加载指令、存储指令、条件存储指令、并行加载和存储指令、并行加载和乘法指令、并行存储和加 / 减法指令、混合加载和存储指令,分别如表 4-20 、表 4-21 、表 4-22 、表 4-23 、表 4-24 、表 4-25 、表 4-26 及表 4-27所示。加载指令是将存储器内容或立即数赋给目的寄存器;存储指令是把源操作数或立即数存入存储器或寄存器。

Page 53: 第 4 章 TMS320C54x 汇编指令系统

表 4-20 加载指令

Page 54: 第 4 章 TMS320C54x 汇编指令系统

表 4-21 存储指令

Page 55: 第 4 章 TMS320C54x 汇编指令系统

表 4-22 条件存储指令

Page 56: 第 4 章 TMS320C54x 汇编指令系统

表 4-23 并行加载和存储指令

Page 57: 第 4 章 TMS320C54x 汇编指令系统

表 4-24 并行加载和乘法指令

Page 58: 第 4 章 TMS320C54x 汇编指令系统

表 4-25 并行存储和加 / 减法指令

Page 59: 第 4 章 TMS320C54x 汇编指令系统

表 4-26 并行存储和乘法指令

Page 60: 第 4 章 TMS320C54x 汇编指令系统

表 4-27 混合加载和存储指令(数据块传送指令)

返回本节