资源描述:
《数据的寻址方式.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、乘法指令1.输入来源数据存储器数据、A(16-32)、T2.输出:累加器;3.A作为输入时,使用MPYA4.其他乘法指令,累加器A用来存储结果的5.缺省乘数为T中的数据6.T不参与运算,将第一操作数→T7.乘法结果受小数方式位FRCT影响,当FRCT=1时,乘法结果左移一位,否则不做处理。MPYDATA3,AMPYADATA3,B例:数据寻址方式C54xDSP提供了7种数据寻址方式:⒈立即数寻址:操作数是一个立即数,包含在指令中;立即数表示方法:应在数值或符号前面加一个“#”号例如:LD#80H,A⒉绝对寻址:指令中有一个16位的有效地址;C54xDSP提供了四种类型的绝对寻址。①数据
2、存储器地址(dmad)寻址:指令中16位的有效地址为数据存储空间的地址。②程序存储器地址(pmad)寻址:指令中16位的有效地址为程序存储空间的地址。③端口地址(PA)寻址:指令中16位的有效地址为外部的端口地址。PORTR PA,SmemPORTWSmem,PA④长立即数*(Ik)寻址指令中16位的有效地址为数据存储空间地址。1.MVDKDAT10,8000H例:⒉MVDPDAT0,0FE00H3.PORTR05,INDAT;INDAT.equ60H⒊累加器寻址:把累加器内的内容作为地址去访问程序存储器的一个单元;(A)→PmemREADASmemWRITASmem⒋直接寻址⑴指令中
3、的7bit是一个数据页内的偏移地址,Dmem的实际地址由基地址DP/SP和偏移地址共同决定的。⑵Dmem实际地址=①DP(9)——偏移地址(7)②SP(16)+偏移地址(7)※CPL=0:①DP(9)——偏移地址(7)CPL=1:②SP(16)+偏移地址(7)⑶采用哪种方式来产生实际地址位于ST1中的编译方式位(CPL)决定。图4.1以DP为基地址的直接寻址图4.2以SP为基地址的直接寻址⒌间接寻址按照辅助寄存器中的地址访问存储器;⑴数据存储空间的地址⑵(ARx)→Dmem⑶*⑷(ARx)增量、减量、偏移或变址的修改,还可以提供循环和位反转寻址表4.8单操作数间接寻址类型(2)双操作数
4、间接寻址双数据存储器操作数间接寻址类型:*ARx、*ARx-、*ARx+、*ARx+0%。所用辅助寄存器只能是AR2、AR3、AR4、AR5。其特点是:占用程序空间小,运行速度快,在一个机器周期内通过两个16位数据总线(C和D)读两个操作数。指令中Xmem表示从DB总线上读出的16位操作数,Ymem表示从CB总线上读出的16位操作数。⒍存储器映射寄存器寻址⑴这种寻址方式用来修改存储器映射寄存器的内容⑵存储器映射寄存器寻址可以在直接寻址和间接寻址中使用。※⑶MMR的地址产生方法为:将16位的有效地址高9位清0。例如:AR1.setFF25HSTLMsrc,*AR1*LDMMMR,dst*
5、MVDMdmad,MMR*MVMDMMR,dmad*MVMMMMRx,MMRy*POPMMMR*PSHMMMR*STLMsrc,MMR*STM#1k,MMRC54xDSP只有8条指令能使用存储器映射寄存器的寻址方式⒎堆栈寻址PSHD:将数据存储器的一个值压入堆栈;PSHM:将存储器映射寄存器的一个值压入堆栈;POPD:将数据存储器的一个值弹出堆栈;POPM:将存储器映射寄存器的一个值弹出堆栈。4条指令采用了堆栈寻址的方式来访问堆栈ST#0x0144,DATA10STM#0x0421,TSTMA,*AR1+执行指令之前(AR1)=0321H,执行指令STT,*AR1-后,(AR1)=。直
6、接寻址中,基地址可由或SP来确定。计算。.title“sum.asm”.mmregs(1).bssy,1STM#x,AR2STM#9,AR3LD#0,Aloop:(2)BANZloop,*AR3-(3)ADD*AR1+,ASTLA,@y.bssx,10对数组z[8]={11,14,55,66,54,34,73,70}进行初始化。.title“Initialization.asm”.mmregsSTACK:.usect“STACK”,10H.bssz,8(1)table:.word11,14,55,66,54,34,73,70.def.textstart:STM#z,AR1(2)(3)e
7、nd:Bend(4)RPT#7MVPDtable,*AR1+.data.end计算y=mx+n。.title“y=mx+n.asm”.mmregsSTACK:.usect“STACK”,10H.bssm,1.bssx,1.bssn,1.bssy,1.defstart.datatable:.word2,33,78(1)start:STM#0,SWWSR(2)STM#m,AR2RPT#2MVPDtable,*AR2+CALLSCend:BendSC