數(shù)據(jù)尋址方式課件_第1頁
數(shù)據(jù)尋址方式課件_第2頁
數(shù)據(jù)尋址方式課件_第3頁
數(shù)據(jù)尋址方式課件_第4頁
數(shù)據(jù)尋址方式課件_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

尋址用到的縮寫語Lk:16位長立即數(shù);Dst:目的累加器;Src:源累加器;PA:16位立即數(shù)---I/O口地址;Pmad:16位立即數(shù)---程序存儲器地址;Dmad:16位立即數(shù)---數(shù)據(jù)存儲器地址;Xmem:16位雙尋址操作數(shù),用于雙/單操作數(shù)指令。從DB總線讀出;Ymem:16位雙尋址操作數(shù),用于雙操作數(shù)指令。從CB數(shù)據(jù)總線讀出。Smem:16位單尋址操作數(shù)。立即尋址:

就是指令中包含有執(zhí)行指令所需要的立即數(shù)(不用尋址)。在數(shù)字前面加#號,表示一個立即數(shù);

﹡立即數(shù)可為3、5、8、9位短立即數(shù),也可為16位長立即數(shù);指令可為1字或2字。

如:1)LD#80h,A

2)LD#7h,ARP

3)RPT#FFh

4)LD#1Fh,ASM;將5位立即數(shù)加載到ASM中

5)LD#1FFh,DP;將9位立即數(shù)加載到DP中

絕對尋址:﹡指令中包含有所要尋址的存儲單元的16位地址。﹡有四種絕對尋址:dmad尋址,pmad尋址,PA尋址,*(lk)尋址。數(shù)據(jù)頁分配情況:地址DP27=1280000-----007Fh第0頁0080-----00FF10100-----017F20180-----01FF30200-----027F40280-----02FF50300-----037F60380-----03FF7…..Dmad尋址:MVDK*AR3-,1000hMVDM300h,BKMVKD1000h,*+AR5MVMDAR7,8000hPmad尋址:MVDPDAT0,0FE00hMVPD2000h,*AR7MVPD0FE00h,DAT5PA尋址:PORTR05,INDATPORTWOUTDAT,5h*(lk)尋址:LD*(2000h),ASTLA,*(200h)累加器尋址:利用累加器的內(nèi)容作為地址來訪問程序存儲器中的數(shù)據(jù)READA:從程序存儲器中(A的內(nèi)容為地址)讀數(shù)據(jù)到數(shù)據(jù)存儲器中WRITA:將數(shù)據(jù)存儲器中的數(shù)寫到程序存儲器中(A的內(nèi)容為地址)直接尋址:﹡指令包含了數(shù)據(jù)地址的低7位,作為偏移地址與DP或SP中的基地址組合形成完整的16位數(shù)據(jù)地址。在DP和SP不變的情況下,可以直接訪問128個地址。﹡使用SP還是DP由狀態(tài)寄存器中的CPL位決定:

CPL=0,使用DP的9位作為高9位與偏移地址相加

CPL=1,使用SP的16位與偏移地址相加﹡直接尋址指令編碼格式:

15~876~0

opcodeI=0damI=0,表示直接尋址直接尋址的地址產(chǎn)生:※

DP的取值范圍:0~511(29=512),dma的取值范圍從0~128,所以,DP指向全部的512頁之一,dma指向這一頁的128個字地址之一?!?/p>

SP指向全空間的任意一個地址,dma指向某頁的特定地址。從一個數(shù)據(jù)空間的任何一個基地址訪問連續(xù)的128個字的塊?!?/p>

在偏移地址前加@來設(shè)定舉例:注意(流水線等待..)見p341、LD#1234h,SPSSBXCPLST#5678h,@30h;(1264h)=#5678h2、LD#020h,DPRSBXCPLST#1234h,@30h;(1030h)=#1234h0001000000110000=1030

間接尋址:使用輔助寄存器16位的地址,訪問數(shù)據(jù)存儲空間的任意單元間接尋址類型循環(huán)尋址(*)位倒序?qū)ぶ?*)例:完成下列表達式的程序

.bssx,4;偽指令,為變量X,Y保留一個5個字的空間

.bssy,1

.text;程序開始,該段后包含了可執(zhí)行的代碼

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

STLA,*(y);A中的低位數(shù)送到y(tǒng)中

X1X2X3X4YAR1x1000h...1004h.title“add001.asm”.mmregs .defstart .bssx,5 .bssy,1 .dataTable:.word1,2,3,4,5 .text

ld*ar1+,a add*ar1+,a add*ar1+,a add*ar1+,a add*ar1+,astla,@ystart: stm#0,swwsr stm#x,ar1 rpt#4 mvpdtable,*ar1+;初始化數(shù)據(jù);------------1111111111---------normal----- STM#x,AR1;將#X送到AR1中

LD*AR1+,A;((AR1))→A,AR1=AR1+1ADD*AR1+,A;((AR1))+(A)→AADD*AR1+,A;+X3ADD*AR1,A;+X4STLA,*(y);A中的低位數(shù)送到y(tǒng)中

;---------1111111111111111----;-----2222222222---rpt---- stm#x,ar1 ld*ar1+,a rpt#3 add*ar1+,a stla,*(y)

;----222222222222-------;-------3333-add--135 STM#x,AR1 STM#2,AR0 ld*ar1+0,a add*ar1+0,a add*ar1+0,a stla,*(y);--------3333-- xh: b xh ;空循環(huán)例:求Y=X2+X4+X6+X8+X10.bssx,10;給變量x保留10個空間.bssy,1;給變量y保留1個空間.text;程序開始

STM#X+1,AR1STM#2,AR0LD*AR1+0,A;X2→AADD*AR1+0,A;X2+X4→AADD*AR1+0,A;X2+X4+X6→AADD*AR1+0,A;X2+X4+X6+X8→AADD*AR1+0,A;X2+X4+X6+X8+X10→ASTLA,*(Y);Y為數(shù)據(jù)存儲器的絕對地址135和246這樣的都容易尋址,如何尋址084122101419513311715??位碼倒序?qū)ぶ饭δ埽簆36--2

位碼倒序?qū)ぶ饭δ芴岣吡薋FT的運算速度和在程序中使用存儲器的效率。在這種方式中,AR0存放的整數(shù)是FFT點數(shù)N的一半,執(zhí)行*ARX+0B時,進位是從左到右。例:N=8,AR0=N/2=4,AR2=×××8H

*AR2+0B;×××C

*AR2+0B;×××A

*AR2+0B;×××E

……

×××1000

+100

×××1100=×××C

+100

×××1010=×××A

+×××100

1110=×××E

例:AR2=(01100000)2

,AR0=(00001000)2

執(zhí)行*AR2+0B;

01100000執(zhí)行完后AR2的內(nèi)容

+00001000

01101000;68h

+00001000

01100100;64h

+00001000

01101100;6Ch

……

循環(huán)尋址功能:

許多算法,例如卷積、相關(guān)和FIR濾波需要一個環(huán)形的緩沖區(qū)。它就向一個滑動窗口包含了所有最新的數(shù)據(jù)。當(dāng)接收到最新的數(shù)據(jù)時,丟棄最老的數(shù)據(jù)。環(huán)形緩沖區(qū)的大小包含在BK中,BK的數(shù)值由指令STM#lk,BK設(shè)定;長度為R的緩沖區(qū)首地址必須排列在N的邊界上,即循環(huán)緩沖區(qū)基地址的N個最低位必須為0,N滿足2的N次冪大于R,R必須加載到BK寄存器中。例如,R=31的緩沖區(qū)首地址必須在低5位為0的地址上(×××××××××××00000),而31則必須裝載到BK中。又如,32個字大小的緩沖區(qū)首地址必須在低6位為0的地址上(××××××××××000000),而32則裝載到BK中。

緩沖區(qū)的有效首地址由用戶指定的ARx中的低N位為0的地址決定×××××××××××00000,緩沖區(qū)的有效結(jié)束地址由用戶指定的ARx中的高16-N位與BK中的值連接而成×××××××××××11111。而緩沖區(qū)的索引值則由ARx的低N位決定。下面是使用循環(huán)尋址的三條規(guī)則:

(1)把循環(huán)緩沖區(qū)的首地址放在符合上述算法的N的邊界地址上

(2)使用一個小于或等于緩沖區(qū)大小的步長。

(3)在開始尋址之前,輔助寄存器必須指向循環(huán)緩沖區(qū)內(nèi)的元素。循環(huán)尋址的計算方法:

IF0<=index+step<BKTHENindex=index+stepELSEIFindex+step>=BKTHENindeX=index+step-BKELSEIFindex+step<0THENindex=index+step+BK例:R=9,STEP=5STM#9,BKSTM#5,AR0STM#×××0H,AR2;×××0000,24=16>9,index=0ADD*AR2+0%,A;index=5ADD*AR2+0%,A;

16……

例:BK=6STM#×××8HAR1;INDEX*AR1(0)%;

0*AR1(5)%;

5*AR1(2)%;

1*AR1(-3)%;

4*AR1(6)%;

4……

步長新的位置

存儲器映像寄存器尋址:存儲器映像寄存器尋址用于修改存儲器映像寄存器。這種尋址方式不需要修改DP或SP的值。存儲器映像寄存器尋址可以通過直接尋址和間接尋址來實現(xiàn)。存儲器映像寄存器尋址地址產(chǎn)生方式:1)在直接尋址時,強制認為存儲器地址的高9位為0,低7位由指令提供,不考慮DP或SP。2)在間接尋址時,僅僅使用當(dāng)前輔助寄存器的低7位為數(shù)據(jù)存儲器地址,高9位清0。例如:AR1=FF25h,經(jīng)存儲器映像寄存器尋址后,AR1的值變成25h,即指向PRD寄存器(定時器周期寄存器)。8條指令:LDM,MVDM,MVMD,MVMM,POPM,PSHM,STLM,STM。堆棧尋址:利用堆棧指針尋址堆棧是從高地址到低地址,SP始終指向最后存入的數(shù)據(jù)的地址,壓入時,先減小SP再

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論