汇编语言指令系统
- 格式:doc
- 大小:1.80 MB
- 文档页数:99
第3章指令系统
TMS320C54x指令系统共有指令130条,由于操作数的寻址方式不同,派生至205条。按指令的功能,可以将C54x指令系统分成4类:算术运算指令、逻辑运算指令、程序控制指令、加载和存储指令。下面分别对各类指令进行介绍。
3.2.1 算术运算指令
算术运算指令分为加法指令(ADD),减法指令(SUB),乘法指令(MPY),乘加指令(MAC),乘减指令(MAS),双数/双精度指令(DADD,DSUB)和特殊操作指令(ABDST,SQDST)。
1.加法指令
加法指令共有13条,如表3.5所示。
表3.5 加法指令
整数分有符号数和无符号数两种格式,表示有符号数时,其最高位表示符号,最高位为0表示其为正数,1表示为负数;无符号数其最高位仍做为数值位计算。例如,有符号数能够表示的最大的正数为07FFFh,等于32767,而0FFFFH表示最大的负数–1;无符号数不能表示负数,它能够表示的最大的数为0FFFFh,等于十进制数的65535。
2.减法指令
减法指令共有13条,见表3.6所示。
表3.6 减法指令
3.乘法指令
乘法指令共有10条,见表3.7。
表3.7 乘法指令
4.乘加和乘减指令
乘加和乘减指令共有22条,见表3.8所示。
表3.8 乘加和乘减指令
5.双操作数指令
双操作数指令共有6条,见表3.9所示。
表3.9 双操作数指令
6.特殊应用指令
特殊应用指令共有15条,见表3.10所示。
表3.10 特殊应用指令
3.2.2 逻辑运算指令
逻辑运算指令包括与指令(AND),或指令(OR),异或指令(XOR),移位指令(ROL)和测试指令(BITF)。
1.与指令
与指令共5条,见表3.11。
表3.11 与指令
2.或指令
或指令共5条,见表3.12。
表3.12 或指令
3.异或指令
异或指令共5条,见表3.13。
表3.13 异或指令
4.移位指令
移位指令共6条,见表3.14。
表3.14 移位指令
5.测试指令
测试指令共5条,见表见表3.15。
表3.15测试指令
3.2.3 程序控制指令
程序控制指令包括分支指令(B,BC),调用指令(CALL),中断指令(INTR,TRAP),返回指令(RET),重复指令(RPT),堆栈操作指令(FRAME,POP),其它程序控制指令(IDLE,NOP)。分别例于下列表中。
1.分支指令
分支指令共6条,见表3.16。
表3.16 分支指令
‡条件为真,§条件为假,*延迟指令
2.调用指令
调用指令共5条,见表3.17。
表3.17
调用指令
3.中断指令
中断指令有2条,见下表。
表3.18中断指令
4.返回指令
返回指令共有6条,见下表。
表3.19 返回指令
5.重复指令
重复指令共5条,见下表。
表3.20 重复指令
6.堆栈操作指令
堆栈操作指令共5条,见下表。
表3.21堆栈操作指令
7.其它程序控制指令
其它程序控制指令共7条,见下表。
表3.22 其它程序控制指令
3.2.4 加载和存储指令
加载和存储指令包括一般的加载和存储指令(LD,ST),条件存储指令(CMPS,SACCD),并行的读取和乘法指令(LD‖MAC),并行的读取和存储指令(LD‖ST),并行的存储和乘法指令(ST‖MAC),并行的读取和加减指令(LD‖ADD,LD‖SUB)以及其他读取类型和存储类指令(MVDD,PORTW,READA)。
1.加载指令
加载指令共21条,见下表。
2.存储指令
存储指令共14条,见下表。
11
3.条件存储指令
条件存储指令有4条,见下表。
表3.25 条件存储指令
4.并行加载和存储指令
并行加载和存储指令有2条,见下表。
12
表3.26 并行加载和存储指令
5.并行加载和乘法指令
并行加载和乘法指令有4条,见下表。
表3.27 并行加载和乘法指令
6.并行存储和加减指令
并行存储和加载指令有2条,见下表。
表3.28 并行存储和加减指令
7.并行存储和乘法指令
并行存储和乘法指令有5条,见下表。
表3.29并行存储和乘法指令
13
续表
8.其它存储和加载指令
有12条其它存储和加载指令,见下表。
表3.30 其它存储和加载指令
3.2.5 重复执行单条指令
重复执行单条指令是将下一条指令重复执行(RC)+1次,最多为65 536次,使用重复执行指令功能时,绝对的程序和数据地址是自动增加的。
当重复指令被解码时,所有中断(包括NMI,不包括RS)均被屏蔽,直到重复指令执行完毕。但是在响应重复执行循环中响应HOLD信号,不管状态寄存器ST1中的HM为何值。
重复指令可以使被重复的指令由多周期指令变成单周期指令,表3.30列出了这些指令。使用长偏移地址或绝对地址的单数据操作数指令不能用于重复指令,如使用*ARn(lk)、*+A R n(lk)、*+A R n(lk)%和*(lk)寻址的指令。
不能使用RPT或RPTZ指令循环执行的指令有36条,见表3.31。
14