第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课件

56
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次减法操作完成一次除法运算。
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值 。 用于直接寻 址和间接寻
方法
特点
(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值 。 用于直接寻 址和间接寻
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2014年1月14日 DSP原理及应用
中的数据送入累加器 的单元数据送入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的指令系统包含助记符指令和代数指令 两种形式。 助记符指令:是一种采用助记符号表示的类似 于汇编语言的指令; 代数指令:是一种比汇编语言更高级,类似于 高级语言的代数形式指令,具有接近汇编语言的特 点。 本章着重介绍七种寻址方式
中的数据送入累加器 的单元数据送入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的指令系统包含助记符指令和代数指令 两种形式。 助记符指令:是一种采用助记符号表示的类似 于汇编语言的指令; 代数指令:是一种比汇编语言更高级,类似于 高级语言的代数形式指令,具有接近汇编语言的特 点。 本章着重介绍七种寻址方式