DSP汇编寻址方式

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1
寻址方式和汇编指令
6.1、寻址方式 6.2、汇编语言指令集 6.3、汇编源程序
第6章 寻址方式和汇编指令
6 寻址方式
▲ 汇编指令是可执行指令,每条指令对应一条机器 码,用以控制处理器中的执行部件进行各种操作。
▲ TMS320F281X系列的汇编指令有150多条。 ▲ 它们支持各种信号处理运算,同时也提供了应用
8位立即数 8位立即数,零扩展 8位立即数,符号扩展 10位立即数 10位立即数,零扩展 10位立即数,符号扩展 16位立即数 16位立即数,零扩展 16位立即数,符号扩展 22位立即数 22位立即数,零扩展
第6章 寻址方式和汇编指令
一些符号描述
LSb LSB LSW MSb MSB MSW OBJ N {} = ==
第6章 寻址方式和汇编指令
6 . 1 寻址方式
数据/程序/IO空间立即寻址方式
在该寻址方式下,存储器操作的地址就存在于指令中。
程序空间间接寻址方式
某些指令可以通过使用间接指针对程序空间中的存储器 进行访问。因为F2812 CPU的存储器是标准一致的,这就使 在一个机器周期中进行两次读操作成为可能。
DP高15位
OFFSET
DP值为
5DH
0041H或
0040H
14
1. 选择兼容选址模式 SETC AMODE .lp_amode
;令AMODE=1 ;通知编译器AMODE=1
2. 设置数据页面 将当前数据页面载入DP。
MOVW DP,#0041H ;初始化数据页面指针 3. 设置偏移量 给出7位偏移量作为指令的一个操作数。
XAR(ARP) ARP指向的辅助寄存器
AX
累加器的高和低寄存器
#
立即数
PM
乘积移位方式(+4,1,0,-1,-3,-4,-5,-6)
PC
程序计数器
第6章 寻址方式和汇编指令
6 .2 汇编语言指令集
一些符号描述

按位求反码
[loc16]
16位地址单元的内容
0:[loc16] 零扩展16位地址单元的值
第6章 寻址方式和汇编指令
汇编器/编译器对AMODE位的追踪
编译器总是假定AMODE=0,所以它只使用对AMODE=0
有效的寻址模式。而汇编器可以通过设置命令行选项实现默认
AMODE=0或者AMODE=1。
√ – v28
;假定AMODE=0(C28x寻址方式)
– v28 – m20 ;假定AMODE=1(与C2xLP全兼容的寻址方
最低有效位 最低有效字节 最低有效字 最高有效位 最高有效字节 最高有效字 对于某一条指令,位OBJMODE的状态 重复次数(N=0,1,2,3,4,5,6,7…) 可选字段 赋值 等于
第6章 寻址方式和汇编指令
6 .2 汇编语言指令集
指令句法描述
ARn
n为数值0~7,ARn指定下次的辅助寄存器。
S:[loc16] 符号扩展16位地址单元的值
[loc32]
32位地址单元的内容
0:[loc32] 零扩展32位地址单元的值
S:[loc32] 符号扩展32位地址单元的值
7bit
7位立即数
0:7bit
7位立即数,零扩展
S:7bit
7位立即数,符号扩展
第6章 寻址方式和汇编指令
一些符号描述
8bit 0:8bit S:8bit 10bit 0:10bit S:10bit 16bit 0:16bit S:16bit 22bit 0:22bit
ADD AL,@@5Dh ; AL与当前数据页面内偏移量 ; 5DH单元的内容相加,结果 ;存入到AL中
15
C24X代码:
9bit
7bit
0001 0000 0101 1101
DP OFFSET
20H 5DH
16
1. 设置数据页面 将当前数据页面载入DP。
LDP #20H ;初始化数据页面指针 2. 设置偏移量 给出7位偏移量作为指令的一个操作数。
(2)loc32。为32位数据访问选择直接/堆栈/间接/寄存器寻址方式。
[loc32] 表示loc32这种寻址方式对应的32位数据。
在直接寻址方式下,loc16/loc32指的是一个用标号表示的地址,这个 地址由16位的DP寄存器和操作码内8位字段的6位或7位偏移量共同决定。 [loc16]/[loc32]表示这个地址对应的16/32位数据。
兼容。数据页指针的偏移量是7位并支持所有C2xLP 支持的间接寻址方式。
对与loc16或者loc32字段,其可用的寻址方式总结如P202所示
第6章 寻址方式和汇编指令
6 . 1 寻址方式
在F2812间接寻址方式中,使用哪个辅助寄存 器指针在指令中并不被明确指出。而在C2xLP的间 接寻址方式中,3位长度的辅助寄存器指针被用来 选择当前使用哪个辅助寄存器以及下次操作将使用 哪个辅助寄存器。
中所需要的多级处理和过程控制功能。 ▲ 寻址方式是指寻找指令中操作数地址的方式。
第6章 寻址方式和汇编指令
寻址方式
TMS320C28x指令集采用7种寻址方式: ▲ 直接寻址方式 ▲ 堆栈寻址方式 ▲ 间接寻址方式 ▲ 寄存器寻址方式 ▲ 数据/程序/IO空间立即寻址方式 ▲ 程序空间间接寻址 ▲ 字节寻址方式
以上7种寻址方式都与“loc16/loc32”组合起来使用。
第6章 寻址方式和汇编指令
在间接寻址方式下,loc16/loc32表示放在辅助寄存器 (XAR0~XAR7)中的一个地址,[loc16]/[loc32]表示这个地址对 应的16/32位数据。
在堆栈寻址方式下,loc16/loc32表示堆栈指针指向的一个 堆栈单元,[loc16]/[loc32]表示这个单元内的16/32位数据。
第6章 寻址方式和汇编指令
6 . 1 寻址方式
F2812的大多数指令利用操作码中的8位字段来选择寻址 方式和对寻址方式进行修改.在F2812指令系统中,这个8位字 段用于以下寻址方式:
(1)loc16。为16位数据访问选择直接/堆栈/间接/寄存器寻址方式。
[loc16] 表示loc16这种寻址方式对应的16位数据。
16bit
6bit
00 0000 0001 0000 0101 1101
DP
OFFSET
0041H
1DH
12
使用直接寻址方式访问数据存储器时,必须首先 对DP进行设置以确定数据页面,然后再书写进行某 种操作的指令,该指令的操作数将确定数据页面内部 的特定偏移单元。其步骤如下:
1. 设置数据页面 将当前数据页面载入DP。
18
第6章 寻址方式和汇编指令
6 . 1 寻址方式
间接寻址方式
XAR0到XAR7(辅助寄存器指针):在这种寻址方式下, 32位的XARn寄存器被当作一般性数据指针.可以通过指 令实现对辅助寄存器XARn加1,(操作前/后)减1和变 址操作.
寄存器寻址方式
在该寻址方式下,寄存器可以是访问的源操作数,也 可以是目标操作数,这样在F2812中就能实现寄存器到寄存 器的操作.这一方式包括对32位和16位寄存器的寻址。
MOVW DP,#0041H ;初始化数据页面指针 2. 设置偏移量 给出6位偏移量作为指令的一个操作数。
ADD AL,@1Dh ; AL与当前数据页面内偏移量 ; 1DH单元的内容相加,结果 ;存入到AL中
13
AMODE=1:
15bit
7bit
00 0000 0001 0000 0101 1101
10 条
26 条
第6章 寻址方式和汇编指令
6 .2 汇编语言指令集
一些符号描述
XARn
XAR0~XAR7寄存器
ARn,ARm XAR0~XAR7寄存器的低16位
ARnH
XAR0~XAR7寄存器的高16位
ARPn
ARP0~ARP7,3位辅助寄存器指针,ARP0指向XAR0,ARP7指 向XAR7
AR(ARP) ARP指向的辅助寄存器的低16位
ind
选择以下0~7中符号之一:
*,*+,*-,*0+,*0-,*BR0+,*BR0-。
#
立即寻址方式中常用的前缀。
数值前面带“#”,表示该数值为一个立即数。
<<
左移
>>
右移
@
当使用C28x语法时,64字的数据页通过“@”符号来表示。
式)
√ 在文件中使用内嵌伪指令
. c28_amode ;告诉汇编器后面的代码段都假定 AMODE=0
(C28x寻址方式)
. lp_amode ;告诉汇编器后面的代码段都假定AMODE=1
(与C2xLP全兼容的 寻址方式)
9
第6章 寻址方式和汇编指令
6 . 1 寻址方式
直接寻址方式
▲ 该寻址方式,16位的DP寄存器被当作一个固定的页指针,在 指令中提供6位或者7位的偏移量,将这些偏移量与DP寄存器 中的值相连接构成完整的地址.当访问固定寻址的数据结构 (比如外围寄存器和C/C++中的全局或静态变量) 时是一种很 有效的方法.
字节寻址方式
第6章 寻址方式和汇编指令
6 . 1 寻址方式
32位操作的定位
由于使用定位于偶数地址的32位数据的最低有效字,所有针 对存储器的32位读写操作都被定位于存储器接口的偶数地址 边界.地址生成器的输出不需要强制定位,因此指针值保持原值。 例如:MOVB AR0,#5 ;
MOVL *AR0,ACC ;
第6章 寻址方式和汇编指令
6 .2 汇编语言指令集
指令集概述百度文库
▲ 16×16乘法操作 20 条
▲ 32×32乘法操作 13 条
▲ 直接存储器操作 17 条
▲ IO空间操作 3 条
▲ 程序空间操作 5 条
▲ 跳转/调用/返回操作 31 条
▲ 中断寄存器操作
9条
▲ 状态寄存器操作(ST0,ST1)
▲ 其他操作
▲ AMODE=0——该方式是复位后的默认方式,也是F2812的C/C++编译
器使用的方式。这种方式与C2xLP CPU的寻址方式不完全兼容。数据页指针 偏移量是6位(在C2xLP CPU中是7位),并且不支持所有的间接寻址方式。
▲ AMODE=1——该方式包括的寻址方式完全与C2xLP 器件的寻址方式
AMODE 偏移量 每页大小 32位数据
(ST1.8)
地址
寻址 范围
0

64字
31~22=0
数据
6bit
21~6=DP:15~0
空间
5~0=6bit
的低
4M字
1
@ @ 128字
31~22=0
的范
7bit
21~7=DP:15~1 围
6~0=7bit
11
比如: 访问数据空间地址0000105DH
AMODE=0:
ADD 5Dh ; 累加器与当前数据页面内偏移量 ; 5DH单元的内容相加,结果存入到 ; 累加器中
17
第6章 寻址方式和汇编指令
堆栈寻址方式
▲ SP(堆栈指针):在该方式下,16位的SP指针被用于访 问软件堆栈的信息.F2812的堆栈从存储器的低地址变化到 高地址,SP指针总是指向下一个空单元.当需要访问堆栈中 的数据时,由程序提供6位偏移量,SP的值减去这6位的偏 移量就是被访问的数据的地址,然后修改堆栈指针 SP. (P205 表6-1-3)
在寄存寻址方式下, loc16/loc32表示一个16位或32位寄 存器(如ACC、P、XT、AH等), [loc16]/[loc32]表示这些寄存 器内的16/32位数据。
指令操作码中对应的8位字段的具体含义如表6-1-1所示。
6
第6章 寻址方式和汇编指令
6 . 1 寻址方式
寻址方式选择位
由 于 F2812 提 供 了 多 种 寻 址 方 式 , 因 此 用 寻 址 方 式 选 择 位 (AMODE)来选择8位字段(loc16/loc32)的解码。该 位属于状态寄存器ST1。寻址方式可以大致归类如下:
码。
第6章 寻址方式和汇编指令
6 .2 汇编语言指令集
指令集概述
28x 指令按功能可分为17 类,共 302 条指令: ▲寄存器XARn(AR0~AR7)的操作 14 条 ▲ DP寄存器操作 3 条 ▲ SP寄存器操作 34 条 ▲ AX寄存器操作(AH,AL) 38 条 ▲ 16位ACC寄存器操作 26 条 ▲ 32位ACC寄存器操作 41 条 ▲ 64位ACC: P寄存器操作 9 条 ▲ P或XT寄存器的操作(P,PH,PL,XT,T,TL) 21 条
用户在生成不定位于偶数边界的地址时必须考虑上述内容。 32位操作数以下列顺序存放:低位数,0~15;后续的是高位数,16~31;接 着是最高的16位地址增量(低位在前的二进制数据格式)。
第6章 寻址方式和汇编指令
6 .2 汇编语言指令集
汇编语言包括:汇编指令、伪指令和宏指令
▲ 汇编指令—— 即是指令系统,其在汇编时产生一一对应的目标代码。 ▲ 伪指令 —— 仅在汇编和连接时提供控制信息和数据,并不产生目标代码。 ▲ 宏指令 —— 用户创建的“指令”,在汇编时将其展开并汇编为对应的目标代
相关文档
最新文档