![第四章41指令系統(tǒng)_第1頁(yè)](http://file4.renrendoc.com/view/c4e876bdc3db3605a7551fa831dccc87/c4e876bdc3db3605a7551fa831dccc871.gif)
![第四章41指令系統(tǒng)_第2頁(yè)](http://file4.renrendoc.com/view/c4e876bdc3db3605a7551fa831dccc87/c4e876bdc3db3605a7551fa831dccc872.gif)
![第四章41指令系統(tǒng)_第3頁(yè)](http://file4.renrendoc.com/view/c4e876bdc3db3605a7551fa831dccc87/c4e876bdc3db3605a7551fa831dccc873.gif)
![第四章41指令系統(tǒng)_第4頁(yè)](http://file4.renrendoc.com/view/c4e876bdc3db3605a7551fa831dccc87/c4e876bdc3db3605a7551fa831dccc874.gif)
![第四章41指令系統(tǒng)_第5頁(yè)](http://file4.renrendoc.com/view/c4e876bdc3db3605a7551fa831dccc87/c4e876bdc3db3605a7551fa831dccc875.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
4.1概述4.2匯編語(yǔ)言4.3尋址方式
第四章DSP指令系統(tǒng)2/6/20234.1概述C54xDSP軟件設(shè)計(jì)的方法通常有三種。第一種,用C語(yǔ)言開發(fā)。TI公司提供了用于C語(yǔ)言開發(fā)的CCS(CodeComposerStudio)平臺(tái)。該平臺(tái)包括了優(yōu)化ANSIC編譯器,從而可以在C源程序級(jí)進(jìn)行開發(fā)調(diào)試。這種方式的優(yōu)點(diǎn)是可以增強(qiáng)軟件的可讀性,提高了軟件的開發(fā)速度,方便軟件的修改和移植。然而,C編譯器無(wú)法實(shí)現(xiàn)在任何情況下都能夠合理地利用DSP芯片的各種資源。此外,對(duì)DSP芯片的某些硬件控制,用C語(yǔ)言就不如用匯編程序方便,有些甚至無(wú)法用C語(yǔ)言實(shí)現(xiàn)。第二種,用匯編語(yǔ)言開發(fā)。此種方式代碼效率高,程序執(zhí)行速度快,可以充分合理地利用芯片提供的硬件資源。然而,用匯編語(yǔ)言編寫程序比較煩瑣,可讀性較差。另外,不同類別或不同公司的芯片匯編語(yǔ)言往往不同,因此可移植性較差??傊脜R編語(yǔ)言開發(fā)產(chǎn)品,周期長(zhǎng),軟件的修改和升級(jí)困難。第三種,C和匯編語(yǔ)言混合編程開發(fā)。采用混合編程的方法能更好地達(dá)到設(shè)計(jì)要求,完成設(shè)計(jì)任務(wù)。4.2匯編語(yǔ)言4.2.1匯編語(yǔ)言源程序格式匯編語(yǔ)言是DSP應(yīng)用軟件的基礎(chǔ)。編寫匯編語(yǔ)言必須要符合相應(yīng)的格式,這樣匯編器才能將源文件轉(zhuǎn)換為機(jī)器語(yǔ)言的目標(biāo)文件。C54xDSP匯編語(yǔ)言源程序由源說(shuō)明語(yǔ)句組成,包含匯編語(yǔ)言指令、匯編偽指令、宏偽指令和注釋等。匯編語(yǔ)言語(yǔ)句格式可以包含4個(gè)部分:標(biāo)號(hào)域、指令域、操作數(shù)域和注釋域。以助記符指令為例,匯編語(yǔ)言語(yǔ)句格式如下:[標(biāo)號(hào)][:]指令[操作數(shù)列表][;注釋],其中[]內(nèi)的部分是可選項(xiàng)。在編寫匯編指令時(shí),必須遵循以下格式:(1)語(yǔ)句必須以標(biāo)號(hào)、空格、星號(hào)或分號(hào)開始。(2)標(biāo)號(hào)為可選項(xiàng)。若要使用標(biāo)號(hào),則必須從第1列開始。標(biāo)號(hào)長(zhǎng)度最多為32個(gè)字符,由A~Z,a~z,0~9,_和$等組成,但第1個(gè)字符不能為數(shù)字。標(biāo)號(hào)后可以跟一個(gè)冒號(hào)(:),但并不作為標(biāo)號(hào)的一部分。(3)每個(gè)域必須由1個(gè)或多個(gè)空格分開,制表符等效于空格。(4)注釋是可選項(xiàng),開始于第1列的注釋須用星號(hào)或分號(hào)(*或;)標(biāo)示,但在其他列開始的注釋前面只能標(biāo)分號(hào)。(5)指令域一定不能從第1列開始,否則將被視為標(biāo)號(hào)。指令域包括以下操作碼之一:助記符指令、匯編偽指令(如.data,.set)、宏偽指令(如.var,.macro)和宏調(diào)用。(6)操作數(shù)域?yàn)椴僮鲾?shù)的列表,匯編器允許指定常數(shù)、符號(hào)或表達(dá)式作為地址、立即數(shù)或間接尋址。當(dāng)操作數(shù)為立即數(shù)時(shí),使用#符號(hào)作為前綴;操作數(shù)為間接尋址時(shí),使用*符號(hào)作為前綴,將操作數(shù)的內(nèi)容作為地址。4.2匯編指令介紹C54xDSP按指令的功能分類,可分為如下四類:*數(shù)據(jù)傳送指令;*算術(shù)運(yùn)算指令;*邏輯運(yùn)算指令;*程序控制指令。表4.1指令集符號(hào)續(xù)表一
續(xù)表一
續(xù)表二
1.?dāng)?shù)據(jù)傳送指令數(shù)據(jù)傳送指令把源操作數(shù)從源存儲(chǔ)器中傳送到目的操作數(shù)指定的存儲(chǔ)器中。C54xDSP的數(shù)據(jù)傳送指令包括裝載指令、存儲(chǔ)指令、條件存儲(chǔ)指令、并行裝載和存儲(chǔ)指令、并行裝載和乘法指令、并行存儲(chǔ)和加/減法指令、并行存儲(chǔ)和乘法指令、混合裝載和存儲(chǔ)指令。1)裝載指令裝載指令是取數(shù)或賦值指令,將存儲(chǔ)器內(nèi)容或立即數(shù)賦給目的寄存器,共7條指令,如下所示。
(1)DLD語(yǔ)法:助記符方式 表達(dá)式方式DLDLmem,dst dst=dbl(Lmem) dst=dual(Lmem)執(zhí)行方式:ifC16=0Then(Lmem)→dstElse(Lmem(31-16))→dst(39-16)(Lmem(15-0))→dst(15-0)受SXM(符號(hào)擴(kuò)展方式位)的影響。雙16位或雙精度32位功能描述:該指令只把32bit的長(zhǎng)操作數(shù)Lmem裝入到目的累加器dst中。C16的值決定了所采用的方式:C16=0指令以雙精度方式執(zhí)行。Lmem裝入到dst中。C16=1指令以雙16bit方式執(zhí)行。Lmem的高16bit裝入到 dst前24bit中;同時(shí),Lmem的低16bit裝入到dst的 低16bit中。例4.1DLD*AR3+,BDataMemory因?yàn)樵撝噶钍且粋€(gè)長(zhǎng)操作指令,所以AR3在執(zhí)行后加2。AR3高有效字5位位移數(shù)ST1中5位累加器移位方式位在所有累加器裝入操作中都會(huì)受到SXM影響,在帶有SHIFT或ASM移位的裝入操作中只受OVM(ST1中的符號(hào)擴(kuò)展位)的影響;在帶有SHIFT或ASM移位的裝入指令中影響Ovd(或當(dāng)dst=src時(shí)影響OVsrc-源累加器A或B的溢出標(biāo)志)。功能描述:把一數(shù)據(jù)存儲(chǔ)器值或一立即數(shù)裝入累加器(dst或當(dāng)沒有確定dst時(shí)為src),并支持各種不同的移位。另外,指令支持帶移位的累加器到累加器的搬移。例4.2LD*AR1,ADataMemory例4.3LD*AR1,ABeforeInstructionAfterInstructionDataMemoryST1中的符號(hào)擴(kuò)展模式位SXM=1溢出FEDC例4.4
LD*AR1,TS,BDataMemory例4.5
LD*AR3+,16,ADataMemory(3)LD語(yǔ)法:助記符方式 表達(dá)式方式①LDSmem,T ①T=Smem②LDSmem,DP ②DP=Smem③LD#k9,DP ③DP=#k9④LD#k5,ASM ④ASM=#k5⑤LD#k3,ARP ⑤ARP=#k3⑥LDSmem,ASM ⑥ASM=Smem執(zhí)行過(guò)程:①(Smem)→T②(Smem(8-0))→DP(9位)③k9→DP④k5→ASM⑤k3→ARP⑥(Smem(4-0))→ASM不影響任何狀態(tài)位。功能描述:把一個(gè)數(shù)裝入T寄存器或狀態(tài)寄存器ST0或ST1中的DP、ASM和ARP域中。裝入的數(shù)可以是一個(gè)單數(shù)據(jù)存儲(chǔ)器操作數(shù)Smem也可以是一個(gè)常數(shù)。該指令代碼為一個(gè)字,但當(dāng)Smem采用了長(zhǎng)偏移直接尋址或絕對(duì)地址尋址方式時(shí),指令代碼為兩個(gè)字。例4.6
LD*AR3+,TDataMemory例4.7
LD*AR4,DPDataMemory11111110DC例4.8
LD#23,DP017H例4.9
LD15,ASM0FH例4.10
LD3,ARP例4.11
LDDAT0ASMDataMemory(4)?LDM語(yǔ)法:助記符方式表達(dá)式方式LDMMMR,dst dst=MMR dst=mmr(MMR)執(zhí)行過(guò)程:(MMR)→dst不影響任何狀態(tài)位。功能描述:把存儲(chǔ)器映射寄存器---MMR中的值裝入到目的累加器dst中。不管DP的當(dāng)前值或ARx的高9位的值是多少,都把有效地址的高9位清0,以指定為在數(shù)據(jù)頁(yè)0中。該指令不受SXM的影響。例4.12
LDMAR4,A(5)LDR語(yǔ)法:助記符方式表達(dá)式方式LDRSmem,dst dst=rnd(Smem)執(zhí)行過(guò)程:(Smem)<<16+1<<15→dst(31-16)受SXM的影響。功能描述:把單數(shù)據(jù)存儲(chǔ)器操作數(shù)Smem左移16bit后裝入目 的累加器dst的高端(31~16位)。Smem通過(guò)加 再對(duì)累加器的低端(15~0位)清0來(lái)湊整。累加器 的第15位置為1。例4.13
LDR*AR1,ADataMemory(6)LDU語(yǔ)法:助記符方式表達(dá)式方式LDUSmem,dstdst=uns(Smem)執(zhí)行過(guò)程:(Smem)→dst(15-0)000000H→dst(39-16)不影響任何狀態(tài)位。功能描述:把單數(shù)據(jù)存儲(chǔ)器值Smem裝入目的累加器dst的低端(15~0位)。dst的保護(hù)位和高端(39~16位)清0。因此,數(shù)據(jù)被看成是一個(gè)不帶符號(hào)的16bit數(shù)。不管SXM位的狀態(tài)如何都無(wú)符號(hào)擴(kuò)展。該指令代碼占一個(gè)字,但當(dāng)Smem采用長(zhǎng)偏移間接尋址或絕對(duì)地址尋址方式時(shí)就會(huì)多占一個(gè)字。例4.14LDU*AR1,ADataMemory(7)LTD語(yǔ)法:助記符方式表達(dá)式方式LTDSmem ltd(Smem)執(zhí)行過(guò)程:(Smem)→T(Smem)→Smem+1不影響任何狀態(tài)位。功能描述:把一個(gè)單數(shù)據(jù)存儲(chǔ)器單元的內(nèi)容Smem復(fù)制到T寄存器和緊接著T的數(shù)據(jù)單元中去。當(dāng)數(shù)據(jù)復(fù)制完畢后,Smem單元的內(nèi)容保持不變。這個(gè)功能在數(shù)字信號(hào)處理中實(shí)現(xiàn)一個(gè)Z延時(shí)是相當(dāng)有用的。該功能在存儲(chǔ)器延遲指令中也存在。例4.15
LTD*AR3DataMemory2)存儲(chǔ)指令存儲(chǔ)指令將原操作數(shù)或立即數(shù)存入存儲(chǔ)器或寄存器,共10條指令,如下所示。(1)DST語(yǔ)法:助記符方式表達(dá)式方式DSTsrc,Lmemdbl(Lmem)=src dual(Lmem)=src執(zhí)行過(guò)程:(src(31-0))→Lmem不影響任何狀態(tài)位。功能描述:把源累加器的內(nèi)容放在一個(gè)32bit的長(zhǎng)數(shù)據(jù)存儲(chǔ)器單元Lmem中。例4.16
DSTB,*AR3+DataMemory(2)?ST語(yǔ)法:助記符方式表達(dá)式方式①STT,Smem ①Smem=T②STTRN,Smem ②Smem=TRN③ST#1k,Smem ③Smem=#1k執(zhí)行過(guò)程:①(T)→Smem②(TRN)→Smem③1k→Smem該指令不影響任何狀態(tài)位。功能描述:把T寄存器的內(nèi)容,過(guò)渡寄存器(TRN)的內(nèi)容或一個(gè) 16bit常數(shù)1k存放到數(shù)據(jù)存儲(chǔ)器單元Smem中去。例4.17
STTRN,DAT5DataMemory例4.18
STT,*AR7-DataMemory(3)STH語(yǔ)法:助記符方式表達(dá)式方式①STHsrc,Smem①Smem=hi(src)②STHsrc,ASM,Smem②Smem=hi(src)<<ASM③STHsrc,SHFT,Xmem③Xmem=hi(src)<<SHFT④STHsrc[,SHIFT],Smem④Smem=hi(src)<<SHIFT 執(zhí)行過(guò)程:①(src(31-16))→Smem ②(src)<<(ASM-16)→Smem ③(src)<<(SHFT-16)→Xmem ④(src)<<(SHIFT-16)→Smem該指令受SXM影響。功能描述:把源累加器src的高端(31~16位)存放到數(shù)據(jù)存儲(chǔ)器單元Smem中去。Src進(jìn)行左移,移動(dòng)位數(shù)由ASM、SHFT或SHIFT決定;然后再把移位后的值(31~16位)存放到數(shù)據(jù)存儲(chǔ)器單元(Smem或Xmem)中。如果SXM=0,則把src的39位復(fù)制到數(shù)據(jù)存儲(chǔ)器單元的最高位。如果SXM=1,就把移位后進(jìn)行了符號(hào)擴(kuò)展的第39位存放到數(shù)據(jù)存儲(chǔ)器單元的最高位。例4.19
STHA,DAT10DataMemory31-16位例4.20
STHB,–8,*AR7–右移8位為00FF842112(4)STL語(yǔ)法:助記符方式表達(dá)式方式①STLsrc,Smem①Smem=src②STLsrc,ASM,Smem②Smem=src<<ASM③STLsrc,SHFT,Xmem③Xmem=src<<SHFT④STLsrc[,SHIFT],Smem④Smem=src<<SHIFT執(zhí)行過(guò)程:①(src(15-0))→Smem②(src)<<ASM→Smem③(src)<<SHFT→Xmem④(src)<<SHIFT-16→Smem該指令受SXM影響。功能描述:把源累加器src的低端(15~0位)存放到數(shù)據(jù)存儲(chǔ)器單元Smem中去。Src進(jìn)行左移操作,移動(dòng)位數(shù)由ASM、SHFT或SHIFT決定。然后把移位后的值(15~0位)存放到數(shù)據(jù)存儲(chǔ)器單元(Smem或Xmem)中去。當(dāng)移位值為正時(shí),低位添0。例4.21STLA,DAT110-7位例4.22STLB,-8,*AR7-DataMemory右移8位00FF842112(5)STLM語(yǔ)法:助記符方式表達(dá)式方式STLMsrc,MMRMMR=srcmmr(MMR)=src執(zhí)行過(guò)程:(src(15-0))→MMR該指令不影響任何狀態(tài)位。功能描述:把源累加器src的低端(15~0位)存放到存儲(chǔ)器映射寄存器MMR中。無(wú)論DP的當(dāng)前值或ARx的高9位是多少,都對(duì)有效地址的高9位清0。指令允許src存放在數(shù)據(jù)第0頁(yè)中的任何一個(gè)存儲(chǔ)器單元中而不必修改狀態(tài)寄存器ST0中的DP域。例4.23STLMA,BRC(塊循環(huán)計(jì)數(shù)器)例4.24
STLMB,*AR1-高位清零-1(6)STM語(yǔ)法:助記符方式表達(dá)式方式STLM#1k,MMRMMR=#1k mmr(MMR)=#1k執(zhí)行過(guò)程:1k(16位長(zhǎng)立即數(shù))→MMR該指令不影響任何狀態(tài)位。功能描述:該指令的功能是:把一個(gè)16bit常數(shù)1k存放到一個(gè)存 儲(chǔ)器映射寄存器MMR或一個(gè)在第0數(shù)據(jù)頁(yè)中的存儲(chǔ) 器單元,而不必修改狀態(tài)寄存器ST0中的DP域。無(wú) 論DP的當(dāng)前值或ARx的高9位是多少,都對(duì)有效地 址的高9位清0。例4.25
STM1111H,IMR例4.26
STM8765H,*AR7+
指令執(zhí)行前
指令執(zhí)行后AR70333HAR70034H數(shù)據(jù)存儲(chǔ)器
0033H0000H0033H8765H(7)CMPS(比較、選擇并存儲(chǔ)最大值)語(yǔ)法:助記符方式表達(dá)式方式CMPSsrc,Smemcmps(src,Smem)執(zhí)行過(guò)程:if((src(31-16))﹥(src(15-0)))Then(src(31-16))→Smem(TRN)<<1→TRN0→TRN(0)0→TCElse(src(15-0))→Smem1→TRN(0)1→TC該指令影響TC位。功能描述:比較位于源累加器的高端和低端的兩個(gè)16bit二進(jìn)制補(bǔ)碼值的大小,把較大值存在單數(shù)據(jù)存儲(chǔ)器單元Smem中。如果是源累加器的高端(31~16位)較大,則過(guò)渡寄存器(TRN)左移一位,最低位填0,TC位清0。如果是源累加器的低端(15~0位)較大,則TRN左移一位,最低位填1,TC位置1。該指令不遵從標(biāo)準(zhǔn)的流水操作。比較是在讀操作數(shù)階段完成,因而,源累加器的值是指令執(zhí)行前一個(gè)階段的值。TRN寄存器和TC位是在執(zhí)行階段被修改的。例4.27
CMPSA,*AR4+2345H<7899H7899HAR4TCTRN左移1位低位填1(8)SACCD語(yǔ)法:助記符方式 表達(dá)式方式
SACCDsrc,Xmem,condif(cond)Xmem=hi(src)<<ASM執(zhí)行方式:if(cond) Then (src)<<(ASM-16)→Xmem Else (Xmem)→(Xmem)該指令受ASM和SXM的影響。功能描述:如果滿足條件(如表4.2所示),則源累加器src左移(ASM-16)位后存放到Xmem指定的存儲(chǔ)器單元中去;如果不滿足條件,則指令從Xmem中讀出數(shù)據(jù),然后又把它寫回到原來(lái)的單元中去,即Xmem單元的值保持不變。表4.2功能條件例4.28
SACCDA,*AR3+0%,ALTDataMemory訪問(wèn)后,AR0以循環(huán)尋址的方法加到ARx中ALT:(A)<0}+(9)SRCCD語(yǔ)法:助記符方式表達(dá)式方式SRCCDXmem,condif(cond)Xmem=BRC執(zhí)行過(guò)程:if(cond)Then(BRC)→XmemElse(Xmem)→Xmem該指令不會(huì)影響任何狀態(tài)位。功能描述:如果滿足條件,則指令把塊循環(huán)計(jì)數(shù)器(BRC)中的內(nèi)容放到Xmem中去;如果不滿足條件,則指令把Xmem中的內(nèi)容讀出,再把它寫回去,即Xmem保持不變。例4.29
SRCCD*AR5-,AGTDataMemoryAGT:(A)>0BRCAR5語(yǔ)法:助記符方式表達(dá)式方式 STRCDXmem,condif(cond)Xmem=T執(zhí)行過(guò)程:if(cond) (T)→Xmem Else(Xmem)→Xmem該指令不會(huì)影響任何狀態(tài)位。功能描述:如果滿足條件,就把T寄存器的值存放到數(shù)據(jù)存儲(chǔ)器單元Xmem中去;如果不滿足條件,則指令從單元Xmem中讀出數(shù)據(jù),然后再把它寫回到Xmem中去,即Xmem中的數(shù)據(jù)保持不變。例4.30
STRCD*AR5-,AGTDataMemoryA>0TAR53)混合裝載和存儲(chǔ)指令混合裝載和存儲(chǔ)指令共12條,如下所示。
(1)MVDD語(yǔ)法:助記符方式表達(dá)式方式MVDDXmem,YmemYmem=Xmem執(zhí)行過(guò)程:(Xmem)→Ymem該指令不影響任何狀態(tài)位。功能描述:把通過(guò)Xmem尋址的數(shù)據(jù)存儲(chǔ)器單元的值復(fù)制到通過(guò)Ymem尋址的數(shù)據(jù)存儲(chǔ)器單元中去。例4.31
MVDD*AR3+,*AR5+DataMemory0200AR50201AR5(2)MVDK語(yǔ)法:助記符方式表達(dá)式方式MVDKSmem,dmaddata(dmad)=Smem執(zhí)行過(guò)程:(dmad)→EAR(地址寄存器)if(RC)≠0Then(Smem)→通過(guò)EAR尋址的Dmem(EAR)+1→EARElse(Smem)→通過(guò)EAR尋址的Dmem該指令不會(huì)影響任何狀態(tài)位。RC循環(huán)計(jì)數(shù)器地址功能描述:把一個(gè)單數(shù)據(jù)存儲(chǔ)器操作數(shù)Smem的內(nèi)容復(fù)制到一個(gè)通過(guò)dmad(地址在EAB地址寄存器EAR中)尋址的數(shù)據(jù)存儲(chǔ)器單元??梢匝h(huán)執(zhí)行該指令來(lái)轉(zhuǎn)移數(shù)據(jù)存儲(chǔ)器中的連續(xù)字(使用間接尋址)。實(shí)際被轉(zhuǎn)移的字?jǐn)?shù)要比指令開始執(zhí)行時(shí)循環(huán)計(jì)數(shù)器中的值大1。一旦啟動(dòng)流水,指令就成為單周期指令。該指令代碼占兩個(gè)字,但當(dāng)Smem采用長(zhǎng)偏移間接尋址或絕對(duì)尋址方式時(shí)就會(huì)多占一個(gè)字。例4.32
MVDKDAT10,8000HDataMemory例4.33
MVDK*AR3-,1000HDataMemory(3)MVDM語(yǔ)法:助記符方式表達(dá)式方式MVDMdmad,MMRMMR=data(dmad) mmr(MMR)=data(dmad)執(zhí)行過(guò)程:dmad→DARif(RC)≠0Then(通過(guò)DAR尋址的Dmem)→MMR(DAR)+1→DARElse(通過(guò)DAR尋址的Dmem)→MMRRC循環(huán)計(jì)數(shù)器該指令不影響任何狀態(tài)位。功能描述:把數(shù)據(jù)從一個(gè)數(shù)據(jù)存儲(chǔ)器單元dmem(dmad的值裝入DAB地址寄存器DAR中)復(fù)制到一個(gè)存儲(chǔ)器映射寄存器MMR中。一旦啟動(dòng)了循環(huán)流水,指令就變成了一條單周期指令。該指令代碼占兩個(gè)字。例4.34
MVDM300H,BKDataMemory(4)MVDP語(yǔ)法:助記符方式表達(dá)式方式MVDPSmem,pmadprog(pmad)=Smem執(zhí)行過(guò)程:pmad→PAR(程序存貯器地址寄存器)if(RC)≠0Then(Smem)→由PAR尋址的Pmem(PAR)+1→PARElse(Smem)→由PAR尋址的Pmem該指令不會(huì)影響任何狀態(tài)位。立即數(shù)尋址RC循環(huán)計(jì)數(shù)器功能描述:把嚴(yán)格的16bit單數(shù)據(jù)存儲(chǔ)器操作數(shù)Smem復(fù)制到一個(gè)由16bit立即數(shù)pmad尋址的程序存儲(chǔ)器單元中。通過(guò)循環(huán)執(zhí)行該指令可以把數(shù)據(jù)存儲(chǔ)器中的連續(xù)字(使用間接尋址)轉(zhuǎn)移到由16bit立即數(shù)尋址的連續(xù)的程序存儲(chǔ)器空間中。源和目的塊不必全部在片外或片內(nèi)。當(dāng)循環(huán)流水開始進(jìn)行時(shí),該指令就變成了一個(gè)單周期指令。另外,當(dāng)循環(huán)執(zhí)行該指令時(shí),中斷被禁止。例4.35
MVDPDAT0,0FE00HDataMemoryProgramMemory(5)MVKD語(yǔ)法:助記符方式表達(dá)式方式MVKDdmad,SmemSmem=data(dmad)執(zhí)行過(guò)程:dmad→DAR【DAB-(D地址總線)地址寄存器】if(RC)≠0Then(通過(guò)DAR尋址的Dmem)→Smem(DAR)+1→DARElse(通過(guò)DAR尋址的Dmem)→Smem該指令不會(huì)影響任何狀態(tài)位。RC循環(huán)計(jì)數(shù)器功能描述:把數(shù)據(jù)從一數(shù)據(jù)存儲(chǔ)器單元轉(zhuǎn)移到另一個(gè)數(shù)據(jù)存儲(chǔ)器單元中。源數(shù)據(jù)存儲(chǔ)器單元由一個(gè)16bit立即數(shù)dmad尋址,然后轉(zhuǎn)移到Smem中。循環(huán)執(zhí)行該指令可以轉(zhuǎn)移數(shù)據(jù)存儲(chǔ)器中的連續(xù)字(使用間接尋址)。轉(zhuǎn)移的字?jǐn)?shù)要比指令開始執(zhí)行時(shí)循環(huán)計(jì)數(shù)器中的值大1。一旦形成循環(huán)流水,該指令就變成了單周期指令。該指令代碼占兩個(gè)字,但當(dāng)Smem采用長(zhǎng)偏移間接尋址或絕對(duì)尋址方式時(shí)就會(huì)多占一個(gè)字。例4.36
MVKD1000H,*+AR5DataMemory01FF+1=0200123(6)MVMD語(yǔ)法:助記符方式表達(dá)式方式MVMDMMR,dmaddata(dmad)=MMR data(dmad)=mmr(MMR)執(zhí)行過(guò)程:dmad→EAR【EAB(E地址總線)地址寄存器】if(RC)≠0Then(MMR)→由EAR尋址的Dmem(EAR)+1→EARElse(MMR)→由EAR尋址的DmemRC循環(huán)計(jì)數(shù)器該指令不影響任何狀態(tài)位。功能描述:把數(shù)據(jù)從一個(gè)存儲(chǔ)器映射寄存器MMR轉(zhuǎn)移到一個(gè)數(shù)據(jù)存儲(chǔ)器中。目的數(shù)據(jù)存儲(chǔ)器通過(guò)一個(gè)16bit立即數(shù)dmad尋址。一旦建立了循環(huán)流水,該指令就變成了單周期指令。例4.37
MVMDAR7,8000HDataMemory注意:這是一個(gè)直接尋址(7)MVMM語(yǔ)法:助記符方式表達(dá)式方式MVMMMMRx,MMRyMMRy=MMRx mmr(MMRy)=mmr(MMRx)執(zhí)行過(guò)程:(MMRx)→MMRy該指令不會(huì)影響任何狀態(tài)位。功能描述:把存儲(chǔ)器映射寄存器MMRx中的內(nèi)容轉(zhuǎn)移到另一個(gè)存儲(chǔ)器映射寄存器MMRy中。MMRx和MMRy只可能為9種操作數(shù)(AR0~AR7和SP-堆棧指針)。讀MMRx的操作在譯碼階段執(zhí)行;寫MMRy的操作在訪問(wèn)階段執(zhí)行。注意,該指令不能循環(huán)執(zhí)行。例4.38
MVMMSP,AR1(8)MVPD語(yǔ)法:助記符方式表達(dá)式方式MVPDpmad,SmemSmem=prog(pmad)執(zhí)行過(guò)程:pmad→PAR(程序存貯器地址寄存器)if(RC)≠0Then(由PAR尋址的Pmem)→Smem(PAR)+1→PARElse(由PAR尋址的Pmem)→SmemRC循環(huán)計(jì)數(shù)器該指令不影響任何狀態(tài)位。功能描述:把一個(gè)字通過(guò)16bit立即數(shù)pmad尋址的程序存儲(chǔ)器轉(zhuǎn)移到一個(gè)由Smem尋址的數(shù)據(jù)存儲(chǔ)器單元。循環(huán)執(zhí)行該指令能把程序存儲(chǔ)器中的連續(xù)字轉(zhuǎn)移到連續(xù)的數(shù)據(jù)存儲(chǔ)器單元中去。源和目的塊不必全部都在片內(nèi)或片外。當(dāng)建立起了循環(huán)流水,該指令就變成了單周期指令。另外,循環(huán)執(zhí)行該指令時(shí)禁止中斷。該指令代碼占兩個(gè)字,但當(dāng)Smem采用長(zhǎng)偏移間接尋址或絕對(duì)尋址方式時(shí)就會(huì)多占一個(gè)字。例4.39
MVPD0FE00H,DAT5ProgramMemoryDataMemory例4.40
MVPD2000H,*AR7-0ProgramMemory}-=123(9)PORTR語(yǔ)法:助記符方式表達(dá)式方式PORTRPA,Smem Smem=port(PA)執(zhí)行過(guò)程:(PA)→Smem該指令不會(huì)影響任何狀態(tài)位。功能描述:從一個(gè)外部I/O口PA(地址為16bit立即數(shù))把一個(gè)16bit數(shù)讀入到指定的數(shù)據(jù)存儲(chǔ)器單元Smem中。信號(hào)變?yōu)榈碗娖奖砻髟谠L問(wèn)I/O口;和READY的時(shí)序和讀外部數(shù)據(jù)存儲(chǔ)器的時(shí)序相同。該指令代碼占兩個(gè)字,但當(dāng)Smem使用長(zhǎng)偏移間接尋址或絕對(duì)地址尋址時(shí),就會(huì)多占一個(gè)字。16位立即數(shù)表示的端口地址例4.41
PORTR05,INDAT;INDAT.equ60HI/OMemoryDataMemory讀讀(10)PORTW語(yǔ)法:助記符方式表達(dá)式方式PORTWSmem,PA port(PA)=Smem執(zhí)行過(guò)程:(Smem)→PA該指令不影響任何狀態(tài)位。功能描述:把指定的數(shù)據(jù)存儲(chǔ)器單元Smem中的16bit數(shù)寫到外部I/O口PA中去。信號(hào)變?yōu)榈碗娖奖砻髟谠L問(wèn)I/O口;和READY的時(shí)序和讀外部數(shù)據(jù)存儲(chǔ)器的時(shí)序相同。該指令代碼占兩個(gè)字,但當(dāng)Smem使用長(zhǎng)偏移間接尋址或絕對(duì)地址尋址時(shí)就會(huì)多占一個(gè)字。寫例4.42
PORTWOUTDAT,5H;OUTDAT.equ07HI/OMemoryDataMemory寫(11)READA語(yǔ)法:助記符方式表達(dá)式方式READASmemSmem=prog(A)執(zhí)行過(guò)程:A→PAR(程序存貯器地址寄存器)if((RC)≠0)Then(由PAR尋址的Pmem)→Smem(PAR)+1→PAR(RC)-1→RCElse(由PAR尋址的Pmem)→SmemRC循環(huán)計(jì)數(shù)器該指令不影響任何狀態(tài)位。功能描述:把累加器A確定的程序存儲(chǔ)器單元中的一個(gè)字傳送到一個(gè)數(shù)據(jù)存儲(chǔ)器單元Smem中去。一旦建立了循環(huán)流水,指令就變成了單周期指令。對(duì)于不同的芯片,累加器A確定程序存儲(chǔ)器單元的方式如下:可以循環(huán)執(zhí)行該指令,把一塊連續(xù)字(由累加器A確定起始地址)轉(zhuǎn)移到一個(gè)連續(xù)的使用間接尋址方式的數(shù)據(jù)存儲(chǔ)器空間中去。源和目的塊不必全部都在片內(nèi)或片外。例4.43
READADAT6ProgramMemoryDataMemory(12)WRITA語(yǔ)法:助記符方式表達(dá)方式WRITASmemprog(A)=Smem執(zhí)行過(guò)程:A→PAR(程序存貯器地址寄存器)if(RC)≠0Then(Smem)由→PAR尋址的Pmem(PRA)+1→PRA(RC)-1→RCElse(Smem)→由PRA尋址的Pmem該指令不影響任何狀態(tài)位。RC循環(huán)計(jì)數(shù)器功能描述:把一個(gè)字從一個(gè)由Smem確定的數(shù)據(jù)存儲(chǔ)器單元傳送到一個(gè)程序存儲(chǔ)器單元。程序存儲(chǔ)器的地址由累加器A確定,具體情況與芯片有關(guān):我們可以通過(guò)循環(huán)指令,把數(shù)據(jù)存儲(chǔ)器中的連續(xù)字(使用間接尋址)轉(zhuǎn)移到由PRA尋址的連續(xù)的程序存儲(chǔ)器空間去。PAR的初始值是累加器A的低16位值。源和目的塊都不必完全在片內(nèi)或片外。當(dāng)循環(huán)時(shí),一旦建立了循環(huán)流水,該指令就變成了單周期指令。例4.44
WRITADAT5ProgramMemoryDataMemory
2.算術(shù)運(yùn)算指令C54xDSP的算術(shù)運(yùn)算指令包括加法指令、乘法指令、乘法—累加指令、乘法—減法指令、雙字運(yùn)算指令及特殊應(yīng)用指令。1)加法指令加法指令共4條,如下所示。(1)ADD語(yǔ)法:助記符方式表達(dá)式方式①ADDSmem,src ①src=src+Smem src+=Smem②ADDSmem,TS,src ②src=src+Smem<<TS src+=Smem<<TS③ADDSmem,16,src[,dst] ③dst=src+Smem<<16 dst+=Smem<<16④ADDSmem[,SHIFT],src[,dst]④dst=src+Smem[<<SHIFT] dst+=Smem[<<SHIFT]⑤ADDXmem,SHIFT,src ⑤src=src+Xmem<<SHIFT src+=Xmem<<SHIFT⑥ADDXmem,Ymem,dst ⑥dst=Xmem<<16+Ymem<<16⑦ADD#1k[,SHIFT],src[,dst]⑦dst=src+#1k[<<SHIFT] dst+=#1k[<<SHIFT]⑧ADD#1k,16,src[,dst] ⑧dst=src+#1k<<16 dst+=#1k<<16⑨ADDsrc[,SHIFT][,dst] ⑨dst=dst+src[<<SHIFT] dst+=src+[<<SHIFT]⑩ADDsrc,ASM[,dst] ⑩dst=dst+src<<ASM dst+=src<<ASM執(zhí)行過(guò)程:①(Smem)+(src)→src②(Smem)<<(TS)+(src)→src③(Smem)<<16+(src)→dst④(Smem)[<<SHIFT]+(src)→dst⑤(Xmem)<<SHIFT+(src)→src⑥((Xmem)+(Ymem))<<16→dst⑦1k<<16+(src)→dst⑧1k<<SHIFT+(src)→dst⑨(srcor[dst])+(src)<<SHIFT→dst⑩(srcor[dst])+(src)<<ASM→dst該指令受SXM(ST1中的符號(hào)擴(kuò)展位)和OVM(ST1中的溢出方式位)影響,且影響C(ST1中的進(jìn)位位)和OVdst—目的累加器A或B得溢出標(biāo)志(如果dst=src—源累加器,就是OVsrc)功能描述:把一個(gè)16bit的數(shù)加到選定的累加器中,或加到一個(gè)采用雙數(shù)據(jù)存儲(chǔ)器操作數(shù)尋址的16bit操作數(shù)Xmem中。這個(gè)16bit的數(shù)可為以下情況中的一個(gè):*單數(shù)據(jù)存儲(chǔ)器操作數(shù)(Smem);*雙數(shù)據(jù)存儲(chǔ)器操作數(shù)(Ymem);*一個(gè)16bit立即操作數(shù)(#1k);*src中的移位數(shù)。如果定義了dst,結(jié)果就存在dst中;否則,結(jié)果存在src中。大部分第二操作數(shù)要移位。左移位時(shí)低位添0;右移時(shí)高位情況為:*如果SXM=1,進(jìn)行符號(hào)擴(kuò)展;*如果SXM=0,則添0。例4.45ADD*AR3+,14,ADataMemory(src=src+Xmem<<SHIFT)
例4.46
ADDA,-8,B
(2)ADDC語(yǔ)法:助記符方式表達(dá)式方式ADDCSmem,srcsrc=src+Smem+CARRY src+=Smem+CARRY執(zhí)行過(guò)程:(Smem)+(src)+(C)→src該指令受OVM和C影響,并能影響C和OVsrc。功能描述:把16bit單數(shù)據(jù)存儲(chǔ)器操作數(shù)Smem和進(jìn)位位(C)的值加到src中,其結(jié)果存放在src中。無(wú)論SXM位的值是什么,都不進(jìn)行符號(hào)擴(kuò)展。例4.48
ADDC*+AR2(5),ADataMemory+5(3)?ADDM語(yǔ)法:助記符方式表達(dá)式方式ADDM#1k,SmemSmem=Smem+#1k Smem+=#1k執(zhí)行過(guò)程: #1k+(Smem)→Smem該指令受OVM和SXM影響,并能影響C和OVA。功能描述:16bit單數(shù)據(jù)存儲(chǔ)器操作數(shù)Smem與16bit立即數(shù)1k相加,結(jié)果存放在Smem中。該指令不能循環(huán)執(zhí)行。例4.49
ADDM0123BH,*AR4+DataMemory(4)ADDS語(yǔ)法:助記符方式表達(dá)式方式ADDSSmem,src src=src+uns(Smem) src+=uns(Smem)執(zhí)行過(guò)程:uns(Smem)+(src)→src該指令受OVM影響,并能影響C和OVsrc。功能描述:把不帶符號(hào)的16bit單數(shù)據(jù)存儲(chǔ)器操作數(shù)Smem加到src中,結(jié)果存放在src中。無(wú)論SXM為何值都不進(jìn)行符號(hào)擴(kuò)展。例4.51
ADDS*AR2-,BDataMemory2)減法指令減法指令共4條,如下所示。(1)SUB語(yǔ)法:助記符方式表達(dá)式方式①SUBSmem,src ①src=src-Smem src-=Smem②SUBSmem,TS,src ②src=src-Smem<<TS src-=Smem<<TS③SUBSmem,16,src[,dst] ③dst=src-Smem<<16 dst-=Smem<<16④SUBSmem[,SHIFT],src[,dst] ④dst=src-Smem[<<SHIFT] dst-=Smem[<<SHIFT]⑤SUBXeme,SHIFT,src ⑤src=src-Xmem<<SHFT src-=Xmem<<SHFT⑥SUBXeme,Ymem,dst ⑥dst=Xmem<<16-Ymem <<16⑦SUB#lk,[,SHIFT],src[,dst] ⑦dst=src-#lk[<<SHFT] dst-=#lk[<<SHFT]⑧SUB#lk,16,src[,dst] ⑧dst=src-#lk<<16 dst-=#lk<<16⑨SUBsrc[,SHIFT],[,dst] ⑨dst=dst-src<<SHIFT dst-=src<<SHIFT⑩SUBsrc,ASM,[,dst] ⑩dst=dst-src<<ASM dst-=src<<ASM執(zhí)行過(guò)程:①(src)-(Smem)→src②(src)-(Smem)<<TS→src③(src)-(Smem)<<16→dst④(src)-(Smem)<<SHIFT→dst⑤(src)-(Xmem)<<SHIFT→rc⑥(Xmem)<<16-(Ymem)<<16→dst⑦(src)-lk<<SHFT→dst⑧(src)-lk<<16→dst⑨(src)-(src)<<SHFT→dst⑩(src)-(src)<<ASM→dst該指令受SXM和OVM的影響,并能影響C和OVdst(如果dst=src,就為OVsrc)。在語(yǔ)法③中,如果減法的結(jié)果產(chǎn)生一個(gè)借位,則進(jìn)位位C為0;否則C不受影響。功能描述:從選定的累加器或采用雙數(shù)據(jù)存儲(chǔ)器尋址方式的16bit操作數(shù)Xmem中減去一個(gè)16bit值。16bit減數(shù)可能是下列情況中的一種:*單數(shù)據(jù)存儲(chǔ)器操作數(shù)(Smem);*雙數(shù)據(jù)存儲(chǔ)器操作數(shù)(#lk);*16bit立即數(shù)(#lk);*源累加器src的移位值。如果指定了目的累加器dst,結(jié)果就存放在dst中;否則,結(jié)果存放在src中。大部分指令的第二操作數(shù)都進(jìn)行了移位。對(duì)于左移,低位添0;高位當(dāng)SXM=1時(shí)進(jìn)行符號(hào)擴(kuò)展,當(dāng)SXM=0時(shí)添0。對(duì)于右移,高位當(dāng)SXM=0時(shí)進(jìn)行符號(hào)擴(kuò)展,當(dāng)SXM=0時(shí)添0。例4.52
SUB*AR1+,14,A
DataMemory1500左移14位為54000001200-5400000=例4.53
SUBA,-8,B
1200右移8位00121800-0012=例4.54
SUB#12345,8,A,B(2)SUBB語(yǔ)法:助記符方式表達(dá)式方式SUBBSmem,src src=src-Smem-BORROW src-=Smem-BORROW執(zhí)行過(guò)程:(src)-(Smem)-(C的邏輯反)→src該指令受OVM和C的影響,并能影響C和OVsrc。功能描述:從源累加器中減去單數(shù)據(jù)存儲(chǔ)器操作數(shù)的值和進(jìn)位位C的邏輯反,且不進(jìn)行符號(hào)擴(kuò)展。例4.55
SUBBDAT5,ADataMemory(src)-(Smem)-(C的邏輯反)→src例4.56
SUBB*AR1+,BDataMemoryC=0(3)SUBC語(yǔ)法:助記符方式表達(dá)式方式SUBCSmem,srcsubc(Smem,src)執(zhí)行過(guò)程:(src)-((Smem)<<15)→ALU的輸出ifALU≥的輸出0Then ((ALU的輸出)<<1)+1→srcElse (src)<<1→src該指令受SXM的影響,并能影響C和OVsrc(源累加器的溢出標(biāo)志)。功能描述:16bit單數(shù)據(jù)存儲(chǔ)器操作數(shù)Smem左移15bit,然后再?gòu)脑蠢奂悠鱯rc中減去移位后的值。如果結(jié)果大于0,結(jié)果就左移一位,加上1,再存放到src中;否則,只把src的值左移一位,再存放到src中。除數(shù)和被除數(shù)在這條指令中都假設(shè)為正,SXM將影響該操作:如果SXM=1,則除數(shù)的最高位必須為0;如果SXM=0,則任何一個(gè)16bit除數(shù)值都可以。Src中的被除數(shù)必須初始化為正(bit31為0),且在移位后也必須保持為正。該指令影響OVA或OVB,但不受OVM影響。所以,當(dāng)發(fā)生溢出時(shí),scr不進(jìn)行飽和運(yùn)算。例4.57
SUBCDAT2,ADataMemory0001左移15位=08000H0004-8000(<0左移1位)=0008(4)SUBS語(yǔ)法:助記符方式表達(dá)式方式SUBSSmem,srcsrc=src-uns(Smem) src-=uns(Smem)執(zhí)行過(guò)程:src-不帶符號(hào)的Smem→src該指令受OVM的影響,并能影響C和Ovsrc。功能描述:從源累加器src中減去16bit單數(shù)據(jù)存儲(chǔ)器操作數(shù)Smem的值。無(wú)論SXM的值為多少,Smem都被看成是一個(gè)16bit無(wú)符號(hào)數(shù)。例4.59
SUBS*AR2-,BDataMemory0002-EEEE=FFFFFF11143)乘法指令乘法指令共4條,如下所示。(1)MPY[R]語(yǔ)法:助記符方式表達(dá)式方式①M(fèi)PY[R]Smem,dst①dst=rnd(T*Smem)②MPYXmem,Ymem,dst②dst=Xmem*Ymem[,T=Xmem]③MPYSmem,#1k,dst③dst=Smem*#1k[,T=Smem]④MPY#1k,dst④dst=T*#1k執(zhí)行方式:①(T)×(Smem)→dst ②(Xmem)×(Ymem)→dst (Xmem)→T ③(Smem)×1k→dst (Smem)→T ④(T)×1k→ds該指令受FRCT(ST1中的小數(shù)方式位)和OVM的影響,并能影響OVdst。功能描述:T寄存器的值或一個(gè)數(shù)據(jù)存儲(chǔ)器值與另一個(gè)數(shù)據(jù)存儲(chǔ)器的值或一個(gè)立即數(shù)相乘,結(jié)果存放在目的累加器dst中。在讀操作數(shù)階段把Smem或Xmem的值裝入T寄存器中。如果你使用了R后綴,指令就會(huì)對(duì)結(jié)果進(jìn)行湊整運(yùn)算。其步驟是:結(jié)果加上215再對(duì)15~0位清0。例4.60
MPYDAT13,ADataMemory例4.61
MPY*AR2-,*AR4+0%,BDataMemory例4.62
MPY#0FFFEH,A(2)MPYA語(yǔ)法:助記符方式表達(dá)式方式①M(fèi)PYASmem①B=Smem*hi(A)[,T=Smem]②MPYAdst②dst=T*hi(A)執(zhí)行過(guò)程:①(Smem)×(A(32–16))→B(Smem)→T②(T)×(A(32–16))→dst該指令受FRCT和OVM的影響,并影響OVsrc(在語(yǔ)法①中為OVB)。功能描述:累加器A的高端(32~16位)與一個(gè)單數(shù)據(jù)存儲(chǔ)器操作數(shù)Smem或T寄存器的值相乘,結(jié)果存放在累加器dst或累加器B中。在讀操作數(shù)期間把單數(shù)據(jù)存儲(chǔ)器操作數(shù)Smem裝入T寄存器中(語(yǔ)法①)。該指令代碼占一個(gè)字,但當(dāng)Smem采用長(zhǎng)偏移間接尋址或絕對(duì)尋址方式時(shí)就會(huì)多占一個(gè)字。例4.63
MPYA*AR2DataMemory例4.64
MPYAB(3)MPYU語(yǔ)法:助記符方式表達(dá)式方式MPYUSmem,dstdst=T*uns(Smem)執(zhí)行過(guò)程:無(wú)符號(hào)的(T)×無(wú)符號(hào)的(Smem)→dst該指令受FRCT和OVM的影響,同時(shí)會(huì)影響到OVdst。功能描述:不帶符號(hào)的T寄存器值與不帶符號(hào)的單數(shù)據(jù)存儲(chǔ)器操作數(shù)Smem相乘,結(jié)果存放在目的累加器dst中。乘法器對(duì)于該指令來(lái)說(shuō)相當(dāng)于兩個(gè)操作數(shù)的最高位都為0的一個(gè)帶符號(hào)的17×17bit的乘法器。該指令在計(jì)算諸如兩個(gè)32bit數(shù)相乘得到一個(gè)64bit乘積的多精度乘法時(shí)相當(dāng)有用。該指令代碼占一個(gè)字,但當(dāng)Smem采用長(zhǎng)偏移間接尋址或絕對(duì)尋址方式時(shí)就會(huì)多占一個(gè)字。例4.65
MPYU*AR0-,ADataMemory(4)SQUR語(yǔ)法:助記符方式表達(dá)式方式①SQURSmem,dst①dst=Smem*Smem[,T=Smem]dst=square(Smem)[,T=Smem]②SQURA,dst②dst=hi(A)*hi(A)dst=square(hi(A))執(zhí)行過(guò)程:①(Smem)→T (Smem)×(Smem)→dst②(A(32-16))×(A(32-16))→dst該指令受OVM和FRCT的影響,并能影響OVsrc。功能描述:一個(gè)單數(shù)據(jù)存儲(chǔ)器操作數(shù)Smem或累加器A的高端(32~16位)平方后,結(jié)果存放在目的累加器dst中。如果用的是累加器A,T就不受影響;如果操作數(shù)為Smem,就要把Smem存入T寄存器中。例4.66
SQURDAT30,BDataMemory例4.67
SQURA,B4)乘法—累加和乘法—減法指令乘法—累加和乘法—減法指令,共9條,如下所示。
(1)MAC[R]語(yǔ)法:助記符方式表達(dá)式方式①M(fèi)AC[R]Smem,src①src=rnd(src+T*Smem)②MAC[R]Xmem,Ymem,src[,dst] ②dsr=rnd(src+Xmem*Ymem) [,T=Xmem]③MAC[R]#1k,src[,dst] ③dst=src+T*#1k dst+=T*#1k④MAC[R]Smem,#1k,src[,dst] ④dst=src+Smem*#1k[,T=Smem] dst+=Smem*#1k[,T=Smem]執(zhí)行過(guò)程: ①(Smem)×(T)+(src)→src ②(Xmem)×(Ymem)+(src)→dst (Xmem)→T ③(T)×1k+(src)→dst ④(Smem)×1k+(src)→dst (Smem)→T該指令受FRCT和OVM的影響,并影響OVdst(當(dāng)沒有確定dst為OVsrc時(shí))。功能描述:該指令完成乘和累加運(yùn)算,并可進(jìn)行湊整,結(jié)果按規(guī)定存放在dst或src中。對(duì)于語(yǔ)法②和語(yǔ)法④,緊接著操作碼的數(shù)據(jù)存儲(chǔ)器值在讀操作數(shù)階段存放到T寄存器中。果你使用R后綴,則指令對(duì)乘/累加操作的結(jié)果湊整。例4.68
MAC*AR5+,ADataMemory例4.69
MAC#345H,A,B例4.70
MAC#345H,A,B例4.71
MAC*AR5+,*AR6+,A,BDataMemory(2)MACA[R]語(yǔ)法:助記符方式表達(dá)式方式①M(fèi)ACA[R]Smem[,B]①B=rnd(B+Smem*hi(A))[,T=Xmem]②MACA[R]T,src[,dst]②dst=rnd(src+T*hi(A))執(zhí)行過(guò)程:①(Smem)×(A(32-16))+(B)→B(Smem)→T ②(T)×(A(32-16))+(src)→src該指令受FRCT和OVM影響,在語(yǔ)法①中影響OVdst(如果沒有定義dst,就為OVsrc)和OVB。功能描述:累加器A的高端(32~16位)與一個(gè)單數(shù)據(jù)存儲(chǔ)器操作數(shù)Smem或T寄存器中的內(nèi)容相乘,乘積加到累加器B中(語(yǔ)法①)或源累加器src中。語(yǔ)法①結(jié)果存放在累加器B中,語(yǔ)法②結(jié)果存放在dst或src(如果沒有定義dst就為src)中。累加器A的32~16位值用來(lái)作為乘法器的一個(gè)17bit操作數(shù)。如果你使用了R后綴,指令要對(duì)結(jié)果進(jìn)行湊整。該指令代碼占一個(gè)字,但當(dāng)Smem采用長(zhǎng)偏移間接尋址方式時(shí)就會(huì)多占一個(gè)字。例4.72
LMS*AR3+,*AR4+DataMemory例4.73
MACAT,B,B例4.74
MACAR*AR5+,BDataMemory(3)MACD語(yǔ)法:助記符方式表達(dá)式方式MACDSmem,pmad,srcmacd(Smem,pmad,src)執(zhí)行過(guò)程:pmad→PARif(RC)≠0Then(Smem)×(用PAR尋址的Pmem)+(src)→src(Smem)→T(Smem)→Smem+1(PAR)+1→PARElse(Smem)×(用PAR尋址的Pmem)+(src)→src(Smem)→T(Smem)→Smem+1該指令受FRCT和OVM的影響,并影響到OVsrc。功能描述:一個(gè)單數(shù)據(jù)存儲(chǔ)器值Smem與一個(gè)程序存儲(chǔ)器值pmad相乘,乘積和源累加器src的值相加,結(jié)果存放在src中。另外,還把數(shù)據(jù)存儲(chǔ)器值Smem裝入到T寄存器和緊接著Smem地址的數(shù)據(jù)單元中去。當(dāng)循環(huán)執(zhí)行該指令時(shí),在程序地址寄存器PAR中存儲(chǔ)器地址執(zhí)行加1操作。循環(huán)流水一旦啟動(dòng),指令就變成單周期指令,在存儲(chǔ)器延遲指令中也存在該功能
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 臨時(shí)市場(chǎng)場(chǎng)地租賃定金合同
- 專利使用權(quán)授權(quán)合同范本
- 個(gè)人建房合作開發(fā)合同
- 專業(yè)技術(shù)服務(wù)承包合同
- 上海房屋交易合同范本
- 二手房購(gòu)房合同定金支付協(xié)議
- 鄉(xiāng)村住宅買賣合同范本
- 個(gè)人農(nóng)田種植承包合同范本
- 臨時(shí)攤位租賃合同細(xì)則
- 個(gè)人買賣合同范本
- 課題申報(bào)參考:生活服務(wù)數(shù)字化轉(zhuǎn)型下社區(qū)生活圈建設(shè)理念、模式與路徑研究
- DCMM練習(xí)題練習(xí)試題
- 《工業(yè)化建筑施工階段碳排放計(jì)算標(biāo)準(zhǔn)》
- 廢舊保溫棉處置合同范例
- 2024年數(shù)據(jù)編織價(jià)值評(píng)估指南白皮書-Aloudata
- 托育園老師培訓(xùn)
- 人教版八年級(jí)英語(yǔ)上冊(cè)Unit1-10完形填空閱讀理解專項(xiàng)訓(xùn)練
- GB/T 18015.2-2007數(shù)字通信用對(duì)絞或星絞多芯對(duì)稱電纜第2部分:水平層布線電纜分規(guī)范
- DJI 產(chǎn)品交付理論試題
- FCI測(cè)試試題附答案
- 新編《公路隧道養(yǎng)護(hù)技術(shù)規(guī)范》解讀課件
評(píng)論
0/150
提交評(píng)論