第4章 'C54x的数据寻址方式-剪
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据存储器 地址 第 3 页 数据
0180 0001 . . . . . .
X: 01FF 1000 y: 0200 0500 第 . . . . 4 . . 页
RSBX CPL RSBX CPL LD #3,DP LD #3,DP LD @x,A LD @x,A ADD #4,DP LD @y,A ADD @y,A ADD @y,A
注意: ③ ① 只能使用累加器 大多数’ C54x用A 寻址程序空间。 的低16位作为程序存储器 ② WRITA 上述两条指令重复使用时,累加器 A自动增 Smem ;将Smem指定的数据存储单元中的 的地址,而’ CA 548 和’ C549 是以 A 的低 23 位作为程 减; ④ 累加器 用来寻址程序空间。 Smem 用来寻址 数据,写入 A所指定的程序存储 序存储器地址,’ C5402是以 A的低20位作为程序存 单元。 数据空间。 储器地址;
特点:指令中含有一个固定的立即数,运行速度 较快,但需占用程序存储空间,并且数值不能改变。
立即数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
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原理及应用 14
存储器中的数据,并将数据送 入Smem指定的数据存储单元。
4.4 直接寻址
利用数据指针DP和堆栈指针SP寻址。 指令格式:
15 ~ 8 7 6~0
操 作 码
I=0
数据存储器地址(dmad)
特点:① 指令中只含有数据存储器的低7位地 指令的标识符 数据存储器地址 址(偏移地址 dmad); 指令的8位操作码 包含了数据存储器偏移地址 表示指令为直接寻址 ② 16位数据存储器地址由基地址(数据 页指针DP或堆栈指针SP)和偏移地址 (dmad)共同构成。
② 在偏移量前加@,如@5。
利用直接寻址可以在不改变DP或SP的情况下, 随机寻址128个存储单元中的任何一个单元。 直接寻址的优点:每条指令只需要一个字。
2014年1月14日
DSP原理及应用
20
4.4 直接寻址
例 1 :数据存储器存储数据如图所示,采用数据页指针 DP直接寻址,完成x,y单元的两个数据求和。
1
4.0 寻址方式
当硬件执行指令时,寻找指令所指定的参与
运算的操作数的方法——寻址方式。
根据程序的要求采用不同的寻址方式,可以有
效地缩短程序的运行时间和提高代码执行效率。
’C54x芯片的寻址方式可以分为两类:
● 数据寻址
2014年1月14日
● 程序寻址
DSP原理及应用 2
’C54x有7种基本的数据寻址方式:
注意:在立即寻址的指令中,应在数值或符号前面加 一个“#”,表示是一个立即数,以区别于地址
2014年1月14日
。
DSP原理及应用
7
4.2 绝对寻址
指令中包含要寻址的存储单元的16位地址。
16位地址表示形式: ① 地址标号,如:TABLE; ② 16位符号常量,如:89AB、1234。 特点:指令中包含一个固定的16位地址,能寻 例如:址所有数据存储空间,但运行速度慢, 需要较大的存储空间。 MVKD TABLE,*AR1;将 ;将数据存储器 TABLE为地址 LD *(DATA),A DATA指定的数据存储单元 用途:用于对速度要求较低的场合。 指定的数据存储单元中
主要用于初始化 利用16位地址寻址存储单元 将累加器中的内容作为地址 利用数据页指针和堆栈指针 寻址 利用辅助寄存器作为地址指 针 快速寻址存储器映象寄存器 压入/弹出数据存储器和存储 器映像寄存器MMR
LD #10,A STL A,*(y) READA x LD @x,A LD *AR1,A LDM ST1,B PSHM AG
注意: *(1k)寻址的指令不能与循环指令(RPT,RPTZ)一起使用。 这种寻址可用于支持单数据存储器操作数的指令。
2014年1月14日 DSP原理及应用 13
4.3 累加器寻址
将累加器的内容作为地址去访问程序存储单元, 即将累加器中的内容作为地址,用来对存放数据的程 序存储器寻址。 例如: 用途:用于完成程序存储空间与数据存储空间 READA Smem ;将A中的数据作为地址寻址程序 之间的数据传输。
立即寻址 :由指令提供一个操作数 绝对寻址 :由指令提供一个操作数地址 累加器寻址 :以累加器的内容为地址访问程序空间某单元 直接寻址 :寻址地址为DP或SP的值加上指令提供的偏移量 间接寻址 :利用辅助寄存器访问存储器 存储器映像 :用来改变映像寄存器,但不影响DP或SP的值 寄存器寻址 堆栈寻址 :用来管理系统堆栈中的操作
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原理及应用
中的数据送入累加器 的单元数据送入AR1 A中 寄存器
8
绝对寻址是利用16位地址来寻址操作数的存储 单元。由于绝对地址代码的位数为16位,所以绝对 地址寻址的指令至少应为2个字长。 绝对寻址有四种类型 : ① 数据存储器地址(dmad)寻址;
② 程序存储器地址(pmad)寻址;
PA
src dst lk
2014年1月14日
16位立即数:I/O口地址(0~65 535)
源累加器(A或B) 目的累加器(A或B) 16位长立即数
DSP原理及应用 5
4.1 立即寻址
指令中含有执行指令所需的操作数。操作数紧随 操作码存放在程序存储器中。
例如: LD #80,A
;将立即数80H加载到A 程序存储器 立即数的数值形式: ① 短立即数。3、5、8、9位,单字指令; 操作码 ② 长立即数。16位,双字指令。
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
第4章 数据寻址方式
内容提要
’C54x的指令系统包含助记符指令和代数指令 两种形式。 助记符指令:是一种采用助记符号表示的类似 于汇编语言的指令; 代数指令:是一种比汇编语言更高级,类似于 高级语言的代数形式指令,具有接近汇编语言的特 点。 本章着重介绍七种寻址方式
2014年1月14日
DSP原理及应用
据相加
2014年1月14日 DSP原理及应用
22
直接寻址特点:
① 所寻址数据存储器的16位地址是由DP或SP 与7位偏移地址dmad构成; ② 可在单周期寻址128个单元; ③ 寻址速度快,能进行流水线并行操作。 用途:主要用于要求运算速度较快的场合。 注意:① 上述两种直接寻址方式是相互排斥的; ② 采用DP寻址时,要注意数据所在的页面 指针。
DSP原理及应用
12
4. *(lk)寻址 使用一个指定数据空间的地址来确定数据存 储器中的一个地址。 语法:允许所有使用单数据存储器(Smem)寻址 的指令去访问数据空间的任意单元,而 不改变DP的值,也不用对AR进行初始化。 例如,把地址为PN的数据单元中的数据装到累 加器A中。 LD *(PN), A
数据存储器的 16位地址dmad值
2014年1月14日 DSP原理及应用 10
2.程序存储器地址寻址
用于确定程序存储器中的一个地址。
语法:使用一个符号或具体的数字来指定程序 空间的一个地址。 例如,将程序存储器TABLE地址单元中的内容复 制到AR2寄存器所指向的数据存储单元中。 MVPD TABLE, * AR2
以DP为基准的直接寻址是由DP值确定是512页中 的哪一页,由dmad确定是该页中的哪一个单元。 SP 可以指向存储器中的任意一个地址。 dmad 可 以指向当前页中具体的单元,从而允许访问存储器 任意基地址中的连续的128个单元
2014年1月14日 DSP原理及应用 19
直接寻址标识:
① 变量前加@,如@x;
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
地址形成过程:
程序存储器的 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
2014年1月14日 DSP原理及应用 3
寻址方式 立即寻址 绝对寻址 累加器寻址 直接寻址 间接寻址 存储器映像 寄存器寻址 堆栈寻址
用
途
举
例
指令含义 立即数10 A 将AL内容存入y所在的存储单 元 将A的内容作为地址读程序存 储器,并存入x存储单元 (DP+x的低7位地址) A ((AR1)) A (ST1) B (SP)-1 SP,(AG) (SP)
③ 端口(PA)寻址;
④ *(lk)寻址。
2014年1月14日 DSP原理及应用 9
1.数据存储器地址寻址
用于确定操作数存于数据存储单元的地址。
语法:使用一个程序标号或一个数字来指定数
据空间的一个地址。
例如,将数据存储器EXAM1地址单元中的数据复 制到AR5寄存器所指向的数据存储单元中。 MVKD EXAM1, * AR5
2014年1月14日 DSP原理及应用 15
4.4 直接寻址
所要寻址的数据存储器16位地址是由基地址和 偏移地址构成。
基地址: ① 数据页指针DP(9位); ② 堆栈指针SP。 当 CPL=0 时,数据存储器 16 位地址由 DP 和偏 移地址dmad构成; 当CPL=1时,数据存储器16位地址由SP加偏移 地址dmad构成。
+
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
当CPL=1时,
直接寻址 指 令
15~8 7 6~0
操作码
I=0
dmad
堆栈ຫໍສະໝຸດ Baidu针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 个可以访 问的单元。
0180 0001 . . . . . .
X: 01FF 1000 y: 0200 0500 第 . . . . 4 . . 页
RSBX CPL RSBX CPL LD #3,DP LD #3,DP LD @x,A LD @x,A ADD #4,DP LD @y,A ADD @y,A ADD @y,A
注意: ③ ① 只能使用累加器 大多数’ C54x用A 寻址程序空间。 的低16位作为程序存储器 ② WRITA 上述两条指令重复使用时,累加器 A自动增 Smem ;将Smem指定的数据存储单元中的 的地址,而’ CA 548 和’ C549 是以 A 的低 23 位作为程 减; ④ 累加器 用来寻址程序空间。 Smem 用来寻址 数据,写入 A所指定的程序存储 序存储器地址,’ C5402是以 A的低20位作为程序存 单元。 数据空间。 储器地址;
特点:指令中含有一个固定的立即数,运行速度 较快,但需占用程序存储空间,并且数值不能改变。
立即数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
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原理及应用 14
存储器中的数据,并将数据送 入Smem指定的数据存储单元。
4.4 直接寻址
利用数据指针DP和堆栈指针SP寻址。 指令格式:
15 ~ 8 7 6~0
操 作 码
I=0
数据存储器地址(dmad)
特点:① 指令中只含有数据存储器的低7位地 指令的标识符 数据存储器地址 址(偏移地址 dmad); 指令的8位操作码 包含了数据存储器偏移地址 表示指令为直接寻址 ② 16位数据存储器地址由基地址(数据 页指针DP或堆栈指针SP)和偏移地址 (dmad)共同构成。
② 在偏移量前加@,如@5。
利用直接寻址可以在不改变DP或SP的情况下, 随机寻址128个存储单元中的任何一个单元。 直接寻址的优点:每条指令只需要一个字。
2014年1月14日
DSP原理及应用
20
4.4 直接寻址
例 1 :数据存储器存储数据如图所示,采用数据页指针 DP直接寻址,完成x,y单元的两个数据求和。
1
4.0 寻址方式
当硬件执行指令时,寻找指令所指定的参与
运算的操作数的方法——寻址方式。
根据程序的要求采用不同的寻址方式,可以有
效地缩短程序的运行时间和提高代码执行效率。
’C54x芯片的寻址方式可以分为两类:
● 数据寻址
2014年1月14日
● 程序寻址
DSP原理及应用 2
’C54x有7种基本的数据寻址方式:
注意:在立即寻址的指令中,应在数值或符号前面加 一个“#”,表示是一个立即数,以区别于地址
2014年1月14日
。
DSP原理及应用
7
4.2 绝对寻址
指令中包含要寻址的存储单元的16位地址。
16位地址表示形式: ① 地址标号,如:TABLE; ② 16位符号常量,如:89AB、1234。 特点:指令中包含一个固定的16位地址,能寻 例如:址所有数据存储空间,但运行速度慢, 需要较大的存储空间。 MVKD TABLE,*AR1;将 ;将数据存储器 TABLE为地址 LD *(DATA),A DATA指定的数据存储单元 用途:用于对速度要求较低的场合。 指定的数据存储单元中
主要用于初始化 利用16位地址寻址存储单元 将累加器中的内容作为地址 利用数据页指针和堆栈指针 寻址 利用辅助寄存器作为地址指 针 快速寻址存储器映象寄存器 压入/弹出数据存储器和存储 器映像寄存器MMR
LD #10,A STL A,*(y) READA x LD @x,A LD *AR1,A LDM ST1,B PSHM AG
注意: *(1k)寻址的指令不能与循环指令(RPT,RPTZ)一起使用。 这种寻址可用于支持单数据存储器操作数的指令。
2014年1月14日 DSP原理及应用 13
4.3 累加器寻址
将累加器的内容作为地址去访问程序存储单元, 即将累加器中的内容作为地址,用来对存放数据的程 序存储器寻址。 例如: 用途:用于完成程序存储空间与数据存储空间 READA Smem ;将A中的数据作为地址寻址程序 之间的数据传输。
立即寻址 :由指令提供一个操作数 绝对寻址 :由指令提供一个操作数地址 累加器寻址 :以累加器的内容为地址访问程序空间某单元 直接寻址 :寻址地址为DP或SP的值加上指令提供的偏移量 间接寻址 :利用辅助寄存器访问存储器 存储器映像 :用来改变映像寄存器,但不影响DP或SP的值 寄存器寻址 堆栈寻址 :用来管理系统堆栈中的操作
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原理及应用
中的数据送入累加器 的单元数据送入AR1 A中 寄存器
8
绝对寻址是利用16位地址来寻址操作数的存储 单元。由于绝对地址代码的位数为16位,所以绝对 地址寻址的指令至少应为2个字长。 绝对寻址有四种类型 : ① 数据存储器地址(dmad)寻址;
② 程序存储器地址(pmad)寻址;
PA
src dst lk
2014年1月14日
16位立即数:I/O口地址(0~65 535)
源累加器(A或B) 目的累加器(A或B) 16位长立即数
DSP原理及应用 5
4.1 立即寻址
指令中含有执行指令所需的操作数。操作数紧随 操作码存放在程序存储器中。
例如: LD #80,A
;将立即数80H加载到A 程序存储器 立即数的数值形式: ① 短立即数。3、5、8、9位,单字指令; 操作码 ② 长立即数。16位,双字指令。
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
第4章 数据寻址方式
内容提要
’C54x的指令系统包含助记符指令和代数指令 两种形式。 助记符指令:是一种采用助记符号表示的类似 于汇编语言的指令; 代数指令:是一种比汇编语言更高级,类似于 高级语言的代数形式指令,具有接近汇编语言的特 点。 本章着重介绍七种寻址方式
2014年1月14日
DSP原理及应用
据相加
2014年1月14日 DSP原理及应用
22
直接寻址特点:
① 所寻址数据存储器的16位地址是由DP或SP 与7位偏移地址dmad构成; ② 可在单周期寻址128个单元; ③ 寻址速度快,能进行流水线并行操作。 用途:主要用于要求运算速度较快的场合。 注意:① 上述两种直接寻址方式是相互排斥的; ② 采用DP寻址时,要注意数据所在的页面 指针。
DSP原理及应用
12
4. *(lk)寻址 使用一个指定数据空间的地址来确定数据存 储器中的一个地址。 语法:允许所有使用单数据存储器(Smem)寻址 的指令去访问数据空间的任意单元,而 不改变DP的值,也不用对AR进行初始化。 例如,把地址为PN的数据单元中的数据装到累 加器A中。 LD *(PN), A
数据存储器的 16位地址dmad值
2014年1月14日 DSP原理及应用 10
2.程序存储器地址寻址
用于确定程序存储器中的一个地址。
语法:使用一个符号或具体的数字来指定程序 空间的一个地址。 例如,将程序存储器TABLE地址单元中的内容复 制到AR2寄存器所指向的数据存储单元中。 MVPD TABLE, * AR2
以DP为基准的直接寻址是由DP值确定是512页中 的哪一页,由dmad确定是该页中的哪一个单元。 SP 可以指向存储器中的任意一个地址。 dmad 可 以指向当前页中具体的单元,从而允许访问存储器 任意基地址中的连续的128个单元
2014年1月14日 DSP原理及应用 19
直接寻址标识:
① 变量前加@,如@x;
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
地址形成过程:
程序存储器的 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
2014年1月14日 DSP原理及应用 3
寻址方式 立即寻址 绝对寻址 累加器寻址 直接寻址 间接寻址 存储器映像 寄存器寻址 堆栈寻址
用
途
举
例
指令含义 立即数10 A 将AL内容存入y所在的存储单 元 将A的内容作为地址读程序存 储器,并存入x存储单元 (DP+x的低7位地址) A ((AR1)) A (ST1) B (SP)-1 SP,(AG) (SP)
③ 端口(PA)寻址;
④ *(lk)寻址。
2014年1月14日 DSP原理及应用 9
1.数据存储器地址寻址
用于确定操作数存于数据存储单元的地址。
语法:使用一个程序标号或一个数字来指定数
据空间的一个地址。
例如,将数据存储器EXAM1地址单元中的数据复 制到AR5寄存器所指向的数据存储单元中。 MVKD EXAM1, * AR5
2014年1月14日 DSP原理及应用 15
4.4 直接寻址
所要寻址的数据存储器16位地址是由基地址和 偏移地址构成。
基地址: ① 数据页指针DP(9位); ② 堆栈指针SP。 当 CPL=0 时,数据存储器 16 位地址由 DP 和偏 移地址dmad构成; 当CPL=1时,数据存储器16位地址由SP加偏移 地址dmad构成。
+
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
当CPL=1时,
直接寻址 指 令
15~8 7 6~0
操作码
I=0
dmad
堆栈ຫໍສະໝຸດ Baidu针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 个可以访 问的单元。