1 / 60

第 4 章 TMS320C54x 汇编指令系统

第 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 算术运算指令.

mircea
Télécharger la présentation

第 4 章 TMS320C54x 汇编指令系统

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第4章TMS320C54x汇编指令系统 • 4.1 指令系统中的符号和缩写 • 4.2 指令系统

  2. 4.1 指令系统中的符号和缩写 表4-1 指令系统中的符号和缩写 返回首页

  3. 返回本节

  4. 4.2 指令系统 • 4.2.1 算术运算指令 • 4.2.2 逻辑运算指令 • 4.2.3 程序控制指令 • 4.2.4 加载和存储指令 返回首页

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

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

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

  8. 表4-2 加法指令

  9. 指令执行前 指令执行后 A 00 0000 1200H A 00 0540 1200H C 1 C 0 AR3 0100H AR3 0101H SXM 1 SXM 1 数据存储器 0100H 1500H 0100H 1500H • 【例1】 ADD *AR3+,14,A

  10. 指令执行前 指令执行后 A 00 0540 1200H A 00 0540 1200H B 00 0000 1800H B 00 0005 5812H C 1 C 0 • 【例2】 ADD A,-8,B

  11. 指令执行前 指令执行后 A 00 0000 1200H A 00 0000 1200H B 00 0000 1800H B 00 0045 7A00H C 1 C 0 • 【例3】 ADD #4568H,8,A,B

  12. 指令执行前 指令执行后 A 00 0000 0030H A 00 0000 0045H C 1 C 0 AR2 0100H AR2 0105H 数据存储器 0100H 0000H 0100H 0000H 0105H 0014H 0105H 0014H • 【例4】 ADDC *+AR2(5),A ;不受SXM位影响

  13. 指令执行前 指令执行后 AR4 0100H AR4 0101H 数据存储器 0100H 0014H 0100H 124FH • 【例5】 ADDM #123BH,*AR4+ ;该指令不能循环执行

  14. 指令执行前 指令执行后 VOM 1 VOM 1 SXM 1 SXM 1 AR2 0105H AR2 0106H 数据存储器 0105H 8007H 0105H 8000H • 【例6】 ADDM #0F088H,*AR2+

  15. 指令执行前 指令执行后 B 00 0000 0003H B 00 0000 F004H C x C 0 AR2 0106H AR2 0105H 数据存储器 0106H F001H 0106H F001H • 【例7】 ADDS *AR2-,B ;无论SXM为何值,都不进行符号扩展

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

  17. 表4-3 减法指令

  18. 指令执行前 指令执行后 A 00 0000 1200H A 00 0000 1200H B 00 0000 1800H B FF FFCF D900H C X C 0 SXM 1 SXM 1 • 【例8】 SUB #12345,8,A,B

  19. 【例9】 LD #8,DP ;使页面指针DP=8 LD #0006H,A ;加载A累加器 SSBX C ;置借位位C为1 SUBB @5,A ;完成带借位的减法运算。 数据地址=0405H,为直接寻址

  20. 指令执行前 指令执行后 A 00 0000 0006H A FF FFFF FFFEH C 1 C 0 DP 008H DP 008H 数据存储器 0405H 0008H 0405H 0008H

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

  22. 表4-4 乘法指令

  23. 【例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

  24. 4)乘加和乘减指令 • 乘加指令完成一个乘法运算,将乘积再与源累加器的内容相加。指令中使用R后缀的,其运算结果要进行凑整。 • 乘减指令完成从累加器B或源累加器src或目的累加器dst中减去T寄存器或一个操作数与另一个操作数的乘积,结果存放在累加器B或dst或src中。表4-5是对乘加、乘减指令的说明。

  25. 表4-5 乘加和乘减指令

  26. 指令执行前 指令执行后 A 00 0000 1000H A 00 0000 1000H B 00 0000 0000H B 00 000D 2400H T 0400H T 0400H FRCT 0 FRCT 0 • 【例11】 MAC #345H,A,B

  27. 指令执行前 指令执行后 A 00 0000 1000H A 00 0000 1000H B 00 0000 0000H B 00 001A 3800H T 0400H T 0400H FRCT 1 FRCT 1 • 【例12】 MAC #345H,A,B

  28. 指令执行前 指令执行后 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 • 【例13】 MACR *AR3+,*AR4+,A,B

  29. 指令执行前 指令执行后 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 • 【例14】 MACSU *AR3+,*AR4+,A

  30. 指令执行前 指令执行后 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 • 【例15】 MAS *AR3+,*AR4+,A,B

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

  32. 表4-7 专用指令 返回本节

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

  34. 表4-8 与逻辑运算指令

  35. 表4-9 或逻辑运算指令

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

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

  38. 表4-12 测试指令 返回本节

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

  40. 表4-13 分支转移指令

  41. 表4-14 子程序调用指令

  42. 表4-15 中断指令

  43. 表4-16 返回指令

  44. 表4-17 重复指令

  45. 表4-18 堆栈操作指令

More Related