第3章汇编语言指令系统 在DSP应用中,虽然可以使用C/C++高 级语言编程,降低了对编程者的要求, 但在一些实时性要求高的场合仍然需要 采用汇编编程,以充分利用DSP丰富的 硬件资源,发挥它的实时运算能力。 >用汇编语言编程,要求编程者对DSP的 低层有充分的了解,包括硬件结构、存 储器空间模型和O口的组织等。同时又 要求编程者对指令系统有深刻的了解。 山东大学生物医学工程刘忠国 1
山东大学生物医学工程刘忠国 1 第3章 汇编语言指令系统 ➢ 在DSP应用中,虽然可以使用C/C++高 级语言编程,降低了对编程者的要求, 但在一些实时性要求高的场合仍然需要 采用汇编编程,以充分利用DSP丰富的 硬件资源,发挥它的实时运算能力。 ➢ 用汇编语言编程,要求编程者对DSP的 低层有充分的了解,包括硬件结构、存 储器空间模型和I/O口的组织等。同时又 要求编程者对指令系统有深刻的了解
第3章汇编语言指令系统 3.1C54x汇编语言指令集介绍 3.2寻址方式 3.3C54x系列DSP的指令系统 参考:TMS320C54 x DSP Reference Set Volume 2:Mnemonic Instruction Set.pdf, spru172c,2001,TI官网 2
3.1 C54x汇编语言指令集介绍 3.2 寻址方式 3.3 C54x系列DSP的指令系统 第3章 汇编语言指令系统 参考:TMS320C54x DSP Reference Set Volume 2: Mnemonic Instruction Set.pdf, spru172c, 2001, TI官网 2
3.1C54x汇编语言指令集介绍 C54x汇编语言源程序指令包括: >汇编语言指令Assembly Language Instructions >汇编伪指令Assembler Directives >宏指令Macro Directives 本章介绍C54xDSP的汇编语言指令系统。与 其它CPU的指令集相同,汇编语言指令又称为硬 指令,它们在汇编和连接后形成可执行的机器码, 供DSP进行运算和其它操作。 TMS320C54x assem bly language source programs consist of source statements that can contain assembler directives,assembly language instructions,macro directives,and comments. 3 TMS320C54x Assembly Language Tools User's Guide--SPRU102F
C54x汇编语言源程序指令包括: ➢ 汇编语言指令Assembly Language Instructions ➢ 汇编伪指令Assembler Directives ➢ 宏指令Macro Directives 3.1 C54x汇编语言指令集介绍 TMS320C54x assembly language source programs consist of source statements that can contain assembler directives, assembly language instructions, macro directives, and comments. 本章介绍C54x DSP的汇编语言指令系统。与 其它CPU的指令集相同,汇编语言指令又称为硬 指令,它们在汇编和连接后形成可执行的机器码, 供DSP进行运算和其它操作。 3 TMS320C54x Assembly Language Tools User’s Guide--SPRU102F
3.1C54x汇编语言指令集介绍 3.1.1指令系统中的符号、缩写及操作符 序号 符号 含 义 1 A 累加器A 2 ALU 算术逻辑运算单元 3 AR 泛指通用辅助寄存器 4 ARx 指定某一辅助寄存器AR0~AR7 5 ARP ST0中的3位辅助寄存器指针 6 ASM ST1中的5位累加器移位方式位-16~15 7 B 累加器B 8 BRAF ST1中的块重复操作标志位 9 BRC 块重复操作计数器 用于测试指令,指定数据存储器单元中 10 BITC或bit_code 的哪一位被测试,取指范围:0~15 BIT Xmem,BITC; (Xmem(15-BITC)→TC A
5 ARP ST0中的3位辅助寄存器指针 6 ASM ST1中的5位累加器移位方式位-16~15 BIT Xmem, BITC; 3.1 C54x汇编语言指令集介绍 4 3.1.1 指令系统中的符号、缩写及操作符 序号 符 号 含 义 1 A 累加器A 2 ALU 算术逻辑运算单元 3 AR 泛指通用辅助寄存器 4 ARx 指定某一辅助寄存器AR0~AR7 7 B 累加器B 8 BRAF ST1中的块重复操作标志位 9 BRC 块重复操作计数器 10 BITC或bit_code 用于测试指令,指定数据存储器单元中 的哪 一位被测试,取指范围:0~15 (Xmem(15 – BITC)) →TC
3.1C54x汇编语言指令集介绍 3.1.1指令系统中的符号、缩写及操作符(续) 序号 符号 含 义 11 C16 ST1中的双16位/双精度算术运算方式位 12 C ST0中的进位位 13 cc 2位条件码(0sCC≤3) CMPR CC.ARx 14 CMPT ST1中的ARP修正方式位 15 CPL ST1中的直接寻址编辑标志位 16 cond 表示一种条件的操作数,用于条件执行指令 17 [d,[D] 延时选项 18 DAB D地址总线 19 DAR DAB地址寄存器 20 dmad 16位立即数数据存储器地址(0~65535)
3.1 C54x汇编语言指令集介绍 序号 符 号 含 义 11 C16 ST1中的双16位/双精度算术运算方式位 12 C ST0中的进位位 3.1.1 指令系统中的符号、缩写及操作符 (续) 5 13 CC 2位条件码(0CC3) CMPR CC, ARx 16 cond 表示一种条件的操作数,用于条件执行指令 17 [d],[D] 延时选项 14 CMPT ST1中的ARP修正方式位 15 CPL ST1中的直接寻址编辑标志位 18 DAB D地址总线 19 DAR DAB地址寄存器 20 dmad 16位立即数数据存储器地址(0~65535)
3.1C54x汇编语言指令集介绍 3.1.1指令系统中的符号、缩写及操作符(续) 序号 符号 含 义 21 Dmem 数据存储器操作数 22 DP ST0中的数据存储器页指针 0sDP≤511 23 Dst 目的累加器(A和B) 24 dst 与dst相反的目的累加器 25 EAB E地址总线 26 EAR EAB地址寄存器 27 extpmad 23位立即数程序存储器地址 28 FRCT ST1中的小数方式位 29 hi(A) 累加器A的高阶位(AH或BH) 30 HM ST1中的保持方式位
3.1 C54x汇编语言指令集介绍 序号 符 号 含 义 21 Dmem 数据存储器操作数 22 DP ST0中的数据存储器页指针 (0DP511) 3.1.1 指令系统中的符号、缩写及操作符 (续) 6 23 Dst 目的累加器(A和B) 24 dst_ 与dst相反的目的累加器 25 EAB E地址总线 26 EAR EAB地址寄存器 27 extpmad 23位立即数程序存储器地址 28 FRCT ST1中的小数方式位 29 hi(A) 累加器A的高阶位(AH或BH) 30 HM ST1中的保持方式位
3.1C54x汇编语言指令集介绍 3.1.1指令系统中的符号、缩写及操作符(续) 序号 符号 含 义 31 IFR 中断标志寄存器 32 INTM ST1中的中断屏蔽位 33 K 少于9位的短立即数 34 k3 3位立即数(0≤k3≤7 LD #k3,ARP 35 k5 5位立即数(-16≤k5≤15) LD #k5.ASM 36 k9 9位立即数(0≤k9≤511) LD #k9,DP 37 Ik 16位长立即数 38 Lmem 利用长字寻址的32位单数据存储器操作数 39 mmr,MMR 存储器映像寄存器 40 MMRx, 存储器映像寄存器,AR0~AR7或SP MMRy MVMM MMRx,MMRy
INTR K; 0 ≤K ≤31 TRAP K; 0 ≤K ≤31 IDLE K; 1 ≤K ≤3 LD #K, dst; 0 ≤K ≤255 RPT #K; 0 ≤K ≤255 FRAME K; –128 ≤K ≤127 3.1 C54x汇编语言指令集介绍 序号 符 号 含 义 31 IFR 中断标志寄存器 32 INTM ST1中的中断屏蔽位 3.1.1 指令系统中的符号、缩写及操作符 (续) 33 K 少于9位的短立即数 38 Lmem 利用长字寻址的32位单数据存储器操作数 39 mmr,MMR 存储器映像寄存器 40 MMRx, MMRy 存储器映像寄存器,AR0~AR7或SP 34 k3 3位立即数(0k37) LD #k3, ARP 35 k5 5位立即数(-16k515) LD #k5, ASM 36 k9 9位立即数(0k9511) LD #k9, DP 37 lk 16位长立即数 7 MVMM MMRx, MMRy
3.1C54x汇编语言指令集介绍 3.1.1指令系统中的符号、缩写及操作符(续) 序号 符号 含 义 41 n XC指令后面的字数,取1或2 42 N 指定状态寄存器,N=0为ST0,N=1为ST1 43 OVA ST0中的累加器A溢出标志 44 OVB ST0中的累加器B溢出标志 45 OVdst 指定目的累加器(A或B)的溢出标志(注释中 46 OVdst 另一个目的累加器(A或B)的溢出标志(注释中 47 OVsrc 指定源累加器(A或B)的溢出标志(注释中 48 OVM ST1中的溢出方式位 49 PA 16位立即数端口地址(0≤PA≤65535) 50 PAR 程序存储器地址寄存器
RSBX N, SBIT; 0SBIT15 XC n, cond [, cond [, cond] ] 3.1 C54x汇编语言指令集介绍 序号 符 号 含 义 41 n XC指令后面的字数,取1或2 42 N 指定状态寄存器,N=0为ST0,N=1为ST1 3.1.1 指令系统中的符号、缩写及操作符(续) 8 43 OVA ST0中的累加器A溢出标志 44 OVB ST0中的累加器B溢出标志 45 OVdst 指定目的累加器(A或B)的溢出标志(注释中) 46 OVdst_ 另一个目的累加器(A或B)的溢出标志(注释中) 47 OVsrc 指定源累加器(A或B)的溢出标志(注释中) 48 OVM ST1中的溢出方式位 49 PA 16位立即数端口地址(0PA65535) 50 PAR 程序存储器地址寄存器
3.1.1指令系统中的符号、缩写及操作符(续) 序号 符号 含 义 51 PC 程序计数器 52 pmad 16位立即数程序存储器地址(0 <pmad≤65535) 53 pmem 程序存储器操作数 54 PMST 处理器工作方式状态寄存器 55 prog 程序存储器操作数(c54x指令中没有使用 56 R 舍入选项 57 rnd 舍入;Round的缩写 58 RC 重复计数器 59 RTN 快速返回寄存器 60 REA 块重复结束地址寄存器 61 RSA 块重复起始地址寄存器 block-Repeat End Address register block-Repeat Start Address register 9
RND src [, dst] 3.1.1 指令系统中的符号、缩写及操作符 (续) 序号 符 号 含 义 51 PC 程序计数器 52 pmad 16位立即数程序存储器地址(0pmad65535) 9 53 pmem 程序存储器操作数 54 PMST 处理器工作方式状态寄存器 55 prog 程序存储器操作数(c54x指令中没有使用) 56 [R] 舍入选项 57 rnd 舍入 ;Round的缩写 58 RC 重复计数器 59 RTN 快速返回寄存器 60 REA 块重复结束地址寄存器 block-Repeat End Address register 61 RSA 块重复起始地址寄存器 block-Repeat Start Address register
3.1C54x汇编语言指令集介绍 3.1.1指令系统中的符号、缩写及操作符(续) 序号 符号 含 义 用于指定状态寄存器位的4位地址 62 SBIT 0~15)】 63 SHFT 4位移位值(0~15 64 SHIFT 5位移位值(16-15 65 Sind 间接寻址的单数据存储器操作数 66 Smem 16位单数据存储器操作数 67 SP 堆栈指针寄存器 68 src 源累加器(A或B) 69 STO,ST1 状态寄存器0,状态寄存器1 70 SXM ST1中的符号扩展方式位 71 T 暂存器 10
BANZ[D] pmad, Sind(只出现于此指令) RSBX N, SBIT; 0SBIT15 3.1 C54x汇编语言指令集介绍 序号 符 号 含 义 62 SBIT 用于指定状态寄存器位的4位地址 (0~15) 3.1.1 指令系统中的符号、缩写及操作符(续) 10 63 SHFT 4位移位值(0~15) 64 SHIFT 5位移位值(-16~15) 65 Sind 间接寻址的单数据存储器操作数 66 Smem 16位单数据存储器操作数 67 SP 堆栈指针寄存器 68 src 源累加器(A或B) 69 ST0,ST1 状态寄存器0,状态寄存器1 70 SXM ST1中的符号扩展方式位 71 T 暂存器