dsp第四章

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

DP在上电复位后不能实初始化,因此在使用DP作为基址寄存器时,要在 程序中进行初始化。 设置数据页,给DP赋值 LDP #32 ;初始化页面指针 指定偏移量 一般是采用一个符合或者常数来确定偏移量 3、间接寻址方式 按照辅助寄存器的内容寻址数据存储器。有四种运算 (1)ARAU的内容加1或减1 (2)增加或减少一个变址量。AR0的值是这个变址量。 (3)不增加不减少。以当前ARAU的值作为数据存储器的地址,ARAU 的内容不变。 (4)按逆向进位方式增加或减少一个变址量。AR 0的值是这个变址量。
3、5、8或9位短立即数形式 立即数作为指令的一部分,指令编码为单字 PRT #99; 将PRT后的指令执行100次
2、直接寻址方式
指令字中包含数据存储器的7位偏移地址与基地址构成16位数据 存储器地址。 基地址由数据页指针DP或堆栈指针SP提供,具体由ST1的CPL决 定。 64k数据存储器包含512个数据页指针DP,DP的范围记为0~511。 状态寄存器ST0内的9位数据页指指令可以通过问接指针来访问位于
程序空间中的存储器操作数。由于在c28xcPU中存储器是统一寻址的,所 以单周期内可以续取两个操作数。
1、立即寻址方式 16位长立即数形式 ADD #16348,2;将数值16348左移2位后于累加器内容相加 指令长2个字,立即操作数包含在指令的第2个指令字中。
第4章 指令系统
4.1 概述
一、汇编语言格式
[标号] [:]指令[操作数列表];[注释]
标号域 标号的值与它所指向的语句地址或汇编时段程序计数器的值相同。 标号必须从源语句的第一列开始。 标号对大小写敏感,除非启动汇编器时,用了-c选项。 指令域 汇编伪指令 助记符指令 宏指令 宏调用 操作数域 *——间址寻址;@——直接寻址或绝对寻址方式 #——立即数寻址 注释域
间接寻址方式。XAR0到XAR7(辅助寄存器指针):在该方式下,32位
的XARn寄存器被当作一般的数据指针来使用。通过相应的指令可以实现 操作后XARn增1、操作前/后减1,还可以配合3位偏移量或者其他16位 寄存器实现变址寻址。 寄存器寻址方式。这种方式下,另一个寄存器可以是该次访问的源 或者目的操作数。这样在c28x中既能实现寄存器到寄存器的操作。 大多数的c28x指令里,可以通过指令操作代码里的8位字段来选择寻址 方式以及对该寻址方式所作的修改。在c28x指令集里,这个8位字段可以 用于以下寻址方式: loc16。为16位数据选择直接/堆栈/间接/寄存器寻址方式。 loc32。为32位数据选择直接/堆栈/间接/寄存器寻址方式。 数据/地址/IO空间立即寻址方式。在这种方式下,存储器中操 作数的地址被包含在指令中。
下列指令说明了c28x的间接寻址方式与c2xLP间接寻址方式的区别:
ADD AL, XAR4++
ADD AL,*++
ADD AL,*++,ARP5
假设STl中的ARP指针值为4,读取由辅 助寄存器XAR4指定的16位数据存储器 地址中的内容,将其加到AL寄存器中, 并在操作完成后将ARP的值增1,即将 ARP的指向XAR5。
2、堆栈寻址模式(SP)
Example(s): ADD AL,*−SP[5] ; Add 16-bit contents from stack location ; −5 words from top of stack to AL register MOV *-SP[8],AL ; Store 16-bit AL register to stack location ; -8 words from top of stack ADDL ACC,*−SP[12] ; Add 32-bit contents from stack location ; −12 words from top of stack to ACC register. MOVL *-SP[34],ACC ; Store 32-bit ACC register to stack location ; −34 words from top of stack
二、寻址方式综述
直接寻址方式。DP(数据页指针) :在此方式,16位的DP寄存器被当
作一个固定的页指针,将指令中提供的6位或者7位地址偏移量与DP寄 存器中的值组合起来就构成完整的地址。当访问具有固定地址的数据 结构时,这种寻址方式特别有用,例如,外设寄存器和c/c++中的全局 及静态变量。
堆栈寻址方式。SP(堆栈指针):在这种方式下,16位的SP指 针被用来访问软件堆栈的内容。c28x系列的堆栈是从低端 地址向高端地址生长的,SP总是指向下一个空的存储单元。 当需要访问堆栈中的数据时,SP的值减去指令中提供的6 位偏移量作为被访问数据的地址,而堆栈指针将在压栈后 加1,出栈前减1。
注意:在C28x的指令语法中,目标操作数总是在左边,源操作数总是在右 边。
1、直接寻址模式 (DP) 、
Example(s): MOVW DP,#VarA ; Load DP pointer with page value containing VarA ADD AL,@VarA ; Add memory location VarA to register AL MOV @VarB,AL ; Store AL into memory location VarB ; VarB is located in the same 64−word page as VarA MOVW DP,#VarC ; Load DP pointer with page value containing VarC SUB AL,@VarC ; Subtract memory location VarC from register AL MOV @VarD,AL ; Store AL into memory location VarD ; VarC is located in the same 64−word page as VarD ; VarC & D are in different pages than VarA & B
4.2 寻址方式及举例 一、寻址方式选择位(AMODE ) AMODE主要用来说明寻址方式是否与C2xLP兼容。在不同的模式 下,对指令的8位字段的解码是不同的 。 为了适应不同类型的寻址方式,ST1(状态寄存器1)中的AMODE位 (寻址方式位)可以为上面提及的8位字段(locl6/loc32)选择译码方法。寻 址方式大致上可以分成以下几类: (1)AMODE=0。它是DSP复位时的默认值,也是c28xc/c++编译器使用 的寻址方式。但是,此方式并不完全兼容c2xLP CPU的寻址方式。其数据 页指针的偏移量是6位的(c2xLP的是7位)且不支持所有的间接寻址方式。 (2)AMODE=1。该方式包括的寻址方式完全与C2xLP器件的寻址方式 兼容。数据页指针的偏移量是7位并支持所有c2xLP支持的间接寻址方式。 对于loc16或者1oc32字段,其可用的寻址方式总结如表4—3所列。在 28x间接寻址方式中,使用哪个辅助寄存器指针在指令中并不被明确指出。 而在C2xLP的间接寻址方式中,3位长度的辅助寄存器指针被用来选择当 前使用哪个辅助寄存器以及下一次操作将使用哪个辅助寄存器。
二、AMODE的跟踪 在默认的状态下AMODE=0,因此只能满足非兼容的寻址方式。可通过 下面的操作给便AMODE位。 -v28/-m20 ;假设AMODE=1(兼容模式) -v28 ;假设AMODE=0(F28x寻址模式) 说 明 根据辅助寄存器xAR4指定的16位 数据存储器地址,将该地址的内 容加至AC寄存器,并在完成此操 作后使xAR4的内容增l。 假设STl中的ARP指针值为4,读取由辅 助寄存器XAR4指定的16位数据存储器 地址中的内容,将其加到AL寄存器中, 并在操作完成后将ARP的值增1。
Example(s): SETC AMODE ; Make sure AMODE = 1 .lp_amode ; Tell assembler that AMODE = 1 MOVW DP,#VarA ; Load DP pointer with page value containing VarA ADD AL,@@VarA ; Add memory location VarA to register AL MOV @@VarB,AL ; Store AL into memory location VarB ; VarB is located in the same 128−word page as VarA MOVW DP,#VarC ; Load DP pointer with page value containing VarC SUB AL,@@VarC ; Subtract memory location VarC from register AL MOV @@VarD,AL ; Store AL into memory location VarD ; VarC is located in the same 128−word page as VarD ; VarC & D are in different pages than VarA & B
相关文档
最新文档