第四章 TMS320C54x指令系统
第4章TMS320C54XDSP指令系统10PPT课件
57
中断指令同样可以改变程序指针PC的值,使程序从一个地址跳转 到另一个地址执行。但与调用指令一样,DSP在执行完中断服务程序 后要返回发生中断的地方继续执行原来的程序。当发生中断时,DSP 会置INTM为1,屏蔽所有可屏蔽中断,并在中断标志寄存器IFR中设 置相应的中断标志。
INTR指令使ST1的INTM位(bit11)置1关中断
14
算术运算类指令
’c54x的算术运算指令丰富,且运算能力强大。算术运 算指令用于完成加减乘除等算术运算。按照功能可将算术运算 类指令分为7组:
(1)加法指令(Add) (2)减法指令(Subtract) (3)乘法指令(Multiply) (4)乘加指令(Multiply-accumulate) (5)乘减指令(Multiply-subtract) (6)双字指令(32比特操作数) (7)专用指令(Application-specific)
25
举例:应用 SUBC DATA, A 计算( 8/2)
................................
stm #1001h , AR3 stm #1002h , AR4 ld #20h , DP st #0002h , 00h ld #0008h , A
rpt #15 subc 00h, A stl A,*AR3
;将相减的结果(高16位) ;存入1063地址单元
23
24
利用SUBC实现除法运算
在‘C54X中没有提供专门的除法指令, 一般有两种方法来完成除法。
一种是用乘法来代替,除以某个数相当于乘以其倒 数,所以先求出其倒数,然后相乘。这种方法适用于 除以一个常数。
另一种方法是使用SUBC(条件移位减法)指令, 重复16次减法操作完成一次除法运算。
TMS320C54x的指令
26
3. 条件存储指令 举例
A AR6 指令操作前 00 0756 DEFBH 0232H F0F0H 6666H A AR6 BRC 0232H 指令操作后 00 0756 DEFBH 0231H F0F0H F0F0H
SRCCD *AR6-,AGT
BRC 数据存储器 0232H
27
4. 并行执行指令 举例
举例
5
3.
乘法指令
乘法指令的功能是将T 寄存器或一个数据 存储器的值与另一个数据存储器的值或一 个立即数相乘,并将乘积存放于目的累加 器A或B中。
举例 RSBX FRCT LD TEMP1,T MPY TEMP2,A
6
4.乘加和乘减指令
方法
乘加指令先完成一个乘法操作,然后再将 乘积与源累加器的内容相加。而乘减指令 完成从累加器B(或源累加器src或目的累 加器dst)减去T寄存器(或一个操作数与 另外一个操作数的乘积)的操作,并将其 运算结果存入累加器B(或源累加器src或 目的累加器dst)中去。
数据存储器 FFFFH 0222H 12ABH 0233H
29
汇编语言伪指令 汇编语言源程序中,以.asm为程序的扩展名, 用“段”伪指令来组织程序的结构。 程序一般由数据段、堆栈段和代码段组成。 .data用于存放有初值的数据段;.usect用于 为堆栈保留一块存储空间;.text用于设置代 码段。
TMS320C54x的指令系统
TMS320C54x的指令系统分为算术运算指 令、逻辑运算指令、程序控制指令及装载和 存储指令四种基本类型。
1
TMS320C54x指令系统概述
● ● ● ● 算术运算指令; 逻辑运算指令; 装载和存储指令; 程序控制指令;
第4章 TMS320C54xDSP寻址方式
第4章 TMS320C54xTM DSP汇编语言与混合编程 (2) MVDK 语 法:助记符方式 MVDK Smem,dmad 执行过程:(dmad)→EAR if (RC)≠0 Then (Smem)→通过EAR寻址的Dmem (EAR)+1→EAR Else (Smem)→通过EAR寻址的Dmem 该指令不会影响任何状态位。
第4章 TMS320C54xTM DSP汇编语言与混合编程
功能描述:把一个单数据存储器操作数Smem的内容复制 到一个通过dmad(地址在EAB地址寄存器EAR中)寻址的数 据存储器单元。可以循环执行该指令来转移数据存储器中 的连续字。
第4章 TMS320C54xTM DSP汇编语言与混合编程 例4.32 MVDK DAT10,8000H
一条指令中可对两种立即数编码, 一种是短立即数(3、5、8或9位),短立即数指令编码 为一个字长。 另一种是16位的长立即数,16位立即数的指令编码为两 个字长。
第4章 TMS320C54xTM DSP汇编语言与混合编程
支持立即数的指令
3位或5位立即数 8位立即数 9位立即数 16位立即数 ADD ADDM AND ANDM BITF CMPM LD MAC OR ORM RPT RPTZ ST STM SUB XOT XORM lK
第4章 TMS320C54xTM DSP汇编语言与混合编程 * 直接寻址 指令中的7 bit是一个数据页内的偏移地址,而 所在的数据页则由数据页指针DP或SP决定,该偏移值加上DP 和SP的值决定了在数据存储器中的实际地址; * 间接寻址 按照辅助寄存器中的地址访问存储器; * 存储器映射寄存器寻址 通过寻址存储器映射寄存器实现 寻址; * 堆栈寻址 把数据压入和弹出系统堆栈。
DSP第四章TMS320C54x定时器/计数器
方波的周期由片上定时器确定,采用中断方法实现。设计 步骤如下: (1)定时器初始化 ●关闭定时器,TCR中的TSS=1。 ●加载PRD。因为输出脉冲周期为4ms。 ●启动定时器,初姑化TDDR,TSS=0,TRB=1
TCR
定时器控制寄存器,包含定时器的 控制和状态位
15~12 11
10
9~6
保留
soft
free
PSC
5
4
TRB
TSS
图4-2 TCR位结构图
3~0 TDDR
表4-2 定时器控制寄存器(TCR)的功能
4.2 时钟发生器
硬件配置PLL
用于C541、C542、C543、C545和C546芯片。 所 谓 硬 件 配 置 PLL , 就 是 通 过 C54x 的 3 个 引 脚
通过外部中断请求输入、检测输入脉冲 频率。
3.周期信号检测
相邻脉冲时间差=两个脉冲之间 的差值+两次延迟响应时间差
相邻脉冲时间间隔=T(n+1)T(n)+3T机器周期
PLLN DIV
0
PLLD Ⅳ
X
PLLMUL 0~14
比例系数 0.5
0
X
15
0.25
1
0
0~14
PLLMUL+1
1
0
15
1
1
1
0或偶数
(PLLMUL+1)÷2
1
1
奇数
PLLMUL÷4
图5-3 PLL锁定时间和CLKOUT频率的关系
4.3 定时器/计数器编程和应用
第4章TMS320C54X指令系统1
20
循环寻址的算法: if 0≤ index+step < BK:
index = index + step else if index + step ≥ BK: index = index + step - BK else if index + step< 0 index = index + step + BK
PSHD Smem PSHM MMR POPD Smem POPM MMR ;(SP)-1SP, (Smem)SP ;(SP)-1SP, (MMR)SP ;(SP)Smem, (SP)+1 SP ;(SP)MMR, (SP)+1 SP
例:PSHD *AR3+ POPD *AR4+
27
22
8点的FFT蝶型结运算
0000
0100 0010 0110 0001
x(0) W0 x(4) W0 x(2) W0 x(6) x(1) W0 x(5) W0 x(3) W0 x(7) W2 X(7)
23
X(0) X(1) X(2) W2 W0 W1 W2 W3 X(3) X(4) X(5) X(6)
例:
21
5、间接寻址
4.1 寻址方式
(1)单操作数寻址 ④位倒序寻址
主要应用:FFT算法中使用
位倒序:地址以位倒序的方式产生,即进位是从左向右, 而不是从右到左。
*ARx-0B/ *ARx+0B : (ARx)内容为操作数地址,操作后,从 ARx中以位倒序进位的方式减去/加上AR0. 例:设AR2=0110H, AR0=0004H, T=0000H ST T,*AR2+0B
TMS320C54X DSP 芯片的指令系统
分成512页,每页128个单元 DP取值范围:0~511 7位偏移地址范围:0~127 不改变基地址,可寻址连续的128个单元 DP复位值为0
直接寻址
DP值 00000 0000 偏移量 000 0000 „ 111 1111 000 0000 „ 111 1111 000 0000 „ 111 1111 „ 000 0000 „ 111 1111 数据存储器 第0页:0000H--007FH
例:MVDM 2000H,T RPT #19 ;数据块的复制 ;SAMPLE为常数表示 ;的地址 MVKD 0200H,*AR2+ MVMD AR2,SAMPLE
程序存储器地址(pmad)寻址
确定程序存储器中的一个地址 主要指令:
FIRS MACD MACP MVDP MVPD
Xmem, Smem, Smem, Smem, pmad,
位倒序寻址
主要用于FFT算法。 8点FFT的位码倒序:
若输入顺序:X(0)、X(1)、X(2) 、X(3)、 X(4) 、X(5) 、X(6)、X(7); 则输出顺序:Y(0)、 Y(4)、Y(2) 、Y(6)、 Y(1) 、Y(5) 、Y(3)、 Y(7).
16点FFT的位码倒序:表3.1.6
累加器:
Src,dst,dst_,A,B
移位值:
ASM,TS,SHFT,SHIFT K,k3,k5,k9,lk
立即数:
运算符及其优先级,表3.2.2
3.1 寻址方式
两种:数据寻址和程序寻址 数据寻址(7种基本方式)
立即数寻址 绝对地址寻址 累加器寻址 直接寻址 间接寻址 存储器映射寄存器寻址 堆栈寻址
第4章 TMS320C54x汇编指令系统
Viterbi译码指令DADST、DSADT、CMPS
在信道均衡和解码中经常会使用到Viterbi算法,C54x为此提 供了专门的硬件和指令。根据输入信号确定分支似然概率增加量 D1/D2,放在T寄存器中,TRN存储可能信号译码输出。
相关指令应用
第4章 TMS320C54x汇编指令系统
4.1 指令系统中的符号和缩写 4.2 指令系统
特殊指令使用说明
FIRS指令
FIRS指令用于线性相位滤波器的处理。一个如下图的8阶线性 相位滤波器的输出表达式:
FIRS指令使用方法: FIRS *AR2+, *AR3+, COEF
FIR滤波的两指令MAC、FIRS
RPTZ A,#(N-1) ;重复MAC指令N次,先将A清零
MAC *FIR_DATA_P+0%,*FIR_COFF_P+0%,A ; 完成滤波计算。注意FIR滤波 ;系数存放在数据存储区 RPTZ B, #(N/2-1) 重复FIRS指令N/2次,先将B清零 FIRS *ar2+0%, *ar3+0%,filter_coff+N/2 ;完成滤波计算。注意FIR滤波系数 ;存放在程序存贮filter_coff为 ;系数起始地址
附录 TMS320C54X汇编语言指令系统
指令系统TMS320C54x指令系统共有指令130条,由于操作数的寻址方式不同,派生至205条。
按指令的功能,可以将C54x指令系统分成4类:算术运算指令、逻辑运算指令、程序控制指令、加载和存储指令。
下面分别对各类指令进行介绍。
Ⅰ、算术运算指令算术运算指令分为加法指令(ADD),减法指令(SUB),乘法指令(MPY),乘加指令(MAC),乘减指令(MAS),双数/双精度指令(DADD,DSUB)和特殊操作指令(ABDST,SQDST)。
1.加法指令加法指令共有13条,如表1.1.1所示。
表1.1.1 加法指令整数分有符号数和无符号数两种格式,表示有符号数时,其最高位表示符号,最高位为0表示其为正数,1表示为负数;无符号数其最高位仍做为数值位计算。
例如,有符号数能够表示的最大的正数为07FFFh,等于32767,而0FFFFH表示最大的负数–1;无符号数不能表示负数,它能够表示的最大的数为0FFFFh,等于十进制数的65535。
小数符号和上面整数的表示一样,但必须注意如何安排小数点的位置。
2.减法指令减法指令共有13条,见表1.1.2所示。
表1.1.2 减法指令3.乘法指令乘法指令共有10条,见表1.1.3。
表1.1.3乘法指令续表4.乘加和乘减指令乘加和乘减指令共有22条,见表1.1.4所示。
表1.1.4 乘加和乘减指令续表5.双操作数指令双操作数指令共有6条,见表1.1.5所示。
表1.1.5双操作数指令续表6.特殊应用指令特殊应用指令共有15条,见表1.1.6所示。
表1.1.6 特殊应用指令续表Ⅱ、逻辑运算指令逻辑运算指令包括与指令(AND),或指令(OR),异或指令(XOR),移位指令(ROL)和测试指令(BITF)。
1.与指令与指令共5条,见表2.2.1。
表2.2.1与指令2.或指令或指令共5条,见表2.2.2。
表2.2.2 或指令3.异或指令异或指令共5条,见表2.2.3。
表2.2.3 异或指令4.移位指令移位指令共6条,见表2.2.4。
第4章 TMS320C54x的指令系统4.1-4.3
• 乘加指令(MAC)和乘减指令(MAS);
• 双数/双精度指令(DADD、DSUB); • 特殊操作指令(ABDST、SQDST)。
第4章
TMS320C54x指令系统
(1) 加法指令(13条)《附录A 》
说明:不同的加法指令用途不同; ADD:不带进位; ADD〈〈:不带进位、移位;
ADDC:带进位;
TMS320C54X指令系统
TMS320C54X共有205条指令 按功能分为4大类(每大类又分为若干小类) : • 算术运算指令; • 逻辑运算指令; • 程序控制指令; • 存储和装入指令。
第4章
TMS320C54x指令系统
1. 算术运算指令(79条分为6小类,附录A)
• 加法指令(ADD);
• 减法指令(SUB); • 乘法指令(MPY);
第4章
TMS320C54x指令系统
(2) 减法指令(13条)《附录A 》
说明:①SUBS用于无符号数的减法运算;
SUBB用于带借位的减法运算(如32位扩展精度的减法); SUBC为条件减法 .
②使用SUBC重复16次减法,就可以完成除法功能。
第4章
TMS320C54x指令系统
(2)、减法指令
第4章
第4章
TMS320C54x指令系统
4.2.3字符串
是由双引号括起来的一串字符。 下列情况中伪指令使用字符串:
①说明文件
– 例如: .copy ②说明段名 – 例如: .sect “sectionname” ③说明数据初始化 “filename”
– 例如: .byte “charstfing”
④作为.string伪指令的操作数 – 例如: .string “ABCD”
第四章 TMS320C54x数据寻址方式-蓝
[ ]中的 内容为可 选择部分
2010-12-14
供本程序的其它部分或其它程序调用。 标号是任选项,标号后面可以加也可 以不加冒号“:”。
指令统 2
要 点
1.标号必须从第1列写起, 1.标号必须从第1列写起, 标号必须从第 2.标号最多可达32个字符,可以是A 2.标号最多可达32个字符,可以是A~Z,a~z,0~9, 标号最多可达32个字符 _,以及$,但标号的第1个字符不能是数字。 以及$ 但标号的第1个字符不能是数字。 3.引用标号时,标号的大小写必须一致。 3.引用标号时,标号的大小写必须一致。 引用标号时 4.标号的值就是段程序计数器SPC的值。 4.标号的值就是段程序计数器SPC的值。 标号的值就是段程序计数器SPC的值 5.如果不用标号,则第一个字母必须为空格、分号 5.如果不用标号,则第一个字母必须为空格、 如果不用标号 空格 或星号(*)。 星号(
17
例:做A=X+Y=1500H .text RSBX CPL LD #3 , DP LD @X , A LD #4 , DP ADD @Y , A X: 01FFH Y: 0200H 0180H
数据存存器 0001 1000 0500
0000 0001 1111 1111B 0000 0001 1000 0000B
2010-12-14
5.间接寻址 .
(1)单操作数寻址 LD *AR1, B
单数据存储器( 可以使用的辅助寄存器: 单数据存储器(Smem)操作数间接寻址可以使用的辅助寄存器: )操作数间接寻址可以使用的辅助寄存器 AR0、AR1、AR2、AR3、AR4、AR5、AR6、 AR0、AR1、AR2、AR3、AR4、AR5、AR6、AR7
2010-12-14
第4章 TMS320C54x的指令系统4.4-4.7
例如: LD #0F180H,A
;将立即数F180加载到A 程序存储器
用途:用于表示常数或对寄存器初始化。
操作码
立即数F180
3
立即数的数值形式:P124 ① 短立即数。3、5、8、9位,单字指令; ② 长立即数。16位,双字指令。
RPT #99;将紧跟在此条语句后面的语句重复执行99+1次。
16位数据 存储器地址 9位数据页指针DP dmad低7位
高9位
低7位
15
第4章 TMS320C54x的指令系统
地址形成过程:
当CPL=1时,
堆栈指针SP 16位堆栈指针SP
16位数据 存储器地址
16位SP+dmad低7位
16
DAT0 .set 09h Start: LD #0001H, DP STM #2000H, SP
y n ak x ( n k )
k 0 N 1
;初始化,调指针到合适位置 fir_init :STM #1, AR0 ;赋索引值为1 STM #INPUT,AR6 ;INPUT代表采样值的地址单元 STM #FIR_COFF_BUF, AR5 ;AR5指向系数缓冲器首地址 STM #(FIR_DATA_BUF+K_FIR_BFFR-1),AR4 ;AR4指向采样缓冲器尾地址 STM #OUTBUF,AR7 ;滤波器计算的结果
BK0: RSBX CPL ST #1234H, DAT0 ;DAT0所指数据空间地址为? BK1: SSBX CPL ST #5678H, DAT0 ;DAT0所指数据空间地址为?
17
第4章 TMS320C54x的指令系统
4.4.5 间接寻址
是根据辅助寄存器(AR0~AR7)给出的16位地址进行寻址。 间接寻址主要用在需要存储器地址以步进方式连续变化 的场合。辅助寄存器中的地址可以被修改。 两个辅助寄存器算术运算单元(ARAU0和ARAU1) 可以根据
第4章TMS320C54X指令系统3例子
39-32
STM STM
#a,AR2 #x,AR3
H
31-16
L
15-0
LD
#0,A
LD source, [leftshift,] dest
math: MAC
*AR2+,*AR3+,A
done:
如何存储结果?
8
存储累加器值到 Memory空间
FIR.asm
fir: fir:
y0 = a0x0 + a1x1 + a2x2 + a3x3
STM
math: MAC *AR2+,*AR3+,A
将立即数存储到MMR 2 字, 2 周期
done:
在第一次MAC指令前如何初始化累加器A?
7
参数装载
FIR.asm
fir: fir:
y0 = a0x0 + a1x1 + a2x2 + a3x3
CALL: PC *--SP RET: *SP++ PC 0
Data
SP 指向底部
STK SP
3. 使用连接器把 STK 放到合适的memory 空间
- 建议使用内部 memory
13
习题
1.写指令到存储区 A[23:8] to @y.
STL A,-8,@y -ORSTH A,8,@y
2.存储区哪部分定义为堆栈,为什么?
RPT
math: MAC STL done: RET
#3
*AR2+,*AR3+,A A, *(y)
在执行CALL指令时,返回地址存储在哪里?
第4章 TMS320C54x汇编指令系统
B
C
00 0045 7A00H
0
【例4】
ADDC
*+AR2(5),A
;不受SXM位影响
指令执行前 A C AR2 数据存储器 0100H 0105H 0000H 0014H 0100H 0105H 00 0000 0030H 1 0100H A C AR2
指令执行后 00 0000 0045H 0 0105H
第4章 TMS320C54x汇编指令系统
4.1 指令系统中的符号和缩写
4.2 指令系统
4.1 指令系统中的符号和缩写
表4-1 指令系统中的符号和缩写
返回首页
返回本节
4.2 指令系统
4.2.1 算术运算指令 4.2.2 逻辑运算指4.2.4 加载和存储指令
返回首页
4.2.1 算术运算指令
C54x的算术运算指令包括加法指令、减法指令、 乘法指令、乘累加指令与乘法减法指令、双字/双 精度运算指令及专用指令。分别如表 4-2、表 4-3、 表4-4、表4-5、表4-6、表4-7所示。
1) 加法指令
指令中表示整数时,有有符号数和无符 号数两种格式。TMS320C54x提供了多条用于加 法的指令,如ADD、ADDC、ADDM和ADDS,具体 说明见表4-2
1
0105H
SXM
AR2
1
0106H
0105H
8007H
0105H
8000H
【例7】 ADDS *AR2-,B 为何值,都不进行符号扩展
;无论SXM
指令执行前 B C AR2 00 0000 0003H x 0106H B C AR2
指令执行后 00 0000 F004H 0 0105H
第四章 TMS320C54x的数据寻址方式
第 8页
一、 数据存储器(dmad)寻址 指令中出现用程序标号或地址值表示的操作数所在的数据 存储空间的地址。 这种寻址方式有如下格式(指令的具体说明见5.2节): MVDK Smem,dmad MVDM dmad,MMR MVKD dmad,Smem MVMD MMR,dmad 【例4-2】向数据存储器传送数据。已知指令执行前,AR3 内容为0100H,数据存储器0100H中的内容为1234H。 MVDK *AR3+,1200H 执行后,数据存储器1200H中的内容为1234H,AR3中的 内容为0101H。
第四章 TMS320C54x的数 据寻址方式
2014-4-15
1
4.1立即寻址 4.2绝对寻址 4.3累加器寻址 4.4直接寻址 4.5间接寻址 4.6存储器映射寄存器寻址 4.7堆栈寻址
第 2页
在指令系统中通常有两个部分:操作码部分和操作数部分。 操作码是指具体要执行的操作,它通常以规定的助记符 (即操作符)形式出现,例如,赋值操作用LD表示,加法 操作用DADD表示,不同型号的DSP规定不同。 操作数指操作的对象,通常分源操作数(第一个操作数, 指初始操作数据)和目的操作数(第二个操作数,指操作 结果数据)。 在执行指令时,CPU首先要找到源操作数,然后再根据操作 码对操作数进行操作,最后把结果放到指令中指定的目的 操作数位置。
第 20页
一、单操作数寻址
在单操作数寻址中,还有位码倒序寻址。 例如:AR0=0000 1010B,AR2=0110 0110B,如执行 *AR2+0B 寻址功能,也就是(0110 0110)+(0000 1010), 结果AR2=0110 1101B。应注意,计算是采用从左到右运算 的。
第4章 TMS320C54x汇编指令系统
(abc)
小括号表示一个寄存器或存储单元的内容
xy
x值被传送到y(寄存器或存储单元)中
r(n-m)
表示寄存器或存储器r的第n~m位
<<nn
移位nn位,nn为正时左移,为负时右移
||
表示两指令并行操作
\\
循环左移
//
循环右移
X
X取反
|X|
X取绝对值
AAH
AA代表一个十六进制数
11
指令系统中的符号、缩写、记号与运算符
1/1
4 ADD Smem [,SHIFT], src[,dst] dst=src+Smem<< SHIFT
操作数移位后加至累加器
2/2
5 ADD Xmem, SHFT, src
src=src+Xmem<< SHFT
操作数移位后加至累加器
1/1
6 ADD Xmem, Ymem, dst
dst=Xmem<<16+Ymem<<16
说明
字数/指 令周期数
1 ADD Smem, src
src=src+Smem
操作数加至累加器
1/1
2 ADD Smem, TS, src
src=src+Smem<<TS
操作数移位后加至累加器
1/1
3 ADD Smem, 16, src [, dst]
dst=src+Smem<<16
操作数左移16位加至累加器
8 5位移位数(-16≤SHIFT≤15)
指令系统中的符号、缩写、记号与运算符
符号
含义
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
*(BUFFER), *(BUFFER),A ; (BUFFER)
A
14
3.累加器寻址 .
方法 特点 用累加器A(bit15 用累加器A(bit15 ~ 0) 中的数值作为地址来 读写程序存储器。 程序存储器 读写程序存储器。 举例 READA Smem WRITA Smem ;(A) ;Smem Smem (A) 可用来完成 可用来完成 程序存储器 程序存储器 单元的数据 数据存储 与数据存储 器单元的数 据进行交换
LD LD #93h, #93h,A 93h, 93h,A ;93h ;(93h) A A
10
特 点
注 意
2.绝对地址寻址 .
特 点 在指令中包含有所要寻址的存储单元的16位地 在指令中包含有所要寻址的存储单元的16位地 16 这个16 16位的地址可以用其所在单元的地址标号 址。这个16位的地址可以用其所在单元的地址标号 或者16位符号常数来表示。 16位符号常数来表示 或者16位符号常数来表示。 (1)数据存储器地址(damd)寻址 数据存储器地址(damd) 存储器地址 方法 举例 MVKD 用一个符号或一个数来确定数 据空间的一个地址。 据空间的一个地址。 SAMPLE, SAMPLE,*AR3 ;(SAMPLE) (AR3)
#x, LD #x,DP @u, LD @u,A @v, ADD @v,A =========== SSBX CPL @X1, LD @X1,A 16 @Y2, ADD @Y2,A
ST1中的CPL位的值确定地址的形成方式: ST1中的CPL位的值确定地址的形成方式: CPL位的值确定地址的形成方式 CPL=0 dma域与 bit的DP相结合 形成16位的数据存储器地址。 域与9 相结合, 16位的数据存储器地址 a) CPL=0, 7位dma域与9bit的DP相结合,形成16位的数据存储器地址。 7位dma域加上SP的值 形成16位的数据存储器地址。 域加上SP的值, 16位的数据存储器地址 b) CPL=1, 7位dma域加上SP的值,形成16位的数据存储器地址。
17
例:做A=X+Y=1500H .text RSBX CPL LD #3 , DP LD @X , A LD #4 , DP ADD @Y , A X: 01FFH Y: 0200H 0180H
数据存存器 0001 1000 0500
0000 0001 1111 1111B 0000 0001 1000 0000B
TMS320C54x指令系统 第四章 TMS320C54x指令系统
一.汇编语言程序的编写方法
二.寻址方式
1
一.汇编语言程序的编写方法
汇编语言源程序的句法格式 1.汇编语言源程序的句法格式 要点 格式
[标号][:] 标号][: ][ 空格 助记符 空格 [操作数] 操作数] 空格 [;注释] [;注释]
4
建议
[标号][:] 标号][: ][ 空格
助记符 空格
[操作数] 操作数] 空格
[;注释] [;注释]
要点
1.指令中的操作数或汇编命令中定义的内容 1.指令中的操作数或汇编命令中定义的内容 如常数、 如常数、符号或表达式 2.操作数之间必须用逗号 操作数之间必须用逗号“ 分开。 2.操作数之间必须用逗号“,”分开。 3.允许在操作数前使用前缀来指定操作数、立即数、 允许在操作数前使用前缀来指定操作数、立即数、
DP值是从 为基准的直接寻址把存储器分成512 DP值是从0~511,以DP为基准的直接寻址把存储器分成512页, 值是从 , DP为基准的直接寻址把存储器分成512页 位的dma范围从0~127,每页有128个可访问的单元。 dma范围从 128个可访问的单元 7位的dma范围从 ,每页有128个可访问的单元。
以.asm为扩展名 .asm为扩展名 每一行由4 每一行由4个部分组成
[ ]中的 内容为可 选择部分
供本程序的其它部分或其它程序调用。 标号是任选项,标号后面可以加也可 以不加冒号“:”。 2
要 点
1.标号必须从第1列写起, 1.标号必须从第1列写起, 标号必须从第 2.标号最多可达32个字符,可以是A 2.标号最多可达32个字符,可以是A~Z,a~z,0~9, 标号最多可达32个字符 _,以及$,但标号的第1个字符不能是数字。 以及$ 但标号的第1个字符不能是数字。 3.引用标号时,标号的大小写必须一致。 3.引用标号时,标号的大小写必须一致。 引用标号时 4.标号的值就是段程序计数器SPC的值。 4.标号的值就是段程序计数器SPC的值。 标号的值就是段程序计数器SPC的值 5.如果不用标号,则第一个字母必须为空格、分号 5.如果不用标号,则第一个字母必须为空格、 如果不用标号 空格 或星号(*)。 星号(
5.间接寻址 .
(1)单操作数寻址
I=1 为间接寻址方式 LD *AR1, B
ST1 ARF确定辅助寄存器 ST0中ARP= 确定辅助寄存器, CMPT=0 标准方式 ARF确定辅助寄存器,ST0中ARP=000 ARF=000, ARP选择辅助寄存器 选择辅助寄存器, CMPT=1 兼容方式 如ARF=000,用ARP选择辅助寄存器, 否则, ARF来确定辅助寄存器 ARF的值装入ARP。 来确定辅助寄存器。 的值装入ARP 否则,用ARF来确定辅助寄存器。ARF的值装入ARP。
3
[标号][:] 标号][: ][ 空格
助记符 空格
[操作数] 操作数] 空格
[;注释] [;注释]
要点
可以是助记符指令、汇编指令、 可以是助记符指令、汇编指令、宏指 令和宏调用命令。 令和宏调用命令。 1.助记符指令,一般用大写; 1.助记符指令,一般用大写; 助记符指令 2.汇编命令和宏命令 以句号“ 汇编命令和宏命令, 2.汇编命令和宏命令,以句号“.” 开始,且通常用小写。 开始,且通常用小写。
11
2.绝对地址寻址 .
(2)程序存储器地址(pmad)寻址 程序存储器地址(pmad) 存储器地址 TABLE, ;(TABLE) MVPD TABLE,*AR4 ;( 方法 用一个符号或一 个具体的数来确 定程序存储器中 的一个地址 (AR4)
举例
12
2.绝对地址寻址 .
(3)PA寻址 PA寻址 方法 端口(P
TMS320C54x的寻址方式 TMS320C54x的寻址方式
指令中的符号和缩写 P135表4-2 135表
Smem:16位单寻址操作数。 Smem:16位单寻址操作数。 位单寻址操作数 Xmem:16位双寻址操作数 位双寻址操作数, DB数据总线上读出 数据总线上读出。 Xmem:16位双寻址操作数,从DB数据总线上读出。 Ymem:16位双寻址操作数 位双寻址操作数, CB数据总线上读出 数据总线上读出。 Ymem:16位双寻址操作数,从CB数据总线上读出。 dmad:16位立即数 数据存储器地址。 位立即数, dmad:16位立即数,数据存储器地址。 pmad:16位立即数 程序存储器地址。 位立即数, pmad:16位立即数,程序存储器地址。 PA: 16位立即数,I/O口地址。 PA: 16位立即数,I/O口地址。 位立即数 口地址 src: 源累加器( src: 源累加器(A或B)。 dst: 目的累加器( dst: 目的累加器(A或B)。 lk: 16位长立即数 位长立即数。 lk: 16位长立即数。
8
寻址分类
1.立即数寻址 2.绝对地址寻址 . 3.累加器寻址 . 4.直接寻址 . 5.间接寻址 . 6.存储器映象寄存器寻址 . 7.堆栈寻址 .
9
1.立即数寻址
指令中包含有执行指令所需要的操作数。 指令中包含有执行指令所需要的操作数。 立即数分为3 位的短立即数和16 16位的 立即数分为3、5、8或9位的短立即数和16位的 长立即数两种。 长立即数两种。 短立即数可包含在单字或双字指令中, 短立即数可包含在单字或双字指令中,长立即 数在双字指令中。 数在双字指令中。 在操作数前面需要加# 在操作数前面需要加#字号来说明该操作数为立 即数。否则会把该操作数误认为是一个地址, 即数。否则会把该操作数误认为是一个地址,从而 把立即数寻址变成绝对地址寻址。 把立即数寻址变成绝对地址寻址。 举例
6
2.汇编语言源程序的数据型式
二进制: 二进制:如1110001b或1111001B; 或 ; 八进制: 八进制:如226q或572Q; 或 ; 十进制: 缺省型) 十进制:如1234或+1234或-1234(缺省型 或 或 缺省型 十六进制:如0A40h或0A40H或0xA40 十六进制: 或 或 浮点数: 语言程序中能用, 浮点数:如1.623e-23(仅C语言程序中能用,汇编程序不能用 仅 语言程序中能用 汇编程序不能用) 字符: 字符:‘D’ 字符串:“this is a string” 字符串:
20
定义间接寻 址的类型
定义寻址所使用 的辅助寄存器
单数据存储器操作数间接寻址类型
MOD域 域 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 操作码语法 *ARx *ARx*ARx+ *+ARx *ARx-0B *ARx-0 *ARx+0 *ARx+0B *ARx-% *ARx-0% *ARx+% *ARx+0% *ARx(lk) ( ) *+ARx(lk) ( ) *+ARx(lk)% ( ) *(lk) ( ) addr=ARx addr=ARx ARx=ARx-1 addr=ARx ARx=ARx+1 addr=ARx+1 ARx=ARx+1 addr=ARx ARx=B(ARx-AR0) ( ) addr=ARx ARx=ARx-AR0 addr=ARx ARx=ARx+AR0 addr=ARx ARx=B(ARx+AR0) ( ) addr=ARx ARx=circ(ARx-1) ( ) addr=ARx ARx=circ(ARx-AR0) ( ) addr=ARx ARx=circ(ARx+1) ( ) addr=ARx ARx=circ(ARx+AR0) ( ) addr=ARx+lk ARx=ARx addr=ARx+lk ARx=ARx+lk addr=circ(ARx+lk) ( ) ARx=circ(ARx+lk) ( ) addr=lk 功 能 说 ARx包含了数据存储器地址 包含了数据存储器地址 访问后, 中的地址减1 访问后,ARx中的地址减 ② 中的地址减 访问后, 中的地址加1 访问后,ARx中的地址加 ① 中的地址加 在寻址前, 中的地址加1, 在寻址前,ARx中的地址加 ,然后再寻址①②③ 中的地址加 访问后, 中以位倒序进位的方式减去AR0 访问后,从ARx中以位倒序进位的方式减去 中以位倒序进位的方式减去 访问后, 中减去AR0 访问后,从ARx中减去 中减去 访问后, 加到ARx中去 访问后,把AR0加到 加到 中去 访问后,把AR0以位倒序进位的方式加到 以位倒序进位的方式加到ARx中 访问后, 以位倒序进位的方式加到 中 访问后, 中的地址以循环寻址的方式减1 访问后,ARx中的地址以循环寻址的方式减 ① 中的地址以循环寻址的方式减 访问后,从ARx中以循环寻址的方式减去 访问后, 中以循环寻址的方式减去AR0 中以循环寻址的方式减去 访问后, 中的地址以循环寻址的方式加1 访问后,ARx中的地址以循环寻址的方式加 ① 中的地址以循环寻址的方式加 访问后, 以循环寻址的方式加到ARx中 访问后,把AR0以循环寻址的方式加到 以循环寻址的方式加到 中 ARx和16位的长偏移(lk)的和用来作为数据存储器地址。 和 位的长偏移 位的长偏移( )的和用来作为数据存储器地址。 ARx本身不被修改 本身不被修改 在寻址前,把一个带符号的16位的长偏移 位的长偏移( )加到ARx中, 在寻址前 ,把一个带符号的 位的长偏移( lk)加到 中 然后用新的ARx的值作为数据存储器的地址③ 的值作为数据存储器的地址 然后用新的 在寻址前,把一个带符号的16位的长偏移以循环寻址的方式 在寻址前,把一个带符号的 位的长偏移以循环寻址的方式 加到ARx中, 然后再用新的 加到 中 然后再用新的ARx的值作为数据存储器的地址 的值作为数据存储器的地址