第4章 'C54x的数据寻址方式-剪
第4章 'C54x的汇编语言程序设计
第4章 TMS320C54x汇编语言程序设计
2.标号 在使用标号时,标号的值是段程序计数器SPC的 当前值。 例如,若使用.word伪指令初始化几个字,则标 号将指到第一个字。
【例4.1.2】 标号格式举例。 … … ;假设汇编了某个其他代码 9 000000 10 000040 000A Start: .word 0Ah,3,7 000041 0003 标号,值为40h 000042 0007
第4章 TMS320C54x汇编语言程序设计
(1) 指令的操作数前缀 ② 用“*”作前缀
使用“*”符号作为前缀,汇编器将操作数作为 间接地址,即把操作数的内容作为地址。 例如: Label: LD * AR3, B 操作数*AR3指定一个间接地址。该指令将引导 汇编器找到寄存器AR3的内容作为地址,然后将该地 址中的内容装入指定的累加器B中。
Begin: 标 号
LD #NANHUA,AR1 ; 将1加载到AR1 助记符 操作数 注 释
第4章 TMS320C54x汇编语言程序设计
1. 源文件格式
语句的书写规则:
① 所有语句必须以标号、空格、星号或分号 (*或;)开始; ② 标号是可选项,若使用标号,则标号必须 从第一列开始; ③ 所有包含有汇编伪指令的语句必须在一行 完成指定; ④ 各部分之间必须用空格分开,Tab字符与空 格等效;
第4章 TMS320C54x汇编语言程序设计
(1) 指令的操作数前缀 ③ 用“@”作前缀
使用“@”符号作为前缀,汇编器将操作数作为 直接地址,即操作数由直接地址码赋值。 例如: Label: LD @ x, A
只要DP=0,将直接地址x中的内容装入指定的累 加器A中。
第4章 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的指令系统寻址方式
注意:*这(1k种)寻寻址的址指可令不用能于与循支环指持令单(RP数T,据RPT存Z)一储起器使用操。作数的指令。
2023年10月16日7时22分
DSP原理及应用
13
注意:在立即寻址的指令中,应在数值或符号前面加
一个“#”,表示是一个立即数,以区别于地址
。 2023年10月16日7时22分
DSP原理及应用
7
2 绝对寻址
指令中含有所要寻找的操作数的16位存储单元 地址。
16位地址表示形式: ① 地址标号,如:TABLE; ② 16位符号常量,如:89AB、1234。
④ *(1k)寻址。
2023年10月16日7时22分
DSP原理及应用
9
1.数据存储器地址寻址 用于确定操作数存于数据存储单元的地址。
语法:使用一个程序标号或一个数字来指定数 据空间的一个地址。
例如,将数据存储器EXAM1地址单元中的数据复 制到AR5寄存器所指向的数据存储单元中。
MVKD EXAM1, * AR5
快速寻址存储器映象寄存 器
压入/弹出数据存储器和 存储器映像寄存器MMR
LD #10,A STL A,*(y) READA x LD @x,A LD *AR1,A LDM ST1,B PSHM AG
立即数10 A 将AL内容存入y所在的存储单 元 将A的内容作为地址读程序存 储器,并存入x存储单元 (DP+x的低7位地址) A
TMS320C54x的指令系统 寻址方式
寻址方式
当硬件执行指令时,寻找指令所指定的参与
运算的操作数的方法——寻址方式。
根据程序的要求采用不同的寻址方式,可以有
效地缩短程序的运行时间和提高代码执行效率。
’C54x芯片的寻址方式可以分为两类:
第4章_'C54x的汇编语言程序设计
DSP原理及应用
4.1.3 汇编源程序中的符号
通常,标号是局部变量,在一个文件中
局部使用的标号必须是唯一的。 助记符操作码和汇编伪指令名(不带前缀 “.”)为有效标号。 标号分大小写。 例如:ABC,Abc,abc是3个不同的符 号。
DSP原理及应用
4.1.4 汇编源程序中的表达式
【例4.1.4】 段伪指令的使用。
15 ************************************ 16 * 开始汇编到命名的初始化段 * 17 * var_defs * 18 ************************************ 19 000000 .sect “var_defs” 20 000000 0011 .word 17,18 000001 0012 21
7
【例4.1.4】 段伪指令的使用。
8 9 10 11 000000 12 000000 000001 13 000002 000003 14 ************************************ * 开始汇编到.data段 * ************************************ .data 0009 .word 9,10 000A 000B .word 11,12 000C
第4章 TMS320C54x汇编语言 程序设计
4.1 概述
4.1.1 汇编语言源程序格式 汇编语言程序以.asm为扩展名,可以用任意的编辑 器编写源文件。
一条语句占源程序的一行,长度可以是源文件编辑 器格式允许的长度,但汇编器每行最多读200个字符。 因此,语句的执行部分必须限制在200个字符以内。
以选用标号,供本程序或其它程序调用。 ① 标号必须从语句的第1列写起,其后 的冒号“:”可任选; ② 若不使用标号,则语句的第一列必须 是空格、星号或分号; ③ 标号是由字母、数字以及下划线和美 元符号等组成,最多可达32个字符; ④ 标号分大小写,且第一个字符不能是 数字。
第4章TMS320C54x汇编指令系统
表4-8 与逻辑运算指令
表4-9 或逻辑运算指令
表4-10 异或逻辑运算指令
表4-11 移位逻辑运算指令
表4-12 测试指令 返回本节
4.2.3 程序控制指令
程序控制指令包括分支转移指令、子程序调用指 令、中断指令、返回指令、重复指令、堆栈操作 指令及混合程序控制指令,分别如表4-13、表414、表4-15、表4-16、表4-17、表4-18及表4-19 所示。
表4-2 加法指令
表4-3 减法指令
表4-4 乘法指令
表4-5 乘加和乘减指令
表4-6 双精度(32位操作数)指令
表4-7 专用指令 返回本节
4.2.2 逻辑运算指令
逻辑指令包括与、或、异或(按位)、移位和测 试指令,分别如表4-8、表4-9、表4-10、表4-11、 表4-12所示。
表4-13 分支转移指令
表4-14 子程序调用指令
表4-15 中断指令
表4-16 返回指令
表4-17 Байду номын сангаас复指令
表4-18 堆栈操作指令
表4-19 混合程序控制指令 返回本节
4.2.4 加载和存储指令
加载和存储指令包括加载指令、存储指令、条件 存储指令、并行加载和存储指令、并行加载和乘 法指令、并行存储和加/减法指令、混合加载和存 储指令,分别如表4-20、表4-21、表4-22、表423、表4-24、表4-25、表4-26及表4-27所示。加 载指令是将存储器内容或立即数赋给目的寄存器; 存储指令是把源操作数或立即数存入存储器或寄 存器。
4.1 指令系统中的符号和缩写
表4-1 指令系统中的符号和缩写
返回首页
返回本节
4.2 指令系统
4.2.1 算术运算指令 4.2.2 逻辑运算指令 4.2.3 程序控制指令 4.2.4 加载和存储指令
DSP中C54x指令系统
start: LD #100, A ;64HÆ(AL) LD #10h, 4, A ;10H<<4是100HÆ(AL) AL在内存地址是0008H LD #32768, B ; 32768是 8000HÆ(BL) BL在内存地址是000BH LD #0A000h, 16, B ;A000H<<16是A0000000HÆ(B) ; B在内存的地址是: 000BH和000CH
LD *(BUFFER),A ;将BUFFER符号所指的数据存储单元 ; 中的数传送到累加器A
需要注意的是: 1. 指令长度是2个字,包括要寻单元的地址。 2.指令有较强的针对性,RAMÆRAM,ROMÆRAM和端 口Æ RAM的操作。
ESIEE, Slide 6
三、累加器寻址
3.1 数据的寻址方式
ESIEE, Slide 1
一、立即寻址(续)
16 位长值常数 需要2 字,2周期 ARi初始化例子
3.1 数据的寻址方式
Example: STM #1234h, AR2
AR2赋值1234h.
短值 3, 5, 8, 9 位短值常数 需要1 字,1周期 为用于初始化短寄存器 或位域,如:
直接寻址 = 是相对一个基地址的随机访问。
直接寻址是在指令中,包含有数据存储器地址的
低7位(dmad)。该7位作为偏移地址值与基地址值
是数据页指针DP 9位或堆栈指针SP是16位。
数据存储器被分为: 512 pages of 128 words (512×128 = 216)。
数据页指针 DP(9位) : dmad(7位)
ESIEE, Slide 18
五、间接寻址模式 *ARi
3.1 数据的寻址方式
第4章 TMS320C54的数据寻址方式
(2)位倒序寻址 用于快速傅氏变换算法FFT。 位码顺序寻址:按照二进制递增规律寻址。 如:0000,0001,0010,0011,…,1111。 位码倒序寻址:根据二进制递增码,按其位码倒序的规 律进行寻址。
如:0000,1000,0100,1100,…,1111。
表4-3 位码顺序和倒序对照表
位码倒序寻址
存储单元地址 0000 0001 0010 0011 0100 0101 0110 0111 1000 变换结果 X(0) X(8) X(4) X(12) X(2) X(10) X(6) X(14) X(1) 位码倒序寻址 0000 1000 0100 1100 0010 1010 0110 1110 0001 位码倒序寻址结果 X(0) X(1) X(2) X(3) X(4) X(5) X(6) X(7) X(8)
4.5.2 双操作数寻址
用于完成执行2次读操作或者1次读和1次写的并行 存储操作(用‖表示)。这些指令代码都是1个字长, 而且只能以间接寻址方式进行操作。 两个数据存储器操作数由Xmem和Ymem表示。
Xmem:读操作数;
在两次读操作的指令中,表示一个读操作数;
Ymem:
在一次读和一次写的指令中,表示写操 作数。
N应满足:2N>R的最小整数
例如:缓冲区长度R=32, 使2N>32的最小整数为6, 所以取N=6。 缓冲区开始的地址:xxxx xxxx xx00 0000B
缓冲区长度R=32装入循环缓冲长度寄存器BK中。
循环寻址是以BK的值为模,对缓冲区长度R进行取 模运算
循环寻址通常是指定一个辅助寄存器ARx指 向循环缓冲区; 循环缓冲区的有效基地址(EFB)就是用户指 定的辅助寄存器(ARx)的低N位置0后所得到 的值; 循环缓冲区的尾基地址(EOB)是通过用BK的 低N代替ARx的低N位得到;
TMS320C54x的寻址方式
方法
特点
(AR0~AR7)→ ARAU0/ARAU1 → 16位无符号算术 运算→ 寻址范围为64K
能在一个指令中访问 两个数据存储器单元
两个独立的存储器单元读数据 读一个、写另一个存储器单元 读写两个连续的存储器单元 11
(1)单操作数寻址
LD *AR1,B
ST0
ARP
定义间接寻
定义寻址所使用
ST1:
址
20
7.堆栈寻址
功能
特点
PSHD *AR2 POPD *AR3
用来在中断和 子程序调用时 自动保存程序 计数器(PC) 中的数值,也 能用来保护现 场或传送参数
从高地址向低地址方向生长,
SP用来管理堆栈,SP始终指向
堆栈中所存放的最后一个数据,
即SP指针始终指向栈顶。在压
入操作时,先减小SP的值,再
TMS320C54x的寻址方式
Smem:16位单寻址操作数。 Xmem:16位双寻址操作数,从DB数据总线上读出。 缩 Ymem:16位双寻址操作数,从CB数据总线上读出。 写 dmad:16位立即数,数据存储器地址。 pmad:16位立即数,程序存储器地址。 PA: 16位立即数,I/O口地址。 src: 源累加器(A或B)。 dst: 目的累加器(A或B)。 lk: 16位长立即数。
访问后,ARx中的地址加1 访问后,AR0以循环寻址的
方式加到ARx中 19
6.存储器映象寄存器寻址
功能
方法
举例 特点
用来修 改存储 器映象 寄存器
高9位数据 存储器地址 被置0,利 用指令中的 低7位地址 访问MMR。
LDM PRD,A
0页寻址。 不影响当前 DP或SP值 。 用于直接寻 址和间接寻
TMS320C54X 汇编语言
TMS320C54X 汇编语言目录第一章 寻址方式第二章 汇编语言指令系统第三章 汇编指令(伪指令)第四章 宏第五章 汇编源程序的语句格式第一章寻址方式C54X提供了七种基本寻址方式:1,立即寻址,一个固定立即值编入指令;2,绝对寻址,一个固定地址编入指令中;3,累加器寻址,用一累加器中的内容去寻址程序存储器。
4,直接寻址,相对DP或SP的偏移地址编入指令中的低七位。
偏移地址加DP或SP 决定数据存储器中的实际地址;5,间接寻址,用辅助寄存器访问存储器;6,存储器-映射寄存器寻址,修改存储器-映射寄存器不会影响到当前DP或SP的值;7,堆栈寻址,把数据压入或弹出系统堆栈。
一、立即寻址在立即寻址中,指令结构中包含操作数的特定值(立即数)。
两种类型的值可以编入指令:1,短立即数可以是3、5、8或9位长;2,16位的长立即数立即数可被编入1-字或2-字的指令中。
3、5、8或9位短立即数编入1-字指令;16位长立即数编入2-字指令中。
编入指令中的立即数的长度取决于所用指令的类型。
下表列出可编入立即数的C54指令。
表中也给出了可编入指令中的立即数位数。
3-和5-位立即数8-位立即数9-位立即数16-位立即数LD FRAMELDRPT LD ADD ORMADDM RPTAND RPTZANDM STBITF STMLD XORMAC XORMOR在立即数寻址中,要在立即数或符号前加“#”号来表示立即数。
如,把80H装入累加器A 中:LD #80h, A下图使用了RPT指令以表明短立即数如何在立即寻址方式时编入指令中。
指令中的操作码编入指令的高8位。
立即数编入指令的低8位。
例:RPT #99H15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 1 1 1 0 1 1 0 0 1 0 0 1 1 0 0 18位操作码8位立即数下图使用了RPT指令以表明长立即数如何在立即寻址方式时编入指令中。
第四章 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
数据寻址方式介绍
间接寻址续
Copyright © 2003 Texas Instruments. All rights reserved.
存储器映射寄存器寻址
存储器映射寄存器寻址用来修改存储器映射寄存器而不 影响当前数据页指针(DP)或堆栈指针(SP)的值。存储器 映射寄存器寻址可以在直接寻址和间接寻址方式下工作。 ☆ 采用直接寻址方式时,高9位数据存储器地址被置为0, 利用指令中的低7位地址访问MMR; ☆ 采样间接寻址方式时,高9位数据存储器地址被置为0, 按照当前辅助寄存器中的低7位地址访问MMR。 C54x DSP只有8条指令可以进行存储器映射寄存器寻址 操作: LDM / MVDM / MVMD / MVMM POPM / PSHM /STLM / STM
Copyright © 2003 Texas Instruments. All rights reserved.
立即数寻址
在立即寻址方式中,指令语法可以使用两种类型的立即数: ☆ 长度为3、5、8或9位的短立即数; ☆ 长度为16位的长立即数; 立即数值可以按单字或双字指令进行编码,长度为3、5、 8或9位的短立即数编码到单字指令,长度为16位的长立即数 编码到双字指令。 在立即寻址方式的指令中,数字前面加一个#号,表示 一个立即数。 例: LD #80h,A
Copyright © 2003 Texas Instruments. All rights reserved.
数据寻址方式分类 数据寻址方式分类
C54x DSP提供了七种基本的数据寻址方式: ☆ 立即数寻址——指令中嵌有一个固定的数; ☆ 绝对地址寻址——指令中有一个固定的地址; ☆ 累加器寻址——按累加器内的地址去访问程序 存储器中的一个单元; ☆ 直接寻址——指令中的7bits是一个数据页内的 偏移地址,而所在的数据页由数据页指针DP或SP决 该偏移值加上DP或SP的值决定了在数据存储器中的 际地址;
DSP-5C54x指令系统1
说明
访问后,ARx中的地址以循环寻址的方式 减1 访问后,从ARx中以循环寻址的方式减去 AR0
访问后,ARx中的地址以循环寻址的方式 加1
访 问 后 , 把 AR0 以 循 环 寻 址 的 方 式 加 到 ARx中
ARx和16位的长偏移(lk)的和用来作为数据存 储器地址。ARx本身不被修改 在寻址前,把一个带符号的16位的长偏移(lk) 加到ARx中,然后用新的ARx的值作为数据存储 器的地址 在寻址前,把一个带符号的16位的长偏移以循 环寻址的方式加到ARx中,然后再用新的ARx的 值作为数据存储器的地址 一个无符号的16位的长偏移(lk)用来作为数 据存储器的绝对地址。(也属绝对寻址)
DP
032
执行后 00 0000 0257
032
Program Memory 0257H
0306
4339
Data Memory 1906H
4339
4339
15
5.2 数据寻址方式
(5)存储器映像寄存器寻址
特点: 0页寻址。不影响当前DP或SP值,用于直接寻址和间接寻址。 C54x共有8条指令可以进行MMR寻址。
4
5.2 数据寻址方式
(1)立即数寻址
• 指令中包含有执行指令所需要的操作数。
• 立即数分为3、5、8或9位的短立即数和16位的长立即数两种。
• 短立即数可包含在单字或双字指令中,长立即数在双字指令中。
注意
在操作数前面需要加#字号来说明该操作数为立即数。否则会把该
操作数误认为是一个地址,从而把立即数寻址变成绝对地址寻址。
;累加器低位存入MMR
STM #lk,MMR
;长立即数lk存入MMR
C54x DSP的寻址方式及代数汇编指令
C54x DSP的寻址方式及代数汇编指令c54xdsp的寻址方式及代数汇编指令附录三:c54xdsp的寻址方式及代数汇编语言指令c54xdsp的串行方式tms320c54x系列dsp的存储空间包括程序存储空间、数据存储空间和i/o空间。
每个空间都有64k字的大小。
因此,如果采用直接的寻址方式则需16位的地址。
为了节省程序存储空间和提高程序的运行速度,经常采用间接寻址等方法以便使指令字节数减少。
在本章内将对c54x的寻址方式做较为详细的介绍。
1.程序空间串行16位直接寻址方式主要应用于程序的调用(callpmad)、跳转指令(gotopmad)和块重复指令((d)blockrepeat)中。
具体说明如下:1、pmad所指的就是16十一位程序计数器pc的内容,它代表的就是程序存储空间的地址(programmemoryaddress);2、call指令和goto指令包含无条件的call和goto和有条件的call和goto。
3、块重复指令(d)blockrepeat的初始地址藏于寄存器rsa(repeatstartingaddress)中,结束地址存于寄存器rea(repeatendingaddress)中,重复次数存于寄存器brc(blockrepeatcounter)中。
4、pc、brc、rsa、rea坐落于pagen(programaddressgenerator)当中,见到图(3a-1)。
rcbrcrsarea图(3a-1)pagen程序计数器pc2.数据空间串行数据空间的寻址正如同8086微机的寻址问题一样重要,只有正确掌握c54x数据空间的c54x提供了7种基本寻址方式:?立即寻址.1寻址方式才能正确编制c54x的汇编程序。
绝对串行.?累加器串行.?轻易串行.辅助寄存器间接寻址.?内存映射寄存器寻址.?堆栈寻址.在本节中将详尽表明这7种串行方式。
坚信详尽写作本节可以有利于对c54x处理器的重新认识和认知,并在程序的基本建设中熟练地运用这些串行方式。
数据的寻址方式
表4.8 单操作数间接寻址类型
句法 *ARx *ARx*ARx+ *+ARx *ARx-0B *ARx-0
功能
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
STM #0x0421, T
STM A,*AR1+
执行指令之前(AR1)=0321H,执行指令ST T,*AR1后,(AR1)= 。
直接寻址中,基地址可由
或SP来确定。
10
计算 y xi 。 i1
loop:
.title
“sum.asm”
.mmregs
(1)
.bss y,1
指令中16位的有效地址为数据存储空间的地址。
② 程序存储器地址(pmad)寻址: 指令中16位的有效地址为程序存储空间的地址。
③ 端口地址(PA)寻址: 指令中16位的有效地址为外部的端口地址。
PORTR PA,Smem PORTW Smem,PA ④ 长立即数 *(Ik)寻址 指令中16位的有效地址为数据存储空间地址。
例: 1. MVDK DAT10,8000H ⒉ MVDP DAT0,0FE00H 3. PORTR 05,INDAT;INDAT .equ 60H
⒊ 累加器寻址: 把累加器内的内容作为地址去访问程序存 储器的一个单元;(A)→ Pmem
READA Smem
※⒋ 直接寻址
WRITA Smem
⑴ 指令中的7 bit是一个数据页内的偏移地址,Dmem的
(2)
STM #m,AR2
4.1-C54X-指令系统PPT课件
后变址,减一
0010 *ARx+
Addr=ARx ARx=ARx+1
后变址,=ARx+1
前变址,加一
0100 *ARx-0B Addr=ARx
后变址,倒序减AR0
ARx=B(ARx-AR0)
0101 *ARx-0 Addr=ARx
后变址,减 AR0
ARx=ARx-AR0
2021/3/10
14
C54X 寻址方式——单操作数间接寻址(3)
MOD 语法 0110 *ARx+0 0111 *ARx+0B 1000 *ARx-% 1001 *ARx-0% 1010 *ARx+% 1011 *ARx+0%
功能
说明
Addr=ARx ARx= ARx+AR0
2021/3/10
3
C54X 寻址方式——绝对地址寻址
指令携带有要寻址操作数的16位绝对地址,可以是程序空 间绝对地址、数据空间绝对地址、IO空间绝对地址。
指令中携带地址,且为16位,所以该类指令为两个字长。 绝对寻址有四中,如下:
数据空间绝对地址寻址,操作数存放在数据存储空间 程序空间绝对地址寻址,操作数存放在程序存储空间 IO空间绝对地址寻址,操作数存放在IO存储空间 数据空间直接地址指针,操作数存放在数据存储空间
.set 0x2345 *AR3, DAport
2021/3/10
8
C54X 寻址方式——直接地址指针(数据空间)
buf LD
.set 0x2345 * (buf),A
2021/3/10
9
C54X 寻址方式——直接寻址
指令携带有要寻址的操作数部分地址,即操作数地址的低 7位,高9位由DP、SP或制定
2
C54X 寻址方式——立即数寻址
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中的数据送入累加器 的单元数据送入AR1 A中 寄存器
8
绝对寻址是利用16位地址来寻址操作数的存储 单元。由于绝对地址代码的位数为16位,所以绝对 地址寻址的指令至少应为2个字长。 绝对寻址有四种类型 : ① 数据存储器地址(dmad)寻址;
② 程序存储器地址(pmad)寻址;
主要用于初始化 利用16位地址寻址存储单元 将累加器中的内容作为地址 利用数据页指针和堆栈指针 寻址 利用辅助寄存器作为地址指 针 快速寻址存储器映象寄存器 压入/弹出数据存储器和存储 器映像寄存器MMR
LD #10,A STL A,*(y) READA x LD @x,A LD *AR1,A LDM ST1,B PSHM AG
1
4.0 寻址方式
当硬件执行指令时,寻找指令所指定的参与
运算的操作数的方法——寻址方式。
根据程序的要求采用不同的寻址方式,可以有
效地缩短程序的运行时间和提高代码执行效率。
’C54x芯片的寻址方式可以分为两类:
● 数据寻址
2014年1月14日
● 程序寻址
DSP原理及应用 2
’C54x有7种基本的数据寻址方式:
据相加
2014年1月14日 DSP原理及应用
22
直接寻址特点:
① 所寻址数据存储器的16位地址是由DP或SP 与7位偏移地址dmad构成; ② 可在单周期寻址128个单元; ③ 寻址速度快,能进行流水线并行操作。 用途:主要用于要求运算速度较快的场合。 注意:① 上述两种直接寻址方式是相互排斥的; ② 采用DP寻址时,要注意数据所在的页面 指针。
立即寻址 :由指令提供一个操作数 绝对寻址 :由指令提供一个操作数地址 累加器寻址 :以累加器的内容为地址访问程序空间某单元 直接寻址 :寻址地址为DP或SP的值加上指令提供的偏移量 间接寻址 :利用辅助寄存器访问存储器 存储器映像 :用来改变映像寄存器,但不影响DP或SP的值 寄存器寻址 堆栈寻址 :用来管理系统堆栈中的操作
程序存储器的 16位地址pmad值
2014年1月14日 DSP原理及应用 11
3.端口(PA)寻址
用一个符号或一个常数来确定外部I/O端口的
地址。 例如,把一个数从端口为FIFO的I/O口复制到 AR5寄存器所指向的数据存储单元中。 PORTR FIFO, * AR5
I/O端口地址PA
2014年1月14日
结果 DP dma ;CPL 复位 0000 1500 dma A 00 DP 0 0000 0011 111 1111 0 0000 0011 DP000 111 0000 1111 ;立即数 A 3赋给 @x
;x 单元的数据送入 A 机器码 0 0000 0011 111 1111 操作码 0 111 1111 @x 00 00 0000 0000 1000 1001 01 FF
特点:指令中含有一个固定的立即数,运行速度 较快,但需占用程序存储空间,并且数值不能改变。
立即数80H
用途:用于表示常数或对寄存器初始化。
2014年1月14日 DSP原理及应用 6
支持立即数的指令
3位 立即数 LD 5位 立即数 LD 8位 立即数 FRAME LD RPT 9位 立即数 LD ADD ANDM LD ORM ST XOR 16位 立即数 ADDM BITF MAC RPT STM XORM AND CMPM OR RPTZ SUB
2014年1月14日
DSP原理及应用
4
部分寻址缩略语
缩略语
Smem Xmem
Ymem dmad pmad
含
16位单寻址操作数
义
16 位双寻址操作数,用于双操作数或部分单操作数指 令,从DB数据总线上读取
16位双寻址操作数,用于双操作数指令,从CB数据总 线上读取 16位立即数:数据存储器地址(0~65 535) 16位立即数:程序存储器地址(0~65 535)
2014年1月14日
DSP原理及应用
21
例2:数据存储器存储数据如图所示,利用堆栈指针SP直 接寻址,求堆栈中距栈顶两个数x,y的和。
数据存储器
SP→ x: y:
0020
0100 0050 A000
. . .
SSBX LD
1 2
执行结果 SP 0000 0010 0000 CPL ;CPL 置位
@1,A ;x单元的数据送入A
DP 0011 0 000 0000 操作码 @y 0 0000 0180H 0001 1 800 @y 据相加
00 0000 1500 0200H 0500
0200
A 1000 00 0000 1500
0 1@x FF
dma 结果 LD #4,DP + 000 @y1001 0200H 0500 0 0000 0100 0000 + ;机器码 完成 x 和 y 单元的数 00 0000 1001 A
注意:在立即寻址的指令中,应在数值或符号前面加 一个“#”,表示是一个立即数,以区别于地址
2014年1月14日
。
DSP原理及应用
7
4.2 绝对寻址
指令中包含要寻址的存储单元的16位地址。
16位地址表示形式: ① 地址标号,如:TABLE; ② 16位符号常量,如:89AB、1234。 特点:指令中包含一个固定的16位地址,能寻 例如:址所有数据存储空间,但运行速度慢, 需要较大的存储空间。 MVKD TABLE,*AR1;将 ;将数据存储器 TABLE为地址 LD *(DATA),A DATA指定的数据存储单元 用途:用于对速度要求较低的场合。 指定的数据存储单元中
当CPL=1时,
直接寻址 指 令
15~8 7 6~0
操作码
I=0
dmad
堆栈指针SP
16位堆栈指针SP
SP+dmad
16位数据 存储器地址 16位SP+dmad 高 9位
2014年1月14日 DSP原理及应用
dmad
低 7位
18
4.4 直接寻址
DP地址的范围是从0~511(29-1),将存储器分成 512页。 7 位 dmad 范围是从 0 ~ 127 ,每页有 128 个可以访 问的单元。
+
dmay
X地址
0000 0200H A 00 0000 0150 dmax0150 000 0001 A 00 0000 0100 @1=0201H
000 0010 0202H 0050 @2=0202H
y地址 0 2 0 2
0201 x和y单元的数 ADD @2,A ;完成 00 0000 0150
DSP原理及应用
12
4. *(lk)寻址 使用一个指定数据空间的地址来确定数据存 储器中的一个地址。 语法:允许所有使用单数据存储器(Smem)寻址 的指令去访问数据空间的任意单元,而 不改变DP的值,也不用对AR进行初始化。 例如,把地址为PN的数据单元中的数据装到累 加器A中。 LD *(PN), A
② 在偏移量前加@,如@5。
利用直接寻址可以在不改变DP或SP的情况下, 随机寻址128个存储单元中的任何一个单元。 直接寻址的优点:每条指令只需要一个字。
2014年1月14日
DSP原理及应用
20ቤተ መጻሕፍቲ ባይዱ
4.4 直接寻址
例 1 :数据存储器存储数据如图所示,采用数据页指针 DP直接寻址,完成x,y单元的两个数据求和。
③ 端口(PA)寻址;
④ *(lk)寻址。
2014年1月14日 DSP原理及应用 9
1.数据存储器地址寻址
用于确定操作数存于数据存储单元的地址。
语法:使用一个程序标号或一个数字来指定数
据空间的一个地址。
例如,将数据存储器EXAM1地址单元中的数据复 制到AR5寄存器所指向的数据存储单元中。 MVKD EXAM1, * AR5
2014年1月14日 DSP原理及应用 3
寻址方式 立即寻址 绝对寻址 累加器寻址 直接寻址 间接寻址 存储器映像 寄存器寻址 堆栈寻址
用
途
举
例
指令含义 立即数10 A 将AL内容存入y所在的存储单 元 将A的内容作为地址读程序存 储器,并存入x存储单元 (DP+x的低7位地址) A ((AR1)) A (ST1) B (SP)-1 SP,(AG) (SP)
2014年1月14日 DSP原理及应用 16
地址形成过程:
当CPL=0时,
直接寻址 指 令
页指针DP (位于ST0中)
15~8 7 6~0
操作码
I=0
dmad
9位数据页指针DP
16位数据 存储器地址
9位数据页指针DP
dmad
高 9位
2014年1月14日 DSP原理及应用
低 7位
17
地址形成过程:
2014年1月14日 DSP原理及应用 14
存储器中的数据,并将数据送 入Smem指定的数据存储单元。
4.4 直接寻址
利用数据指针DP和堆栈指针SP寻址。 指令格式:
15 ~ 8 7 6~0
操 作 码
I=0
数据存储器地址(dmad)
特点:① 指令中只含有数据存储器的低7位地 指令的标识符 数据存储器地址 址(偏移地址 dmad); 指令的8位操作码 包含了数据存储器偏移地址 表示指令为直接寻址 ② 16位数据存储器地址由基地址(数据 页指针DP或堆栈指针SP)和偏移地址 (dmad)共同构成。
第4章 数据寻址方式
内容提要
’C54x的指令系统包含助记符指令和代数指令 两种形式。 助记符指令:是一种采用助记符号表示的类似 于汇编语言的指令; 代数指令:是一种比汇编语言更高级,类似于 高级语言的代数形式指令,具有接近汇编语言的特 点。 本章着重介绍七种寻址方式