当前位置:文档之家› 第六章_寻址方式和指令系统

第六章_寻址方式和指令系统

1


第 6章 寻址方式和汇编指令 第6章
6.1、寻址方式 6.2、汇编语言指令集 6.3、汇编源程序


第 6章 寻址方式和汇编指令 第6章
6 . 1 寻址方式
▲ 汇编指令是可执行指令,每条指令对应一条机器 码,用以控制处理器中的执行部件进行各种操 作。

▲ TMS320F281X系列的汇编指令有150多条。

▲ 它们支持各种信号处理运算,同时也提供了应用 中所需要的多级处理和过程控制功能。

▲ 寻址方式是指寻找指令中操作数地址的方式。




第 6章 寻址方式和汇编指令 第6章
6 . 1 寻址方式
TMS320C28x指令集采用7种存储器寻址方式: ▲ 直接寻址方式 ▲ 堆栈寻址方式 ▲ 间接寻址方式 ▲ 寄存器寻址方式 ▲ 数据/程序/IO空间立即寻址方式 ▲ 程序空间间接寻址 ▲ 字节寻址方式


第 6章 寻址方式和汇编指令 第6章
6 . 1 寻址方式
F2812 的大多数指令利用操作码中的8位字段来选择寻 址方式和对寻址方式进行修改.在 F2812 指令系统中,这个8 位字段用于以下寻址方式: (1)loc16 。

为16位数据访问选择直接/堆栈/间接/寄存器寻址方
式。


(2)loc32 。

为32位数据访问选择直接/堆栈/间接/寄存器寻址方
式。


以上7种寻址方式都与“loc16/loc32”组合起来使用。




第 6章 寻址方式和汇编指令 第6章
6 . 1 寻址方式
寻址方式选择位
由 于 F2812 提 供 了 多 种 寻 址 方 式 , 因 此 用 寻 址 方 式 选 择 位 ( AMODE )来选择8位字段( loc16/loc32 )的解码。

该 位属于状态寄存器ST1。

寻址方式可以大致归类如下: ▲ AMODE=0——该方式是复位后的默认方式,也是F2812的C/C++编译
器使用的方式。

这种方式与C2xLP CPU的寻址方式不完全兼容。

数据页指针 偏移量是6位(在C2xLP CPU中是7位),并且不支持所有的间接寻址方式。


▲ AMODE=1——该方式包括的寻址方式完全与C2xLP 器件的寻址方式
兼容。

数据页指针的偏移量是7位并支持所有C2xLP 支持的间接寻址方式。


对与loc16或者loc32字段,其可用的寻址方式总结如P375所示


第 6章 寻址方式和汇编指令 第6章
6 . 1 寻址方式
在F2812间接寻址方式中,使用哪个辅助寄存器指针在指令中并不被明确 指出。

而在 C2xLP的间接寻址方式中,3位长度的辅助寄存器指针被用 来选择当前使用哪个辅助寄存器以及下次操作将使用哪个辅助寄存器。


汇编器/编译器对AMODE位的追踪
编译器总是假定AMODE=0,所以它只使用对AMODE=0 有效的寻址模式。

而汇编器可以通过设置命令行选项实现默认 AMODE=0或者AMODE=1。

√ – v28 ;假定AMODE=0(C28x寻址方式) – v28 – m20 ;假定AMODE=1(与C2xLP全兼容的寻址方式) √ 在文件中使用内嵌伪指令
. c28_amode ;告诉汇编器后面的代码段都假定AMODE=0(C28x寻址方式) . lp_amode ;告诉汇编器后面的代码段都假定AMODE=1(与C2xLP全兼容的
寻址方式)


第 6章 寻址方式和汇编指令 第6章
6 . 1 寻址方式
直接寻址方式
▲ 该寻址方式,16位的DP寄存器被当作一个固定的页指针,在指令中提供
6位或者7位的偏移量,将这些偏移量与DP寄存器中的值相连接构成完 整的地址.当访问固定寻址的数据结构(比如外围寄存器和C/C++中的 全局或静态变量) 时是一种很有效的方法.(P325 表7-1-2)
堆栈寻址方式
▲ SP(堆栈指针):在该方式下,16位的SP指针被用于访问软件堆栈
的信息.F2812的堆栈从存储器的低地址变化到高地址,SP指针总是指 向下一个空单元.当需要访问堆栈中的数据时,由程序提供6位偏移 量,SP的值减去这6位的偏移量就是被访问的数据的地址,然后修改堆 栈指针SP. (P378 表4-1-3)


第 6章 寻址方式和汇编指令 第6章
6 . 1 寻址方式
间接寻址方式
XAR0到XAR7(辅助寄存器指针):在这种寻址方式 下,32位的XARn寄存器被当作一般性数据指针.可以通 过指令实现对辅助寄存器XARn加1,(操作前/后)减1 和变址操作.
寄存器寻址方式
在该寻址方式下,寄存器可以是访问的源操作数,也 可以是目标操作数,这样在F2812中就能实现寄存器到寄存 器的操作.这一方式包括对32位和16位寄存器的寻址。




第 6章 寻址方式和汇编指令 第6章
6 . 1 寻址方式
数据/程序/IO空间立即寻址方式
在该寻址方式下,存储器操作的地址就存在于指令中。


程序空间间接寻址方式
某些指令可以通过使用间接指针对程序空间中的存储器 进行访问。

因为F2812 CPU的存储器是标准一致的,这就使 在一个机器周期中进行两次读操作成为可能。


字节寻址方式


第6章
32位操作的定位
由于使用定位于偶数地址的
对存储器的32位读写操作都被定位于存储器接口的偶数地址
第6章
汇编语言包括:汇编指令、伪指令和宏指令▲汇编指令——即是指令系统,其在汇编时产生一一对应的目标代码。

▲伪指令——仅在汇编和连接时提供控制信息和数据,并不产生目标代码。

▲宏指令——用户创建的“指令”,在汇编时将其展开并汇编为对应的目标代码。

第6章
6 .2 汇编语言指令集指令集概述
28x 指令按功能可分为
▲寄存器XARn
第6章
6 .2 汇编语言指令集指令集概述
▲16×16乘法操作
▲32×32乘法操作
一些符号描述6 .2 汇编语言指令集
XAR0ARnH
XAR0ARn ,Arm
XAR0XARn
第6章
一些符号描述6 .2 汇编语言指令集
16位地址单元的内容[loc16]
按位求反码~
第6章
8位立即数,零扩展0:8bit
8位立即数8bit
一些符号描述
第6章
一些符号描述
最低有效字节LSB
最低有效位LSb
第6章
第6章
6 .2 汇编语言指令集指令句法描述
ARn n为数值
ind选择以下
*,*+,
#
第6章
6 .2 汇编语言指令集指令集
▲按照字母的顺序对
6 . 3 汇编源程序
汇编语言源程序由源语句(汇编指令、伪指令、宏指令)组成。

源语句语法:
[标号] [ :] 助记符[操作数1,操作数2,…][;注释] 标号域助记符域操作数域注释域注:“[ ]”表示该项可缺省。

例6·1
SYM1 ·set 2 ;符号SYM1等于2
begin :LDP SYM1 ;将2装入DP
·word 016H ;初始化一个字为16H
第6章
第6章
6 . 3 汇编源程序
▲标号域——标号域是任选域,可有可无。

若使用必须从源语句的第一列开始书写。

标号包含1~32个字母、数字、字符,可识别符号的
大小写,且第一个字符不能是数字。

标号可以后随冒号。

如果
不使用标号,则第一个字必须是空格或分号或星号。

▲助记符域——是关键部分,不能缺省,它表示本指令的操作类型。

助记
符不能从源语句的第一列开始。

它包括下列操作码之一:√汇编指令(例如ABS, MPY, SPH);
√伪指令(例如.data, .list, .set);
√宏指令(例如.macro, .mexit)。

▲操作数域——是跟在助记符域后面的操作数列表,可缺省。

如果多于两
个操作数,则用逗号隔开。

它可以是常数、符号和表达式。

▲注释域——可以从源语句行的任一列开始并直至本行的末尾,即仅包括注释的源语句是有效的。

如果它从第一列开始则可以用分号或星
号开始;在行的其他地方开始的注释,必须以分号开始。

上述各个域必须用一个或多个空格分开。

第6章
常数、字符串和符号
▲常数——支持六类类型的常数。

√二进制整数
第6章
常数、字符串和符号
▲字符串——字符串是包含在双引号内的一串字符,双引号是字符串的一
部分。

字符串用于下列场合:
.
表达式由运算符、常数和符号组成。

有效表达式值的范围是表达式与运算符
运算符组
6 . 3 汇编源程序
第6章。

相关主题