《数据寻址方式》PPT课件.ppt

上传人:牧羊曲112 文档编号:5519484 上传时间:2023-07-16 格式:PPT 页数:36 大小:341.49KB
返回 下载 相关 举报
《数据寻址方式》PPT课件.ppt_第1页
第1页 / 共36页
《数据寻址方式》PPT课件.ppt_第2页
第2页 / 共36页
《数据寻址方式》PPT课件.ppt_第3页
第3页 / 共36页
《数据寻址方式》PPT课件.ppt_第4页
第4页 / 共36页
《数据寻址方式》PPT课件.ppt_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《《数据寻址方式》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《数据寻址方式》PPT课件.ppt(36页珍藏版)》请在三一办公上搜索。

1、1.6 数据寻址方式,立即寻址:指令编码本身带有操作数;绝对寻址:指令编码中含有操作数的地址;累加器寻址:累加器的内容为操作数的地址;直接寻址:使用指令中的7位偏移地址与数据页指针DP或 堆栈指针SP组成16位操作数地址;间接寻址:通过辅助寄存器寻址;存储器映像寄存器寻址:改变存储器映像寄存器而不影响DP或SP的值;堆栈寻址:压入/弹出系统堆栈。,寻址用到的缩写语,Lk:16位长立即数;Dst:目的累加器;Src:源累加器;PA:16位立即数-I/O口地址;Pmad:16位立即数-程序存储器地址;Dmad:16位立即数-数据存储器地址;Xmem:16位双寻址操作数,用于双/单操作数指令。从DB

2、总线读出;Ymem:16位双寻址操作数,用于双操作数指令。从CB数据总线读出。Smem:16位单寻址操作数。,立即寻址:就是指令中包含有执行指令所需要的立即数(不用寻址)。在数字前面加#号,表示一个立即数;立即数可为3、5、8、9位短立即数,也可为16位长立即数;指令可为1 字或2字。如:1)LD#80h,A 2)LD#7h,ARP 3)RPT#FFh 4)LD#1Fh,ASM;将5位立即数加载到ASM中 5)LD#1FFh,DP;将9位立即数加载到DP中,绝对寻址:指令中包含有所要寻址的存储单元的16位地址。有四种绝对寻址:dmad寻址,pmad寻址,PA寻址,*(lk)寻址。,数据页分配情

3、况:地址 DP 27=1280000-007Fh 第0页0080-00FF 10100-017F 20180-01FF 30200-027F 40280-02FF 50300-037F 60380-03FF 7.,Dmad寻址:,MVDK*AR3-,1000hMVDM 300h,BK MVKD 1000h,*+AR5MVMD AR7,8000h,Pmad寻址:,MVDP DAT0,0FE00hMVPD 2000h,*AR7MVPD 0FE00h,DAT5,PA寻址:,PORTR 05,INDAT PORTW OUTDAT,5h,*(lk)寻址:,LD*(2000h),ASTL A,*(200h

4、),累加器寻址:,利用累加器的内容作为地址来访问程序存储器中的数据READA:从程序存储器中(A的内容为地址)读数据到数据存储器中WRITA:将数据存储器中的数写到程序存储器中(A的内容为地址),直接寻址:指令包含了数据地址的低7位,作为偏移地址与DP或SP中的基地址组合形成完整的16位数据地址。在DP和SP不变的情况下,可以直接访问128个地址。使用SP还是DP由状态寄存器中的CPL位决定:CPL=0,使用DP的9位作为高9位与偏移地址相加 CPL=1,使用SP的16位与偏移地址相加直接寻址指令编码格式:158 7 60,I=0,表示直接寻址,直接寻址的地址产生:,DP的取值范围:0511(

5、29=512),dma的取值范围从0128,所以,DP指向全部的512页之一,dma指向这一页的128个字地址之一。SP指向全空间的任意一个地址,dma指向某页的特定地址。从一个数据空间的任何一个基地址访问连续的128个字的块。在偏移地址前加来设定,举例:注意(流水线等待.)见p34、LD#1234h,SP SSBX CPL ST#5678h,30h;(1264h)=#5678h2、LD#020h,DP RSBX CPL ST#1234h,30h;(1030h)=#1234h 0 0010 0000 011 0000=1030,间接寻址:,使用辅助寄存器16位的地址,访问数据存储空间的任意单元

6、间接寻址类型循环寻址(*)位倒序寻址(*),例:完成下列表达式的程序.bss x,4;伪指令,为变量X,Y保留一个5个字的空间.bss y,1.text;程序开始,该段后包含了可执行的代码 STM#X,AR1;将#X送到AR1中 LD*AR1+,A;(AR1)A,AR1=AR1+1 ADD*AR1+,A;(AR1)+(A)A ADD*AR1+,A;+X3 ADD*AR1,A;+X4 STL A,*(y);A中的低位数送到y中,X1X2X3X4Y,AR1 x,1000h.1004h,.title“add001.asm”.mmregs.def start.bss x,5.bss y,1.data

7、Table:.word 1,2,3,4,5.text,ld*ar1+,aadd*ar1+,aadd*ar1+,aadd*ar1+,aadd*ar1+,a stl a,y,start:stm#0,swwsrstm#x,ar1rpt#4mvpd table,*ar1+;初始化数据,;-1111111111-normal-STM#x,AR1;将#X送到AR1中 LD*AR1+,A;(AR1)A,AR1=AR1+1 ADD*AR1+,A;(AR1)+(A)A ADD*AR1+,A;+X3 ADD*AR1,A;+X4 STL A,*(y);A中的低位数送到y中,;-2222222222-rpt-stm#

8、x,ar1 ld*ar1+,a rpt#3 add*ar1+,a stl a,*(y);-222222222222-,;-3333-add-1 3 5 STM#x,AR1 STM#2,AR0 ld*ar1+0,a add*ar1+0,a add*ar1+0,a stl a,*(y);-3333-,xh:b xh;空循环,例:求Y=X2+X4+X6+X8+X10.bss x,10;给变量x保留10个空间.bss y,1;给变量y保留1个空间.text;程序开始 STM#X+1,AR1 STM#2,AR0 LD*AR1+0,A;X2A ADD*AR1+0,A;X2+X4A ADD*AR1+0,A;

9、X2+X4+X6A ADD*AR1+0,A;X2+X4+X6+X8A ADD*AR1+0,A;X2+X4+X6+X8+X10A STL A,*(Y);Y为数据存储器的绝对地址1 3 5和2 4 6这样的都容易寻址,如何寻址 0 8 4 12 2 10 14 1 9 5 13 3 11 7 15?,位码倒序寻址功能:p36-2位码倒序寻址功能提高了FFT的运算速度和在程序中使用存储器的效率。在这种方式中,AR0存放的整数是FFT点数N的一半,执行*ARX+0B时,进位是从左到右。例:N=8,AR0=N/2=4,AR2=8H*AR2+0B;C*AR2+0B;A*AR2+0B;E 1000+100

10、1100=C+100 1010=A+100 1110=E,例:AR2=(0110 0000)2,AR0=(0000 1000)2 执行*AR2+0B;0110 0000 执行完后AR2的内容+0000 1000 0110 1000;68h+0000 1000 0110 0100;64h+0000 1000 0110 1100;6Ch,循环寻址功能:许多算法,例如卷积、相关和FIR滤波需要一个环形的缓冲区。它就向一个滑动窗口包含了所有最新的数据。当接收到最新的数据时,丢弃最老的数据。环形缓冲区的大小包含在BK中,BK的数值由指令STM#lk,BK设定;长度为R的缓冲区首地址必须排列在N的边界上,

11、即循环缓冲区基地址的N个最低位必须为0,N满足2的N次幂大于R,R必须加载到BK寄存器中。例如,R=31的缓冲区首地址必须在低 5位为 0的地址上(0 0000),而31则必须装载到BK中。又如,32个字大小的缓冲区首地址必须在低6位为0的地址上(00 0000),而 32则装载到 BK中。,缓冲区的有效首地址由用户指定的ARx中的低N位为0的地址决定 0 0000,缓冲区的有效结束地址由用户指定的ARx中的高16N位与BK中的值连接而成 1 1111。而缓冲区的索引值则由ARx的低N位决定。下面是使用循环寻址的三条规则:(1)把循环缓冲区的首地址放在符合上述算法的N的边界地址上(2)使用一个

12、小于或等于缓冲区大小的步长。(3)在开始寻址之前,辅助寄存器必须指向循环缓冲区内的元素。,循环寻址的计算方法:IF 0=BK THEN indeXindex+step-BK ELSE IF index+step0 THEN index=index+step+BK,例:R=9,STEP=5STM#9,BKSTM#5,AR0STM#0H,AR2;0000,24=169,index=0ADD*AR2+0%,A;index=5 ADD*AR2+0%,A;1 6,例:BK=6STM#8H AR1;INDEX*AR1(0)%;0*AR1(5)%;5*AR1(2)%;1*AR1(-3)%;4*AR1(6)%

13、;4 步长 新的位置,存储器映像寄存器寻址:存储器映像寄存器寻址用于修改存储器映像寄存器。这种寻址方式不需要修改DP或SP的值。存储器映像寄存器寻址可以通过直接寻址和间接寻址来实现。存储器映像寄存器寻址地址产生方式:1)在直接寻址时,强制认为存储器地址的高9位为0,低7位由指令提供,不考虑DP或SP。2)在间接寻址时,仅仅使用当前辅助寄存器的低7位为数据存储器地址,高9位清0。例如:AR1=FF25h,经存储器映像寄存器寻址后,AR1的值变成25h,即指向PRD寄存器(定时器周期寄存器)。8条指令:LDM,MVDM,MVMD,MVMM,POPM,PSHM,STLM,STM。,堆栈寻址:,利用堆

14、栈指针寻址堆栈是从高地址到低地址,SP始终指向最后存入的数据的地址,压入时,先减小SP再压入,弹出时先弹出数据在增加SP4条指令:PSHD,PSHM,POPD,POPM,见指令举例,有4条使用堆栈寻址的指令:PSHD 把一个数据存储器数据压入堆栈;PSHM 把一个存储器映象寄存器中的值压入堆栈;POPD 从堆栈中弹出一个数据至数据存储器单元;POPM 从堆栈中弹出一个数据至存储器映象寄存器。,设置一个100保留空间单元的名为”的堆栈区。,必须如下设置:Size.set 100Stack.usect“stk”,size stm#stack+size,sp,数据类型:16位和32位数。访问16数,

15、通过DB或EB总线,访问32位操作数,通过CB(高位)和DB(低位)。写操作时,访问32位数时,第一个字是高位字,第二个字是低位字。如果在偶数地址访问第一个字,则在下一个(更高的)地址访问第二个字。如果在奇数地址访问第一个字,则在下一个、(更低的)地址访问第二个字。,高位字低位字,低位字高位字,1000h1001h,1000h1001h,当addr=1000h,当addr=1001h,双操作数指令举例:C16:双重16位或双精度算法模式。C16=0:双精度方式;C16=1:双16位方式。1、DADD 2、DADST 3、DLD 4、DRSUB 5、DSADT 6、DST7、DSUB8、DSUBT,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号