版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第三章TMS320C54X指令系統(tǒng)
本章內容包括:(1)存儲器尋址方式(2)匯編語言指令系統(tǒng)(3)偽指令系統(tǒng)。主講人:陳德宏立即數(shù)尋址:指令中有一個操作數(shù)為固定的數(shù)(加#)絕對地址尋址:指令中有一個操作數(shù)為固定的地址累加器尋址:用累加器的值作為地址去訪問程序存儲器直接尋址:指令中的地址和所在的數(shù)據(jù)頁指針DP或SP
決定了操作數(shù)在數(shù)據(jù)存儲器中的實際地址間接尋址:按照輔助寄存器中的地址訪問存儲器存儲器映射寄存器尋址:修改存儲器映射寄存器中的值,而不影響當前DP或SP的值堆棧尋址:把數(shù)據(jù)壓入和彈出系統(tǒng)堆棧。尋址方式:當硬件執(zhí)行指令時,尋找指令所參與運算的操作數(shù)的方法3.1存儲器尋址方式符號含義Smem16位單尋址操作數(shù)Xmem16位的雙尋址操作數(shù),從DB總線讀出Ymem16位的雙尋址操作數(shù),從CB總線讀出dmad16位立即數(shù),數(shù)據(jù)存儲器的地址pmad16位立即數(shù),程序存儲器的地址PA16位立即數(shù),I/O的地址src源累加器dst目的累加器lk16位的長立即數(shù)部分尋址的縮寫語在立即數(shù)尋址中,指令里包括了立即操作數(shù)(常數(shù),用#k表示,#用來區(qū)分地址的表示方法)。立即數(shù)可包含在單字或雙字指令中。3-,5-,8-或9-bit立即數(shù)在單字指令中16-bit立即數(shù)在雙字指令中例如:LD #80h, A1.立即數(shù)尋址3或5bit立即數(shù)8bit立即數(shù)9bit立即數(shù)16bit立即數(shù)LDFRAMELDADDORMADDMRPTANDRPTZANDMSTBITFSTMCMPMSUBLDXORMACXORMOR表、支持立即數(shù)尋址的指令2.絕對尋址指令中有一個操作數(shù)為所要尋址存儲單元16位地址術語解釋:dmad-數(shù)據(jù)存儲地址;pmad-程序存儲地址;PA-口地址;lk-長整數(shù)。只有四種類型指令可以使用16bits的絕對地址尋址:dmad尋址pmad尋址PA尋址*(lk)尋址(1)dmad尋址
dmad尋址用一標號標記數(shù)據(jù)空間地址,這類指令有:MVDKSmem,dmadMVDMdmad,MMRMVKDdmad,SmemMVMDMMR,dmad如:MVKDSAMPLE,*AR5此處SAMPLE即是dmad
(2)pmad尋址
pmad尋址用一標號標記程序空間地址,這類指令有:
FIRSXmem,Ymem,pmadMACDSmem,pmad,srcMACPSmem,pmad,srcMVPDpmad,Smem(3)PA尋址PA尋址用一標號標記外部I/O口地址,這類指令有:
PORTRPA,SmemPORTWSmem,PA如:PORTRFIFO,*AR5
此處FIFO即為PA
(4)*(lk)尋址:適用于支持單數(shù)據(jù)存儲器操作數(shù)(Smem)的指令:例如:LDSmem,dst
則可以有LD*(Buffer),A;將Buffer符號所指的數(shù)據(jù)存儲單元的數(shù)裝載到累加器A,
Buffer是一個符號常數(shù)
在直接尋址中,指令代碼包含了數(shù)據(jù)存儲器地址的低七位。這7bit(dma)作為偏移地址與數(shù)據(jù)頁指針(DP),當ST1中的CPL位=0
堆棧指針(SP),
當ST1中的CPL位=1相結合共同形成16位的數(shù)據(jù)存儲器實際地址。當偏移地址為變量時,變量前加@符號。例如:X.set5LD#20hDPLD@X,A3.直接尋址CPL=0:dma與9-bit的DP相結合形成數(shù)據(jù)存儲器地址。以DP為基準的直接尋址DP9-bit9-bit的DP指向數(shù)據(jù)存儲空間的512個數(shù)據(jù)頁中的一頁012510511注意的是:用DP直接尋址,操作對象需處于同一頁用DP直接尋址CPL=0地址計算公式:例如:SSBXCPL;狀態(tài)寄存器置位LD@1,AADD@2,A;A的結果:1500024010000503404SPSP方式,以SP中內容作為dmad基地址,指令中地址標號作為正向偏移量,二者相加構成dmad地址。用SP直接尋址CPL=1:READASmemWRITASmem
READA是把累加器A所確定的程序存儲器單元中的一個字,傳送到單數(shù)據(jù)存儲器(Smem)操作數(shù)所確定的數(shù)據(jù)存儲器單元中。WRITA是把Smem操作數(shù)所確定的數(shù)據(jù)單元中的一個字,傳送到累加器A確定的程序存儲器單元中去。上述兩條指令,在重復的方式下執(zhí)行,搬移連續(xù)的數(shù)據(jù)(以A的值為起始地址)到連續(xù)的DM中,能夠對累加器A自動增量4.累加器尋址累加器尋址是用累加器中的數(shù)作為一個地址。這種尋址方式可用來對存放數(shù)據(jù)的程序存儲器尋址。地址由累加器的低16位決定,共有兩條指令可以采用累加器尋址:DM的地址:0206h15141312111098765432100000001000000110累加器尋址和直接尋址舉例5.間接尋址
在間接尋址中,64K數(shù)據(jù)空間任意單元都可通過一個輔助寄存器中的16-bit地址進行訪問?!瓹54x有8個16-bit輔助寄存器(AR0-AR7)。兩個輔助寄存器算術單元(ARAU0和ARAU1),根據(jù)輔助寄存器的內容進行操作,完成無符號的16-bit算術運算。間接尋址很靈活,不僅能從存儲器中讀或寫一個單16-bit數(shù)據(jù)操作數(shù),而且能在一條指令中訪問兩個數(shù)據(jù)存儲器單元(即從兩個獨立的存儲器單元讀數(shù)據(jù),或讀一個存儲器單元同時寫另一個存儲器單元,或讀寫兩個連續(xù)的存儲器單元)。*ARx:
ARx包含了數(shù)據(jù)存儲器地址*ARx-/*ARx+:訪問后,
ARx中的地址減1/加1*+ARx:在尋址之前,ARx中的地址加1*ARx-0B/*ARx+0B:訪問后,從ARx中以位倒序進位的方式減去/加上AR0*ARx-0/*ARx+0
:訪問后,從ARx中減去/加上AR0*ARx-%/*ARx+%:
訪問后,ARx中的地址以循環(huán)尋址的方式減1/加1*ARx-0%/*ARx+0%:訪問后,從ARx中以循環(huán)尋址的方式減去/加上AR0*ARx(lk):
ARx和16-bit的長偏移(lk)的和用來作為數(shù)據(jù)存儲器地址。ARx本身不被修改單操作數(shù)間接尋址類型:*+ARx(lk):在尋址之前,把一個帶符號的16-bit的長偏移(lk)加到ARx中,然后用新的ARx的值作為數(shù)據(jù)存儲器的地址*+ARx(lk)%:在尋址之前,把一個帶符號的16-bit的長偏移以循環(huán)尋址的方式加到ARx中,然后再用新的ARx的值作為數(shù)據(jù)存儲器的地址有B符號,倒序進位有%符號,循環(huán)尋址有0符號,與AR0有關間接尋址編程:
.mmregs .bssx,4,1 .dataa .word1,2,3,4 .sect“program” STM#a,AR1 STM#x,AR2 LD#0,A LD*AR1+,T MAC*AR2+,A LD*AR1+,T MAC*AR2+,A LD*AR1+,T MAC*AR2+,A LD*AR1,T MAC*AR2,A …..編程舉例:在卷積、相關、FIR中要用到循環(huán)緩沖區(qū)。循環(huán)緩沖區(qū)長度R由BK決定
STM#lk,BK;設置循環(huán)緩沖區(qū)長度循環(huán)緩沖區(qū)從N位的地址邊界(N位0)開始,R<2N,若R=40,則N=6,開始地址為:
xxxxxxxxxx000000。循環(huán)尋址時用一個ARx指向緩沖區(qū)。地址變化規(guī)則:循環(huán)尋址(有%符號)
.sect “fir-prog”
STM#255,BRC ;BlockRepeatCounter,
;Repeat256times
RPTBDfir_filter_loop STM#16,BK ;FIRcircularbuffersize
LD*AR7+,A ;loadtheinputvalue
STLA,*AR4+% ;replaceoldestsamplewith
;newestsample
RPTZA,#15
MAC*AR4+0%,*AR3+0%,A ;filtering
STHA,*AR5+ ;replacetheoldestbuffervaluefir_filter_loop應用舉例:計算16階的FIR濾波器輸出256個點0001000101100011010111118點的FFT蝶型結運算FFT中混序就是位倒序FFT運算時輸出/輸入序列中必有其一要混序。倒序,10100101,用于FFT中蝶型變換位倒序進位:進位不是加到左邊一位,而是加到右邊的那位。例如:進位加到左邊進位加到右邊
11001100+1000+1000101000010如果AR2中存放X(0)的地址,AR0的值為8(FFT長度的一半),則下列程序向PA口輸出倒序:0000,1000,0100,1100,0010,…,0111,1111。RPT#15PORTW*AR2+0B,PA倒序進位(有B符號)位倒序尋址的執(zhí)行
設FFT長度N=16,則AR0賦值為8,位倒序方式讀入數(shù)據(jù)情況如下:存儲器映射寄存器只有8條指令能使用存儲器映射寄存器尋址:LDMMMR,dstMVDMdmad,MMRMVMDMMR,dmadMVMMMMRx,MMRyPOPMMMRPSHMMMRSTLMsrc,MMRSTM#lk,MMR
存儲器映射寄存器尋址用來修改存儲器映射寄存器而不影響當前數(shù)據(jù)頁指針(DP)或堆棧指針(SP)的值。存儲器映射寄存器尋址直接尋址中利用操作數(shù)中的低7位訪問MMR間接尋址中利用ARx訪問MMR,Arx高位被置0。MVDM300H,BKLDAR4,AMVMMSP,AR16.存儲器映射寄存器尋址共有四條使用堆棧尋址方式訪問堆棧的指令:
PSHD把一個數(shù)據(jù)存儲器的值壓入堆棧。
PSHM把一個存儲器映射寄存器的值壓入堆棧。 POPD把一個數(shù)據(jù)存儲器的值彈出堆棧。
POPM把一個存儲器映射寄存器的值彈出堆棧。7.堆棧尋址系統(tǒng)堆棧用來在中斷和子程序期間自動存放程序計數(shù)器(PC)。它也能用來存放額外的數(shù)據(jù)項或傳遞數(shù)據(jù)值。處理器使用一個16-bit的存儲器映射寄存器—堆棧指針來對堆棧尋址,它總是指向存放在堆棧中的最后一個元素。0001001000110100010101100001001000110100010101100011sp操作前的堆棧和SP0010sp操作后的堆棧和SPX1X1X2圖、堆棧操作對堆棧指針的影響(1)立即尋址運行速度慢,但需要較多的程序存儲空間,而且數(shù)值不能改變,主要用于表示常數(shù)和初始化。(2)絕對尋址可以訪問任何的數(shù)據(jù)空間,但速度慢,要求較多的存儲空間,用于對速度沒有苛求的場合。(3)累加器尋址主要是在程序空間和數(shù)據(jù)空間傳送數(shù)據(jù)。(4)間接尋址類似于高級語言中的指針,較為靈活,主要是針對數(shù)字信號處理的算法而設計的。(5)直接尋址中尋址速度較快,利用并行流水線操作,用于時間要求較高的場合。(6)MMR是基地址為零(不考慮SP、DP、CPL)的直接尋址方式,尋址速度較快,可以直接快速訪問數(shù)據(jù)存儲器的0頁資源。7種尋址方式不同的用途
TMS320C54x的指令集有129條指令,由尋址方式不同衍生至216條,按功能分為如下幾類:
算術運算指令 邏輯運算指令
程序控制指令
裝入和存儲指令P98表2-1列出了指令系統(tǒng)的符號和意義TMS320C54x的指令集
當它表示一個整數(shù)時,其最低位(D0)表示1,D1位表示2的1次方,次高位(D14)表示2的14方。
如果表示一個有符號數(shù)時,最高位(D15)為符號位,0表示正數(shù),1表示負數(shù)。例如,07FFFH表示最大的正數(shù)32767(十進制),而0FFFFH表示最大的負數(shù)-1(負數(shù)用2的補碼方式顯示)。
當需要表示小數(shù)時,小數(shù)點的位置始終在最高為后,而最高位(D15)表示符號位。這樣次高位(D14)表示0.5,然后是0.25,。所以4000H表示小數(shù)0.5,2000H表示小數(shù)0.25,而0001H表示16位定點DSP表示的最小的小數(shù)(有符號)0.000030517578125。小數(shù)或整數(shù)由FRCT位決定:
SSBXFRCT;將FRCT置1,下面是以小數(shù)方式運算定點DSP中數(shù)據(jù)表示方法1、算術運算指令算術運算指令用于完成加減乘除等算術運算。按照功能的不同可以將算術運算類指令分為7組:(1)加法指令(ADD)(2)減法指令(SUB)(3)乘法指令(MPY)(4)乘加指令(MAC)(5)乘減指令(MAS)(6)雙數(shù)/雙精度(32比特操作數(shù))(DADD、DSUB)(7)專用指令(Application-specific)(1)加法指令將16比特的值與累加器內容或另一個數(shù)據(jù)存儲單元內容相加,并把結果放進累加器。ADDSmem,src
;src=(Smem)+(src)ADDSmem,TS,src
;src=(Smem)<<TS+(src)ADDSmem,16,src[,dst];src
or[,dst]=(Smem)<<16+(src)ADDSmem,[SHIFT],src[,dst];src
or[,dst]=(Smem)<<[SHIFT]+src
2ADDXmem,SHFT,dst
;src=(Xmem)<<SHFT+(src)ADDXmem,Ymem,dst
;dst=((Xmem)+(Ymem))<<16ADD#1k,[SHFT],src[,dst];src
or[,dst]=lk<<SHFT+(src)2ADD#1k,16,src[,dst];src
or[,dst]=lk<<16+(src)2ADDsrc[,SHIFT][,dst];dst=(srcor[,dst])+(src)<<SHIFTADDsrc,ASM[,dst];src
or[,dst]=(srcor[,dst])+(src)<<ASMADDCSmem,src;src=src+Smem+CADDM#lk,Smem;Smem=#lk+(Smem)2其中:Smem為16比特的單數(shù)據(jù)存儲器操作數(shù);
Xmem和Ymem為雙數(shù)據(jù)存儲器操作數(shù);
src和dst為源(目的)操作數(shù),這里是指C54x的累加器A和B
lk為整數(shù),范圍-32768到32767;SHIFT為移位位數(shù),范圍-16到15;
SHFT為移位位數(shù),范圍0到15;執(zhí)行該指令時可能會影響的狀態(tài)位有進位標志C和目的累加器溢出標志Ovdst;另外,影響該指令執(zhí)行的狀態(tài)位有符號擴展模式位SXM和溢出模式位OVM;算術運算指令大部分都只需要一個指令周期,只有個別指令需要2~3指令周期。(2)減法指令是將累加器的內容或另一個數(shù)據(jù)存儲單元的內容與一個16比特的值相減,并把結果放進累加器。SUBSmem,src
;src=(src)-(Smem)SUBSmem,TS,src
;src=(src)-(Smem)<<TSSUBSmem,16,src[,dst];src
or[,dst]=(src)-(Smem)<<16SUBSmem[,SHIFT],src[,dst];src
or[,dst]=(src)-(Smem)<<SHIFTSUBXmem,SHFT,src
;src=(src)-(Xmem)<<SHFTSUBXmem,Ymem,dst
;dst=(Xmem)<<16-(Ymem)<<16SUB#1k[,SHFT],src[,dst];src
or[,dst]=(src)-1k<<SHFTSUB#1k,16,src[,dst];src
or[,dst]=(src)-1k<<16SUBsrc[,SHIFT][,dst];dst=(dst)-(src)<<SHIFTSUBsrc,ASM[,dst];src
or[,dst]=(dst)-(src)<<ASMSUBB Smem,src ;src-Smem-CSUBCSmem,src;if(src-Smem<<15)>=0;src=(src-Smem<<15)<<1+1Elsesrc=src<<!SUBSSmem,src;src=src-uns(Smem)(3)乘法指令在‘C54X中提供了大量的乘法運算指令,其結果都是32位,放在A或B累加器中。乘數(shù)在‘C54X的乘法指令很靈活,可以是T寄存器、立即數(shù)、存貯單元和A或B累加器的高16位。如果是無符號數(shù)乘時,請使用MPYU指令。這是一條專用于無符號數(shù)乘法運算的指令,而其它指令都是有符號數(shù)的乘法。狀態(tài)位:影響該指令執(zhí)行的狀態(tài)位有:分數(shù)模式位FRCT和溢出模式位OVM;執(zhí)行該指令會產(chǎn)生的狀態(tài)位:目的累加器溢出標志OVdst3、乘法指令rsbx FRCT ;清FRCT標志,準備整數(shù)乘ld temp1,T ;將變量temp1裝入T寄存器mpy temp2,A ;完成temp2*temp1,結果放;入A寄存器(32位)整數(shù)乘法舉例在‘C54X中,小數(shù)的乘法與整數(shù)乘法基本一致,只是由于兩個有符號的小數(shù)相乘,其結果的小數(shù)點的位置在次高的后面,所以必須左移一位,才能得到正確的結果?!瓹54X中提供了一個狀態(tài)位FRCT,將其設置為1時,系統(tǒng)自動將乘積結果左移移位。兩個小數(shù)(16位)相乘后結果為32位,如果精度允許的話,可以只存高16位,將低16位丟棄,這樣仍可得到16位的結果。實現(xiàn)小數(shù)乘法
ssbxFRCT ;FRCT=1,準備小數(shù)乘法
ld temp1,16,a ;將變量temp1裝入累加器A的高16位
mpyatemp2 ;完成temp2乘累加器A的高16位,結
;果在B中,同時將temp2裝入T寄存器
sth b,temp3 ;將乘積結果的高16位存入變量temp3如:0.1(0x0ccd)x0.7(0x599a)
=0.06997680664063(0x08f5)注:可以使用MPYR完成四舍五入。比較如下結果
mpyrtemp1,b
;T*temp1->b(4)乘加指令乘加指令是將臨時寄存器T或一個數(shù)據(jù)存儲單元的內容與一個立即數(shù)或另一個數(shù)據(jù)存儲單元的內容相乘并把乘積與源累加器的內容相加,然后把結果放進累加器中。MAC[R]Smem,src;src=(T)*(Smem)+(src)MAC[R]Xmem,Ymem,src[,dst];src
or[dst]=(Xmem)*(Ymem)+(src),T=(Xmem)MAC#1k,src[,dst];dst=(T)*1k+(src)MACSmem,#1k,src[,dst];dst=(Smem)*1k+(src),T=(Smem)影響該指令執(zhí)行的狀態(tài)位有:分數(shù)模式位FRCT和溢出模式位OVM;執(zhí)行該指令會產(chǎn)生的狀態(tài)位:目的累加器溢出標志OVdst.(5)乘減指令乘減指令MAS,將臨時寄存器T或一個數(shù)據(jù)存儲單元的內容與另一個數(shù)據(jù)存儲單元的內容相乘并把乘積與源累加器的內容相減,然后把結果放進累加器中。MAS[R]Smem,src;src=(src)-(T)*(Smem)MAS[R]Xmem,Ymem,src[,dst];
src
or[dst]=(src)-(Xmem)*(Ymem),T=(Xmem)影響該指令執(zhí)行的狀態(tài)位有:分數(shù)模式位FRCT和溢出模式位OVM;執(zhí)行該指令會產(chǎn)生的狀態(tài)位:目的累加器溢出標志Ovdst乘加和乘減指令匯集(6)雙字指那些有一個操作數(shù)為雙字長(32比特)的指令。以DADD為例,其語法及完成的操作如下所示,它在C16的控制下完成一個32比特的加或兩個16比特的加;DADDLmem,src[,dst];If(C16)=0Thendst=(Lmem)+(src);Elsedst(39-16)=(Lmem(31-16))+(src(31-16))dst(15-0)=(Lmem(15-0))+(src(15-0))Lmem為雙字(32比特)數(shù)據(jù)存儲器操作數(shù);src和dst為源(目的)操作數(shù),這里是指C54x的累加器A和累加器B。影響該指令執(zhí)行的狀態(tài)位有:符號擴展模式位SXM和溢出模式位OVM(當C16=0時);執(zhí)行該指令會產(chǎn)生的狀態(tài)位:進位標志C和目的累加器溢出標志OVdst;雙精度/雙數(shù)操作指令(七)特殊指令2.邏輯運算指令按照功能的不同可以將邏輯運算指令分為5組:與(AND)指令或(OR)指令異或(XOR)指令移位(SHIFT)指令測試(TEST)指令(1)與指令Smem為16比特的數(shù)據(jù)存儲器操作數(shù);src和dst為源(目的)操作數(shù),一般為累加器A和累加器B;1k為整數(shù),范圍-32768到32767;SHIFT為移位位數(shù),范圍-16到15;SHFT為移位位數(shù),范圍0到15;(2)或指令src(39-16)不變影響該指令執(zhí)行的狀態(tài)位:無執(zhí)行該指令會產(chǎn)生的狀態(tài)位:無(3)異或指令影響該指令執(zhí)行的狀態(tài)位:無執(zhí)行該指令會產(chǎn)生的狀態(tài)位:無(4)移位和測試指令
測試(TEST)指令可以測試操作數(shù)的比特位的值,也可以比較兩個數(shù)是否相等。BITFSmem,#1k;如果(Smem&&1k)=0,則TC=0;否則TC=1CMPMSmem,#1k;如果Smem等于#1k,則TC=1;否則TC=0;TC為測試結構比特;其中影響該指令執(zhí)行的狀態(tài)位:無執(zhí)行該指令會產(chǎn)生的狀態(tài)位:測試控制比特TC3、程序控制指令程序控制指令用于控制程序的流程,也就是指令的執(zhí)行順序。按照功能的不同可以將程序控制類指令分為7組:跳轉(Branch)指令;調用(Call)指令;中斷(Interrupt)指令;返回(Return)指令;重復(Repeat)指令;堆棧操作指令;混合程序控制指令;(1)跳轉指令
跳轉指令可以改變程序指針PC的值,使程序從一個地址跳轉到另一個地址執(zhí)行。這種跳轉可以是無條件的跳轉,也可以是有條件的跳轉。以BC為例:BCpmad,cond[,cond[,cond]];
if(cond(s))ThenPC=pmad(15-0),elsePC=PC+2其中pmad為16比特的程序地址,范圍0到65535;Cond為跳轉的條件,包括:條件說明條件說明BIOBIO為低NBIOBIO為高CC=1NCC=0TCTC=1NTCTC=0AEQ(A)=0BEQ(B)=0ANEQ(A)<>0BNEQ(B)<>0AGT(A)>0BGT(B)>0AGEQ(A)>=0BGEQ(B)>=0ALT(A)<0BLT(B)<0ALEQ(A)<=0BLEQ(B)<=0ALVA溢出BOVB溢出ANOVA沒有溢出BNOVB沒有溢出UNC無條件
采用延遲方式,緊接著該指令的兩條單指令或一條雙字指令從程序存儲器中取出先執(zhí)行,但如果條件滿足,那么這兩字將從流水中沖掉,程序從pmad開始;如果條件不滿足,PC加2且緊接著該指令的兩個字繼續(xù)執(zhí)行。例:STM#3FFFH,@xBCD2000H,AGTBC2000H,AGT;(4/2)STM#3FFFH,@X;2(2)調用指令
調用指令同樣可以改變程序指針PC的值,使程序從一個地址跳轉到另一個地址執(zhí)行。但與跳轉指令不同的是,DSP在執(zhí)行完被調用的程序段后要返回起跳處繼續(xù)執(zhí)行原來的程序。同樣,這種調用也可以是無條件的或有條件的。下面以CALL為例:CALLpmad;SP=(SP-1),TOS=(PC+2),
PC=pmad(15-0)
其中pmad為目的程序地址;
SP為堆棧指針;TOS為堆棧的頂端;(3)中斷指令中斷指令同樣可以改變程序指針PC的值,使程序從一個地址跳轉到另一個地址執(zhí)行。但與調用指令一樣,DSP在執(zhí)行完中斷服務程序后要返回發(fā)生中斷的地方繼續(xù)執(zhí)行原來的程序。當發(fā)生中斷時,DSP會置INTM為1,屏蔽所有可屏蔽中斷,并在中斷標志寄存器IFR中設置相應的中斷標志。下面以INTR為例:
INTRK;SP=(SP-1),TOS=(PC+1),PC=IPTR(15-7)+K<<2,INTM=1其中K為C54xDSP的中斷號碼,范圍0到31;
IPTR為9比特長的中斷向量指針;執(zhí)行該指令會產(chǎn)生的狀態(tài)位:INTM和中斷標志寄存器IFR中相應的位INTR3例:(4)返回指令返回指令用于在執(zhí)行完被調用的程序段或中斷服務程序后,返回到調用指令或發(fā)生中斷的地方,使DSP能繼續(xù)執(zhí)行原來的程序。快速返回寄存器SP++允許中斷下面以RETE為例:RETE;PC=TOS,SP=(SP+1),INTM=0影響該指令執(zhí)行的狀態(tài)位:無執(zhí)行該指令會產(chǎn)生的狀態(tài)位:中斷屏蔽位INTM(5)重復指令重復指令可以使DSP重復執(zhí)行一條指令或一段指令;RPT#K;單指令重復,RC=#K舉例:累加器清零,循環(huán)執(zhí)行下一條n+1次(6)堆棧操作指令
堆棧操作指令可以對堆棧進行壓入(PUSH)和彈出(POP)操作,相應的操作數(shù)可以是數(shù)據(jù)存儲單元Smem或存儲映射寄存器MMR。下面以PSHD和POPM為例:PSHDSmem;SP=(SP-1),TOS=SmemPOPMMMR;MMR=TOS,SP=(SP+1)其中,Smem為16比特的數(shù)據(jù)存儲器操作數(shù);
MMR為存儲映射寄存器空指令實現(xiàn)一個非屏蔽的軟件復位對狀態(tài)寄存器ST0和ST1特定位清零對狀態(tài)寄存器ST0和ST1特定位置1修改輔助寄存器保持空閑狀態(tài)直到有中斷產(chǎn)生條件執(zhí)行(7)混合程序控制指令舉例:(1)XC1,ALEQMAR*AR1+ADDA,DAT100(2)LOOP1:XC2,BIOB LOOP1PORTRPA0,@y1……FFFFFFFFFFA執(zhí)行前FFFFFFFFFFA執(zhí)行后AR10032AR100334、裝載與存儲指令裝載和存儲指令用于完成數(shù)據(jù)的讀入和保存,按照功能可以為:裝入和存儲指令包括:
一般的裝入
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度牛肉產(chǎn)品綠色認證與環(huán)保標識合同4篇
- 二零二五版暖通設備研發(fā)與制造合同4篇
- 2025年度農(nóng)業(yè)品牌授權合作合同范本4篇
- 2025年度嬰幼兒奶粉線上線下融合營銷合作合同范本
- 2025年度門臉房屋租賃與新能源汽車充電站建設合同4篇
- 2025年度土地流轉收益分配合同示范文本
- 二零二五年度房地產(chǎn)公司打字員招聘合同4篇
- 二零二五年度互聯(lián)網(wǎng)+期權合約合同范本4篇
- 二零二五年度智能安防系統(tǒng)技術服務合同協(xié)議書2篇
- 2025年度蘋果出口貿易合同模板4篇
- 2024-2025學年高二上學期期末數(shù)學試卷(新題型:19題)(基礎篇)(含答案)
- 下運動神經(jīng)元損害綜合征疾病演示課件
- 北師大版三年級數(shù)學(上冊)看圖列式計算(完整版)
- 2023中考地理真題(含解析)
- 麻醉藥品、精神藥品月檢查記錄表
- 浙江省寧波市海曙區(qū)2022學年第一學期九年級期末測試科學試題卷(含答案和答題卡)
- 高考英語詞匯3500電子版
- 建院新聞社成立策劃書
- JJF 1101-2019環(huán)境試驗設備溫度、濕度參數(shù)校準規(guī)范
- GB/T 25000.51-2016系統(tǒng)與軟件工程系統(tǒng)與軟件質量要求和評價(SQuaRE)第51部分:就緒可用軟件產(chǎn)品(RUSP)的質量要求和測試細則
- 外科學試題庫及答案(共1000題)
評論
0/150
提交評論