数据寻址方式

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

数据寻址方式

部分寻址缩写语

Smem 16位单寻址操作数

Xmem 16位双寻址操作数,用于双操作数指令及某些单操作数指令。从DB数据总线上读出Ymem 16位双寻址操作数,用于双操作数指令。从CB数据总线上读出

dmad 16位立即数——数据存储器地址(0-65535)

pmad 16位立即数——程序存储器地址(0-65535)

PA 16位立即数——I/O口地址(0-65535)

Src 源累加器(A或B)

Dst 目的累加器(A或B)

Lk 16位长立即数

C54x寻址存储器有两种基本的数据形式:16位数和32位数。大多数指令能够寻址16位数,但是只有双精度和长字指令才能寻址32位数。

在32位数寻址时,先处理高有效字,然后处理低有效字。如果寻址的第1个字处在偶地址,那么第2个字就处在下一个(较高的)地址;如果第1个字处在奇地址,那么第2个字就处在前一个(较低)的地址。

(1)立即寻址:在指令中已经包含有执行指令所需的操作数。

数字前加#表示一个立即数。两种数值形式:短立即数(3、5、8、9位)和长立即数(16位)。它们在指令中分别编码为单字和双字指令。

例:用一个十六进制数80h,加载累加器A,可以写成:LD #80h,A

(2)绝对寻址:指令中包含所要寻址的存储单元的16位地址,可以用其所在单元的地址标号或16位符号常数表示。

由于指令中的绝对地址总是16位,所以绝对寻址指令长度至少为2个字。

例:MVKD SAMPLE,*AR5 将数据存储器SAMPLE地址单元中的数据传送到由AR5寄存器所指向的数据存储器单元中,这里的SAMPLE是一个符号常数,代表一个数据存储单元的地址

MVPD TABLE,*AR7- 将程序存储器标号为TABLE地址单元中的数据传送到由AR7寄存器所指向的数据存储器单元中,这里的TABLE是一个地址标号,代表一个程序存储单元的地址。

PORTR FIFO,*AR5 cong FIFO端口读入一个数据,将其存放到由AR5寄存器所指向的数据存储器单元中。这里的FIFO是一个I/O端口地址的标号。

LD *(BUFFER),A 将BUFFER符号所指向的数据存储单元中的数传送到累加器A。这里的BUFFER是一个16位符号常数。

(3)累加器寻址:利用累加器的数值作为地址来读/写程序存储器。

有两条指令:READA Smem(以累加器A中的数为地址,从程序存储器中读入一个数,并传送到由Smem所指定的数据存储器单元之中)和WRITA Smem (将Smem所指定的数据存储单元中的一个数,传送到由累加器A所指定的程序存储器单元中)

对大多数C54x,可用累加器的低16位作为程序存储器地址。

(4)直接寻址:在指令中包含有数据存储器地址(dma)的低7位。由这7位dma作为偏移地址值,与基地址值(数据页指针DP或堆栈指针SP)一道构成16位数据存储器地址。可以在不改变DP或SP的情况下随机寻址128个存储单元中的任何一个单元。直接寻址的优点是每条指令只需要一个字。

语法:利用@(加在变量的前面)或一个数来设定偏移地址值。

(5)间接寻址:按照存放在某个辅助存储器中的16位地址寻址的。

C54x的8个辅助寄存器(AR0~AR7)都可以用来寻址64K字数据存储空间中的任何一个存储单元。

灵活,不仅能在单条指令中从(往)存储器读(写)一个16位操作数,还能在单条指令中访问两个独立的数据存储单元。

特殊的间接寻址功能:位码倒序寻址、循环寻址

(6)存储器映像寄存器寻址:用来快速寻址存储器映像存储器MMR,两种产生MMR地址的方法:

<1> 当采用直接寻址方式时,高9位数据存储器地址被置0,利用指令中低7位地址访问MMR。

<2> 当采用间接寻址方式时,高9位数据存储器地址被置0,按照当前辅助寄存器中的低7位地址访问MMR。

可以修改MMR中的数值,而不需要改变当前DP或SP,这种寻址方式对MMR执行写操作开销最小。

仅有8条指令可以进行存储器映像寻址操作(详见P47)

LDM MMR,dst

MVDM dmad,MMR

MVMD MMR,dmad

MVMM MMRx,MMRy

POPM MMR

PSHM MMR

STLM src,MMR

STM #lk,MMR

(7)堆栈寻址:用来压入/弹出数据存储器和MMR。

C54x的堆栈从高地址向低地址方向生长,并用一个16位存储器映像寄存器—堆栈指针SP来管理堆栈。堆栈寻址,就是利用堆栈指针来寻址,SP指针始终指向堆栈中所存放的最后一个数据。

4条指令采用堆栈寻址方式:PSHD、PSHM、POPD、POPM。

PSHD 将数据存储器中的一个数压入堆栈

PSHM 将一个MMR中的值压入堆栈

POPD 从堆栈弹出一个数至数据存储单元

POPM 从堆栈弹出一个数至MMR

压入操作时,先减小SP后将数据压入堆栈;弹出操作时,先从堆栈弹出数据后增加SP 值。

相关文档
最新文档