版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第3章 指令系統(tǒng),3.1 數(shù)據(jù)尋址方式 3.2 TMS320C54x的指令系統(tǒng),3.1 數(shù)據(jù)尋址方式,3.1.1 指令的表示方法 1指令的基本形式 與所有的微處理器助記符指令一樣,TMS320C54x的助記符指令也是由操作符和操作數(shù)兩部分組成的。在匯編前,操作符是用助記符表示的,指出指令應(yīng)完成何種操作;操作數(shù)用來描述該指令的操作對(duì)象,它可以是數(shù)據(jù)本身,也可以是指出如何獲取操作數(shù)的信息。,助記符指令的基本形式為 標(biāo)號(hào),操作符,操作數(shù)1,操作數(shù)2,操作數(shù)3 其中,標(biāo)號(hào)是可選項(xiàng),操作數(shù)可以沒有或有多個(gè),其內(nèi)容可以是立即數(shù)、寄存器、程序地址、數(shù)據(jù)地址、I/O地址等。TMS320C54x中源操作數(shù)一般在
2、操作數(shù)1的位置,目的操作數(shù)則在操作數(shù)3的位置,指令執(zhí)行結(jié)果存放到目的操作數(shù)單元中,源操作數(shù)不變。 上述指令的執(zhí)行結(jié)果是將立即數(shù)0FFH傳送至累加器A中。這里的LD為操作符,#0FFH為操作數(shù)1,累加器A為操作數(shù)2。,2指令的數(shù)據(jù)類型 TMS320C54x 尋址存儲(chǔ)器有兩種基本的數(shù)據(jù)形式:16位數(shù)和32位數(shù)。大多數(shù)指令能夠?qū)ぶ?6位數(shù),只有雙精度和長(zhǎng)字指令才能尋址32位數(shù),如表3-1所示。,表3-1 尋址32位數(shù)的指令,在對(duì)32位數(shù)尋址時(shí),先處理高有效字,然后處理低有效字。如果尋址的第1個(gè)字處在偶地址,那么第2個(gè)字就處在下一個(gè)(較高的)地址;如果第1個(gè)字處在奇地址,那么第2個(gè)字就處在前一個(gè)(較低
3、的)地址,如圖3-1所示。在討論尋址方式時(shí),要用到一些縮寫語,表3-2給出了部分縮寫語的名稱和含義。,圖3-1 32位字的存儲(chǔ)順序,表3-2 部分尋址方式縮寫語,3.1.2 數(shù)據(jù)尋址方式 TMS320C54x數(shù)字信號(hào)處理器共有7種尋址方式,如表3-3所示。,表3-3 TMS320C54x的數(shù)據(jù)尋址方式,1立即尋址 立即尋址就是在指令中已經(jīng)包含有執(zhí)行指令所需的操作數(shù)(一個(gè)固定的立即數(shù))。立即尋址方式中的立即數(shù)有兩種數(shù)值形式,數(shù)值的位數(shù)為3、5、8或9位時(shí)為短立即數(shù);數(shù)值的位數(shù)為16位時(shí)是長(zhǎng)立即數(shù)。立即數(shù)可以包含在單字節(jié)或雙字節(jié)指令中,短立即數(shù)在單字節(jié)指令中,長(zhǎng)立即數(shù)在雙字節(jié)指令中。在一條指令中,
4、立即數(shù)的形式是由所使用的指令的類型決定的。 在立即尋址方式的指令中,在數(shù)字前面加一個(gè)“#”符號(hào),表示此數(shù)為一個(gè)立即數(shù),否則會(huì)誤認(rèn)為是一個(gè)地址。,例如:用一個(gè)十六進(jìn)制數(shù)80H加載累加器A,可以寫成如下指令: LD #80H,A 執(zhí)行后,A0080H 如果將立即數(shù)10H先左移4位后,再加載累加器A,可以寫成如下指令: LD #10H,4,A 執(zhí)行后,A0000 0100H LD #32768,B 執(zhí)行后,BFFFF 8000H,狀態(tài)寄存器ST1中的SXM位等于1,數(shù)據(jù)進(jìn)入ALU之前進(jìn)行符號(hào)擴(kuò)展,2絕對(duì)尋址 絕對(duì)尋址就是指令中包含要尋址的存儲(chǔ)單元的16位地址,指令按照此地址進(jìn)行數(shù)據(jù)尋址。這種尋址方式
5、為雙字指令,速度慢。,絕對(duì)尋址有以下四種形式: (1) 數(shù)據(jù)存儲(chǔ)器地址單元(dmad)尋址:用程序標(biāo)號(hào)或數(shù)據(jù)來確定指令中所需要的數(shù)據(jù)空間地址。其指令如下: MVDK Smem,dmad MVDM dmad,MMR MVKD dmad,Smem MVMD MMR,dmad,(2) 程序存儲(chǔ)器地址單元(pmad)尋址:用一個(gè)符號(hào)或一個(gè)具體的數(shù)來確定程序存儲(chǔ)器中的地址。其指令如下: FIRS Xmem,Ymem,pmad MACD Smem,pmad,src MACP Smem,pmad,src MVDP Smem,pmad MVPD pmad,Smem,(3) 端口地址(PA)尋址:用一個(gè)符號(hào)或一
6、個(gè)常數(shù)來確定外部I/O端口地址。其指令如下: PORTR PA,Smem PORTW Smem,PA (4) *(lk)尋址:16位符號(hào)常數(shù)所指的數(shù)據(jù)存儲(chǔ)單元(Smem)中的操作數(shù)。,3累加器尋址 累加器尋址是以累加器內(nèi)容作為一個(gè)地址來讀取程序存儲(chǔ)器中的數(shù)據(jù)的。有兩條指令可以用累加器尋址: READA Smem ;把累加器A所確定的程序存儲(chǔ)單元中的內(nèi)容傳送到由Smem所指定的數(shù)據(jù)存儲(chǔ)單元中 WRITA Smem ;將Smem 所指定的數(shù)據(jù)存儲(chǔ)單元中的一個(gè)數(shù)傳送到累加器A確定的程序存儲(chǔ)器單元中,4直接尋址 直接尋址就是在指令中包含有數(shù)據(jù)存儲(chǔ)器地址(dma)的低7位,用這7位作為偏移地址,并與基地
7、址值(數(shù)據(jù)頁面指針DP的9位或堆棧指針SP的16位)組成一個(gè)16位的數(shù)據(jù)存儲(chǔ)器地址。直接尋址分為數(shù)據(jù)頁指針直接尋址和堆棧指針直接尋址兩種。這兩種尋址方式可以在不改變 DP或SP的情況下,隨機(jī)地尋找128個(gè)存儲(chǔ)單元中的任何一個(gè)單元地址。直接尋址的優(yōu)點(diǎn)是訪問方便快捷,每條指令只需要一個(gè)字。直接尋址的代碼格式如下:,當(dāng)狀態(tài)寄存器ST1中的CPL位等于0時(shí),ST0中的DP值(9位地址)與指令中的7位地址一起形成16位數(shù)據(jù)存儲(chǔ)器地址,如圖3-2所示。,圖3-2 以DP為基準(zhǔn)的直接尋址,因?yàn)镈P值的范圍是0511,所以以DP為基準(zhǔn)的直接尋址把存儲(chǔ)器分成512頁;又因?yàn)?位dma值的范圍是0127,所以每頁
8、有128個(gè)可訪問的單元,也就是說,DP指向512頁中的一頁,dma就指向該頁中的特定單元。DP值可以由LD指令裝入,RESET指令將DP賦為0。DP不能通過上電進(jìn)行初始化,必須在程序中對(duì)它進(jìn)行初始化后,才能保證程序正常工作。 當(dāng)ST1中的CPL位等于1時(shí),將指令中的7位地址與16位堆棧指針SP相加,形成16位的數(shù)據(jù)存儲(chǔ)器地址,如圖3-3所示。,圖3-3 以SP為基準(zhǔn)的直接尋址方式,直接尋址的句法是利用一個(gè)符號(hào)“”(加在變量的前面)或者一個(gè)常數(shù)來確定偏移地址值的。例如: (1) 數(shù)據(jù)頁指針直接尋址:x01FFH,y0200H。 (2) 堆棧指針直接尋址:SP0010H。,5間接尋址 在間接尋址中
9、,64 K字?jǐn)?shù)據(jù)空間中的任意單元都可以通過一個(gè)輔助寄存器中的16位地址進(jìn)行訪問,同時(shí)可以預(yù)調(diào)整或修改輔助寄存器值,完成循環(huán)尋址和位碼倒序?qū)ぶ返忍厥夤δ?。TMS320C54x有8個(gè)16位輔助寄存器(AR0AR7)、兩個(gè)輔助寄存器算術(shù)運(yùn)算單元(ARAU0和ARAU1),它們與8個(gè)輔助寄存器一起完成16位無符號(hào)數(shù)算術(shù)運(yùn)算。,間接尋址很靈活,它不僅能在單條指令中對(duì)存儲(chǔ)器讀/寫一個(gè)16位操作數(shù),而且還能在單條指令中讀兩個(gè)獨(dú)立的數(shù)據(jù)存儲(chǔ)單元,讀/寫兩個(gè)順序的數(shù)據(jù)存儲(chǔ)單元,或者讀一個(gè)數(shù)據(jù)存儲(chǔ)單元的同時(shí)寫另一個(gè)數(shù)據(jù)存儲(chǔ)單元。,1) 單數(shù)據(jù)存儲(chǔ)器操作數(shù)間接尋址 單數(shù)據(jù)存儲(chǔ)器操作數(shù)間接尋址指令的格式如下:,20位
10、:3位輔助寄存器域,它定義了尋址所使用的輔助寄存器。ARF由狀態(tài)寄存器ST1中的兼容方式位CMPT來決定。 CMPT0:標(biāo)準(zhǔn)方式。ARP始終設(shè)置為0,不能修改。 CMPT1:兼容方式。 表3-4列出了16種單數(shù)據(jù)存儲(chǔ)器操作數(shù)的間接尋址功能及其說明。單操作數(shù)間接尋址的硬件框圖如圖3-4所示,表3-4 單數(shù)據(jù)存儲(chǔ)器操作數(shù)的間接尋址類型,圖3-4 單操作數(shù)間接尋址的硬件框圖,2) 位碼倒序?qū)ぶ饭δ?位碼倒序?qū)ぶ诽岣吡藞?zhí)行速度,在FFT算法中,經(jīng)常要用到位碼倒序?qū)ぶ饭δ堋T谶@種尋址方式中,AR0存放的整數(shù)N是FFT點(diǎn)數(shù)的一半。一個(gè)輔助寄存器指向一個(gè)數(shù)據(jù)存放的物理單元,當(dāng)使用位倒序?qū)ぶ钒袮R0加到輔助寄
11、存器中時(shí),地址以位倒序的方式產(chǎn)生,即進(jìn)位是從左向右,而不是通常的從右向左。,例如:AR00000 1010B,AR20110 0110B,如執(zhí)行*AR2+0B尋址功能,也就是(0110 0110)+(000 1010),結(jié)果AR20110 1101B。應(yīng)注意,計(jì)算是采用從左到右運(yùn)算的。 以16點(diǎn)FFT為例,其運(yùn)算結(jié)果的順序?yàn)閄(0)、X(8)、X(4)、X(15),如表3-5所示。,表3-5 位碼倒序?qū)ぶ?3) 循環(huán)尋址 在卷積、相關(guān)和FIR濾波器等算法中,都需要在存儲(chǔ)器中設(shè)置一個(gè)循環(huán)緩沖器,它是一個(gè)滑動(dòng)窗口,保存著最新的一批數(shù)據(jù)。當(dāng)新的數(shù)據(jù)到來時(shí),緩沖器中最早的數(shù)據(jù)就會(huì)被新的數(shù)據(jù)覆蓋。循環(huán)緩
12、沖器實(shí)現(xiàn)的關(guān)鍵是循環(huán)尋址的實(shí)現(xiàn)。循環(huán)緩沖器大小寄存器(BK)的內(nèi)容確定了循環(huán)緩沖器的大小。BK中的數(shù)值由指令“STM #lk,BK”設(shè)定。長(zhǎng)度為R的緩沖器必須從N位地址的邊界開始(即循環(huán)緩沖器基地址的N個(gè)最低有效位必須為0),N應(yīng)滿足2NR的最小整數(shù)。,循環(huán)緩沖區(qū)的有效基地址(EFB)就是用戶選定的輔助寄存器(ARx)的低N位置0后所得到的值,循環(huán)緩沖區(qū)的的尾地址(EOB)是通過用BK的低N位代替ARx的低N位得到的。循環(huán)緩沖區(qū)的指針index就是ARx的低N位,step就是加到輔助寄存器或從輔助寄存器中減去的值。圖3-5說明了BK、輔助寄存器(ARx)、循環(huán)緩沖區(qū)的尾地址和首地址以及循環(huán)緩沖
13、器的指針關(guān)系。,圖3-5 循環(huán)尋址的框圖,循環(huán)尋址的算法為 if 0index+stepBK; indexindex+step. else if index+stepBK; indexindex+step-BK. else if index+step0; indexindex+step+BK.,4) 雙數(shù)據(jù)存儲(chǔ)器操作數(shù)尋址 雙數(shù)據(jù)存儲(chǔ)器操作數(shù)尋址用來完成兩個(gè)讀操作,或一個(gè)讀和一個(gè)并行存儲(chǔ)操作。采用這種方式的指令只有一個(gè)長(zhǎng)字,并且只能以間接尋址的方式工作。用Xmem和Ymem來代表這兩個(gè)數(shù)據(jù)存儲(chǔ)器操作數(shù)。在完成兩個(gè)讀操作過程中,Xmem表示讀操作數(shù)(訪問D數(shù)據(jù)總線),Ymem表示讀操作數(shù)(訪問C
14、數(shù)據(jù)總線);在一個(gè)讀操作同時(shí)并行一個(gè)并行存儲(chǔ)操作過程中,Xmem表示讀操作數(shù)(訪問D數(shù)據(jù)總線),Ymem表示一個(gè)寫(訪問E數(shù)據(jù)總線)操作數(shù)。,如果源操作數(shù)和目的操作數(shù)指向同一個(gè)單元,則在并行存儲(chǔ)指令中(如ST|LD),讀在寫之前。如果一個(gè)雙操作指令(如ADD)指向同一輔助寄存器,并且這兩個(gè)操作數(shù)的尋址方式不同,那么就按Xmod域所確定的方式來尋址。雙數(shù)據(jù)存儲(chǔ)器操作數(shù)間接尋址的硬件框圖如圖3-6所示。,圖3-6 雙數(shù)據(jù)存儲(chǔ)器操作數(shù)間接尋址的硬件框圖,雙數(shù)據(jù)存儲(chǔ)器操作數(shù)間接尋址的指令格式如下:,表3-6 雙數(shù)據(jù)存儲(chǔ)器操作數(shù)間接尋址指令代碼的位說明,表3-7 由指令的Xar和Yar域選擇的輔助寄存器
15、,表3-8 雙數(shù)據(jù)存儲(chǔ)器操作數(shù)間接尋址類型,6存儲(chǔ)器映像寄存器尋址 存儲(chǔ)器映像寄存器尋址是用來修改存儲(chǔ)器映像寄存器的,但不影響當(dāng)前數(shù)據(jù)頁指針DP或堆棧指針SP的值。由于DP和SP不需要改變,因此寫一個(gè)寄存器的開銷是最小的。存儲(chǔ)器映像寄存器尋址可以在直接尋址和間接尋址中使用。,存儲(chǔ)器映像寄存器(MMR)地址的產(chǎn)生有兩種方法: (1) 在直接尋址方式下,不管當(dāng)前DP或SP的值為何值,使數(shù)據(jù)寄存器地址的高9位(MSBs)強(qiáng)制置0,數(shù)據(jù)存儲(chǔ)器地址的低7位(LSBs)則來自于指令字。 (2) 在間接尋址方式下,只使用當(dāng)前輔助寄存器的低7位作為數(shù)據(jù)存儲(chǔ)器地址的低7位,地址的高9位為0,指定的輔助寄存器的高
16、9位在尋址后被強(qiáng)制置0。,圖3-7 存儲(chǔ)器映像寄存器尋址,7堆棧尋址 系統(tǒng)堆棧用來在中斷或調(diào)用子程序期間自動(dòng)存放程序計(jì)數(shù)器,也能用來存放用戶當(dāng)前的程序環(huán)境或傳遞數(shù)據(jù)值。處理器使用一個(gè)16位存儲(chǔ)器映像寄存器的一個(gè)堆棧指針(SP)來尋址堆棧,SP始終指向存放在堆棧中的最后一個(gè)單元。當(dāng)調(diào)用一個(gè)子程序或一個(gè)中斷響應(yīng)發(fā)生時(shí),PC會(huì)被自動(dòng)壓棧,堆棧指針SP指向存放最后一個(gè)數(shù)據(jù)的堆棧單元;返回時(shí),返回地址從堆棧中彈出并裝入PC。,使用堆棧尋址方式訪問堆棧的指令共有4條: PSHD:把一個(gè)數(shù)據(jù)存儲(chǔ)器的值壓入堆棧。 PSHM:把一個(gè)存儲(chǔ)器映像寄存器的值壓入堆棧。 POPD:把一個(gè)數(shù)據(jù)存儲(chǔ)器的值彈出堆棧。 POP
17、M:把一個(gè)存儲(chǔ)器映像寄存器的值彈出堆棧。 堆棧存放數(shù)據(jù)是從高地址向低地址進(jìn)行的。壓入堆棧時(shí),先減小SP,再將數(shù)據(jù)壓入堆棧;彈出堆棧時(shí),先從堆棧彈出數(shù)據(jù),再增加SP值。 圖3-8說明了堆棧操作對(duì)堆棧指針(SP)的影響。,圖3-8 堆棧操作對(duì)堆棧指針的影響,3.2 TMS320C54x的指令系統(tǒng),TMS320C54x可以使用兩套指令系統(tǒng):代數(shù)表達(dá)式形式指令和助記符形式指令。代數(shù)表達(dá)式形式指令易學(xué)易記,運(yùn)算關(guān)系清楚明了;助記符形式指令與計(jì)算機(jī)匯編語言比較接近,便于閱讀和記憶。因?yàn)閮烧叩膮R編器不同,所以兩種形式的指令不能混淆。TMS320C54x指令系統(tǒng)按功能可以分成四種基本類型:, 算術(shù)運(yùn)算指令;
18、邏輯運(yùn)算指令; 程序控制指令; 加載和存儲(chǔ)指令。,3.2.1 指令系統(tǒng)概述 1指令系統(tǒng)中規(guī)定的符號(hào)與縮寫 TMS320C54x指令系統(tǒng)中規(guī)定了許多符號(hào)與縮寫,在介紹指令系統(tǒng)之前應(yīng)有所了解。為了便于學(xué)習(xí)和使用,在表3-9(略)和表3-10(略)中列出了指令系統(tǒng)和操作碼中的符號(hào)和縮寫,以備查用。 2指令系統(tǒng)中的記號(hào)和運(yùn)算符 指令系統(tǒng)中所用的一些記號(hào)見表3-11(略)。 指令系統(tǒng)中所用的運(yùn)算符號(hào)見表3-12。,表3-12 指令系統(tǒng)中所用的運(yùn)算符號(hào),3.2.2 指令系統(tǒng)分類 TMS320C54x的指令一共有129條,由于操作數(shù)的尋址方式不同,以至于派生有205條指令。TMS320C54x指令系統(tǒng)的分類
19、有兩種方法,一是按指令執(zhí)行時(shí)所需的周期分類;一是按指令的功能分類。按指令的功能可分為四類:算術(shù)運(yùn)算指令、邏輯運(yùn)算指令、程序控制指令以及加載和存儲(chǔ)指令。,1算術(shù)運(yùn)算指令 算術(shù)運(yùn)算指令用于完成加、減、乘、除等算術(shù)運(yùn)算,可分為加法指令、減法指令、乘法指令、乘加指令、乘減指令、雙操作數(shù)指令和專用指令。其中,大部分指令只需要一個(gè)指令周期,只有個(gè)別指令需要23個(gè)指令周期。,1) 加法指令 指令中表示整數(shù)時(shí),有有符號(hào)數(shù)和無符號(hào)數(shù)兩種格式。TMS320C54x提供了多條用于加法的指令,如ADD、ADDC、ADDM和ADDS,具體說明見表3-13。,表3-13 加法指令的說明,ADD指令有10種句法。如果目的累
20、加器dst被指定,則結(jié)果存放在dst中;如果沒有被指定,則結(jié)果存放在源累加器src中。移位操作數(shù)的范圍為16SHIFT15,0SHFT15。正數(shù)為左移位,左移位低位添0,高位受SXM位影響。如果SXM1,則高位進(jìn)行符號(hào)擴(kuò)展;如果SXM0,則高位清零。負(fù)數(shù)為右移位,受SXM位影響。如果SXM1,則高位進(jìn)行符號(hào)擴(kuò)展;如果SXM0,則高位清零。,【例1】 ADD *AR3+,14,A,【例5】 ADDC *+AR2(5),A ;不受SXM位影響,【例6】 ADDM #123BH,*AR4+ ;該指令不能循環(huán)執(zhí)行,【例8】 ADDS *AR2-,B ;無論SXM為何值,都不進(jìn)行符號(hào)擴(kuò)展,2) 減法指令
21、 TMS320C54x 中減法指令有許多,如SUB、SUBB、SUBC和SUBS,具體說明見表3-14。其中,SUBS是無符號(hào)數(shù)的減法運(yùn)算,SUBB是帶借位的減法運(yùn)算,而SUBC是含條件的移位減。在TMS320C54x中,沒有專門的除法指令,要實(shí)現(xiàn)除法運(yùn)算一般有兩種方法:一種方法是用乘法進(jìn)行,如要除以某個(gè)數(shù),可以先求出該數(shù)的倒數(shù),再乘以其倒數(shù);另一種方法是用SUBC指令,再重復(fù)16次減法運(yùn)算,可實(shí)現(xiàn)兩個(gè)無符號(hào)數(shù)的除法運(yùn)算。減法指令中狀態(tài)位與加法指令中的基本相同。,表3-14 減法指令的說明,【例9】 SUB #12345,8,A,B,【例10】LD #8,DP ;使頁面指針DP8 LD #00
22、06H,A ;加載A累加器 SSBX C ;置借位位C為1,例: SUBB 5,A ;完成帶借位的減法運(yùn)算。 數(shù)據(jù)地址0405H,為直接尋址,【例11】 利用SUBC完成整除法,41H7H9H,余數(shù)是2H。 LD#0041H,B ;將被除數(shù)41H裝入累加器B的低16位 STM #0100H,AR2 ;寄存器AR20100H STM #0110H,AR3 ;寄存器AR30110H ST #0007H,*AR2 ;設(shè)置AR2寄存器的內(nèi)容,(AR2)0007H RPT #15 ;重復(fù)SUBC指令15+1次,SUBC *AR2,B ;使用SUBC指令完成除法運(yùn)算 STL B,*AR3+ ;將商(累加器
23、B的低16位)存入變量AR3所指地址的數(shù)據(jù)單元,AR3+1AR3 STH B,*AR3 ;將余數(shù)(累加器B的高16位)存入變量AR3所指地址的數(shù)據(jù)單元 SUBC指令重復(fù)執(zhí)行前和最后一條指令執(zhí)行完后各寄存器的狀態(tài)如下:,3) 乘法指令 TMS320C54x 中有大量的乘法運(yùn)算指令,其結(jié)果都是32位,放在A或B累加器中,如表3-15所示。乘數(shù)在TMS320C54x的乘法指令中的使用很靈活,可以是T寄存器、立即數(shù)、存儲(chǔ)單元以及A或B累加器的高16位。如果是無符號(hào)數(shù)相乘,則使用一條專用于無符號(hào)數(shù)相乘的指令,即MPYU指令,其他指令都是有符號(hào)數(shù)的乘法。,表3-15 乘法指令的說明,【例14】 實(shí)現(xiàn)整數(shù)乘
24、法。 LD #0030H,A ;將0030H裝入累加器A STM #0100H,AR2 ;AR20100H ST #2000H,*AR2 ;(AR2)2000H RSBX FRCT ;清FTCT標(biāo)志位,準(zhǔn)備整數(shù)乘 LD #2,DP ;DP002H LD 0,T ;將AR2中的內(nèi)容2000H裝入T寄存器 MPY #-2,A ;完成2000H與0FFFEH相乘,結(jié)果放入A累加器(32位), ;AFF FFFF C000H,【例15】 實(shí)現(xiàn)小數(shù)乘法。 SSBXFRCT ;置FRCT標(biāo)志位,準(zhǔn)備小數(shù)乘法 LD temp1,16,A ;將變量temp1裝入累加器A的高16位 MPYAtemp2 ;完成t
25、emp2與累加器A的高16位相乘,結(jié)果放入B累加器, ;并將temp2裝入T寄存器 STHtemp3 ;將乘積結(jié)果的高16位存入變量temp3,4) 乘加指令 乘加指令完成一個(gè)乘法運(yùn)算,將乘積再與源累加器的內(nèi)容相加。指令中使用R后綴的,其運(yùn)算結(jié)果要進(jìn)行湊整。表3-16是對(duì)乘加指令的說明。,表3-16 乘加指令的說明,【例16】 MAC #345H,A,B,【例18】 MAC *AR3+,*AR4+,A,B,【例19】 MACR *AR3+,*AR4+,A,B,【例20】 MACA T,A,B,【例24】 MACSU *AR3+,*AR4+,A,5) 乘減指令 乘減指令完成從累加器B或源累加器s
26、rc或目的累加器dst中減去T寄存器或一個(gè)操作數(shù)與另一個(gè)操作數(shù)的乘積,結(jié)果存放在累加器B或dst或src中。表3-17是對(duì)乘減指令的說明。,表3-17 乘減指令的說明,6) 雙操作數(shù)指令 雙操作數(shù)指令中有一個(gè)操作數(shù)Lmem是長(zhǎng)數(shù)據(jù)存儲(chǔ)操作數(shù),該指令為雙長(zhǎng)字(32位)的指令。如DADD指令,它在C16的控制下完成一個(gè)32位的加法運(yùn)算或兩個(gè)16位的加法運(yùn)算。當(dāng)C160時(shí),指令以雙精度(32位)方式執(zhí)行;當(dāng)C161時(shí),指令以雙16位方式執(zhí)行。表3-18是對(duì)雙操作數(shù)指令的說明。,表3-18 雙操作數(shù)指令的說明,7) 專用指令 在TMS320C54x中,許多專用指令用來完成一些特殊的操作,這樣不僅可以大
27、大提高編寫程序的速度,縮短程序的長(zhǎng)度,還避免了匯編中為實(shí)現(xiàn)一種功能而需要多條語句的弊端,減少了指令執(zhí)行的周期。表3-19是對(duì)專用指令的說明。,表3-19 專用指令的說明,2邏輯指令 按照功能的不同可將邏輯指令分為五組,即與指令(AND)、或指令(OR)、異或指令(XOR)、移位指令(ROL)和測(cè)試指令(BITF)。根據(jù)操作數(shù)的不同,指令的執(zhí)行需要12個(gè)指令周期。前三組指令與計(jì)算機(jī)匯編語言中邏輯指令一樣,是按位進(jìn)行操作的。 1) 與邏輯運(yùn)算指令 表3-20是對(duì)與邏輯運(yùn)算指令的說明。,表3-20 與邏輯運(yùn)算指令的說明,2) 或邏輯運(yùn)算指令 表3-21是對(duì)或邏輯運(yùn)算指令的說明。,表3-21 或邏輯運(yùn)
28、算指令的說明,3) 異或邏輯運(yùn)算指令 表3-22是對(duì)異或邏輯運(yùn)算指令的說明。,表3-22 異或邏輯運(yùn)算指令的說明,4) 移位指令 表3-23(略)是對(duì)移位指令的說明。,【例32】 SFTA A,-8,B,【例34】 SFTL A,-8,B,【例35】 SFTL B,+5,5) 測(cè)試指令 測(cè)試指令可以測(cè)試操作數(shù)的指定位的值,也可以比較兩個(gè)操作數(shù)是否相等。這些指令的執(zhí)行需要12個(gè)指令周期。表3-24是對(duì)測(cè)試指令的說明。,表3-24 測(cè)試指令的說明,【例36】 BIT *AR2+,12,【例37】 CMPR 2,AR4,3程序控制指令 程序控制指令用于控制程序的執(zhí)行順序。程序控制指令包括分支轉(zhuǎn)移指令
29、(B、BC)、調(diào)用指令(CALL)、中斷指令(INTR、TRAP)、返回指令(RET)、重復(fù)指令(RPT)、堆棧操作指令(FRAME、POPD)和混合程序控制指令(IDLE、NOP)。這些指令根據(jù)不同情況分別需要16個(gè)指令周期。 條件分支轉(zhuǎn)移指令或條件調(diào)用、條件返回指令都要用條件來限制分支轉(zhuǎn)移、調(diào)用和返回操作,只有當(dāng)一個(gè)條件或多個(gè)條件得到滿足時(shí)才執(zhí)行指令。條件運(yùn)算符分為兩組,如表3-25所示。,表3-25 條 件 運(yùn) 算 符,1) 分支轉(zhuǎn)移指令 分支轉(zhuǎn)移指令可以改變程序指針PC,使程序從一個(gè)地址跳轉(zhuǎn)到另一個(gè)地址。分支轉(zhuǎn)移指令分有條件轉(zhuǎn)移和無條件轉(zhuǎn)移兩種。指令后綴有D的指令是延遲轉(zhuǎn)移,指令執(zhí)行時(shí)
30、先執(zhí)行緊跟的下一條指令,緊接著延遲轉(zhuǎn)移指令的兩條單字指令和一條雙字指令。延遲轉(zhuǎn)移可以減少轉(zhuǎn)移指令的執(zhí)行時(shí)間,但程序的可讀性變差。表3-26所列的轉(zhuǎn)移指令都不能循環(huán)執(zhí)行。,表3-26 后綴有D的分支轉(zhuǎn)移指令的說明,【例38】 用AR2作為循環(huán)計(jì)數(shù)器,設(shè)初值為4,共執(zhí)行5次加法運(yùn)算。 LOOP:ADD *AR1+,A BANZ LOOP,*AR2 ,【例39】 用AR0作為循環(huán)計(jì)數(shù)器,設(shè)初值為7,共執(zhí)行8次從程序存儲(chǔ)器到數(shù)據(jù)存儲(chǔ)器的傳送。 LOOP:LD *AR1+,A STL A,*AR2+ BANZ LOOP,*AR0 ,【例40】 FBACC A,2) 調(diào)用指令 調(diào)用指令與分支轉(zhuǎn)移指令的區(qū)別
31、是,采用調(diào)用指令時(shí),被調(diào)用的程序段執(zhí)行完后要返回程序的調(diào)用處繼續(xù)執(zhí)行原程序。,調(diào)用指令為非延時(shí)指令,PC+1TOS;指令后綴帶D時(shí),是延遲調(diào)用,緊接著指令的兩條單字指令和一條雙字指令先被取出執(zhí)行,此時(shí)PC+3TOS。對(duì)于CCD指令,當(dāng)滿足確定的條件時(shí),PC+2TOS,pmadPC,否則,PC+2PC;如果是延遲調(diào)用,該指令后的兩個(gè)字指令先被取出執(zhí)行,被測(cè)試的條件不會(huì)受影響,PC+4TOS。表3-27是對(duì)延遲調(diào)用指令的說明。,表3-27 延遲調(diào)用指令的說明,【例41】 CALA A,【例42】 CALAD B ANDM 4444H,*AR1+,3) 中斷指令 當(dāng)有中斷發(fā)生時(shí),INTM位置,屏蔽所
32、有可屏蔽中斷,并設(shè)置中斷標(biāo)志寄存器IRF中相應(yīng)的中斷標(biāo)志位。中斷向量地址是由處理器工作方式狀態(tài)寄存器PMST中的中斷向量指針I(yè)PTR(9位)和左移兩位后的中斷向量序號(hào)(中斷向量序號(hào)為031,左移兩位后變?yōu)?位)組成的。中斷向量地址的形成如圖3-9所示。表3-28是對(duì)中斷指令的說明。,圖3-9 中斷向量地址的形成,表3-28 中斷指令的說明,【例43】 INTR 3,4) 返回指令 返回指令用于在執(zhí)行完調(diào)用程序段或中斷服務(wù)程序后,使程序返回到調(diào)用指令或中斷發(fā)生的地方以繼續(xù)執(zhí)行。表3-29是對(duì)返回指令的說明。,【例44】 FRETE,表3-29 返回指令的說明,5) 重復(fù)指令 重復(fù)指令能使DSP重
33、復(fù)執(zhí)行一條指令或一段指令。在執(zhí)行RPT或RPTZ期間,對(duì) 和所有可屏蔽中斷都不響應(yīng)。在執(zhí)行RPTB指令前,必須把循環(huán)次數(shù)置入BRC寄存器中。在塊重復(fù)執(zhí)行期間,可以響應(yīng)中斷。表3-30是對(duì)重復(fù)指令的說明。,表3-30 重復(fù)指令的說明,【例45】 RPT #99H ;循環(huán)執(zhí)行NOP指令100 NOP 次,RC63H RPT #0FFFFH ;將緊跟在RPT后面的下一條指令循環(huán)執(zhí)行1000次,雙字指令,6) 堆棧操作指令 堆棧操作指令可以對(duì)堆棧進(jìn)行壓入和彈出操作,操作數(shù)可以是立即數(shù)、數(shù)據(jù)存儲(chǔ)器單元Smem或存儲(chǔ)器映像寄存器MMR。表3-31是對(duì)堆棧操作指令的說明。,表3-31 堆棧操作指令的說明,7
34、) 其他程序控制指令 表3-32是對(duì)其他程序控制指令的說明。,表3-32 其他程序控制指令的說明,4加載和存儲(chǔ)指令 加載和存儲(chǔ)指令用于完成數(shù)據(jù)的讀入和保存,包括一般的加載和存儲(chǔ)指令(LD、ST)、條件存儲(chǔ)指令(CMPS、SACCD)、并行的加載和乘法指令(LDMAC)、并行的加載和存儲(chǔ)指令(STLD)、并行的存儲(chǔ)和加減指令(STADD、STSUB)以及其他加載和存儲(chǔ)指令(MVDD、PORTW、READA)。這些指令根據(jù)不同情況分別需要15個(gè)指令周期。,1) 加載指令 加載指令用于將數(shù)據(jù)存儲(chǔ)單元中的數(shù)據(jù)、立即數(shù)或源累加器的值裝入目的累加器、暫時(shí)寄存器T等,即給目的累加器、暫時(shí)寄存器T等賦值。表3
35、-33是對(duì)加載指令的說明。,表3-33 加載指令的說明,【例47】 給累加器A加載一個(gè)雙16位長(zhǎng)字。 STM #0100H,AR2 DLD *AR2+,A,【例48】 LD *AR1,A,【例49】 LDM AR1,A,【例50】 LDM *AR1,A,【例51】 LDM 0060H,B,2) 存儲(chǔ)指令 存儲(chǔ)指令用于將源累加器、立即數(shù)、暫時(shí)寄存器T或狀態(tài)轉(zhuǎn)移寄存器TRN的值保存到數(shù)據(jù)存儲(chǔ)單元或存儲(chǔ)器映像寄存器中。表3-34是對(duì)存儲(chǔ)指令的說明。,表3-34 存儲(chǔ)指令的說明,【例52】 DST B,*AR1+,【例53】 DST B,*AR1-,【例54】 ST FFFFH,0,【例55】 ST
36、T,*AR7-,【例56】 STM 0FFFFH,IMR,【例57】 STM 8765H,*AR7+,3) 條件存儲(chǔ)指令 條件存儲(chǔ)指令是在條件滿足的情況下,將源累加器、T寄存器或塊重復(fù)計(jì)數(shù)器BRC的值存儲(chǔ)在數(shù)據(jù)存儲(chǔ)單元中。表3-35是對(duì)條件存儲(chǔ)指令的說明。,表3-35 條件存儲(chǔ)指令的說明,【例58】 SRCCD *AR5-,AGT,【例59】 SACCD A,*AR3+0,ALT,4) 其他加載和存儲(chǔ)指令 其他加載和存儲(chǔ)指令可以實(shí)現(xiàn)兩個(gè)數(shù)據(jù)存儲(chǔ)單元間數(shù)據(jù)的傳送,兩個(gè)存儲(chǔ)器映像寄存器單元間數(shù)據(jù)的傳送等,不受狀態(tài)位影響。表3-36是對(duì)其他加載和存儲(chǔ)指令的說明。,表3-36 其他加載和存儲(chǔ)指令的說明,【例60】 MVDD *AR3+,*AR5+,【例61】 MVDK *AR3-,1000H。,5. 并行執(zhí)行指令 TMS320C54x DSP的CPU結(jié)構(gòu)使TMS320C54x可以在不引起硬件資源沖突的情況下支持某些并行執(zhí)行指令,并行指令同時(shí)利用D總線和E總線。D總線用來執(zhí)行加載或算術(shù)運(yùn)算,E總線用來存放先前的結(jié)果。這些并行執(zhí)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年東營(yíng)博苑幼兒園招聘?jìng)淇碱}庫及答案詳解參考
- 1中山市第一職業(yè)技術(shù)學(xué)校2026年臨聘教師招聘?jìng)淇碱}庫完整答案詳解
- 2026年吉安市人才資源開發(fā)服務(wù)有限公司招聘?jìng)淇碱}庫及完整答案詳解一套
- 護(hù)理實(shí)踐中的創(chuàng)新與改進(jìn)
- 手術(shù)室感染控制實(shí)踐
- 聽神經(jīng)瘤患者出院指導(dǎo)與隨訪
- 2026春招:客戶代表題目及答案
- 2026春招:金川集團(tuán)筆試題及答案
- 2025 小學(xué)五年級(jí)數(shù)學(xué)上冊(cè)位置確定課堂活動(dòng)課件
- 2026春招:國家融資擔(dān)?;鹫骖}及答案
- 中圖版地理七年級(jí)上冊(cè)知識(shí)總結(jié)
- 大連理工大學(xué)固態(tài)相變各章節(jié)考點(diǎn)及知識(shí)點(diǎn)總節(jié)
- 腫瘤科專業(yè)組藥物臨床試驗(yàn)管理制度及操作規(guī)程GCP
- 統(tǒng)編版四年級(jí)下冊(cè)語文第二單元表格式教案
- 測(cè)量系統(tǒng)線性分析數(shù)據(jù)表
- 上海農(nóng)貿(mào)場(chǎng)病媒生物防制工作標(biāo)準(zhǔn)
- 第三單元課外古詩詞誦讀《太常引·建康中秋夜為呂叔潛賦》課件
- YY 0334-2002硅橡膠外科植入物通用要求
- GB/T 5836.1-1992建筑排水用硬聚氯乙烯管材
- 論文寫作講座課件
- 危險(xiǎn)化學(xué)品-培訓(xùn)-課件
評(píng)論
0/150
提交評(píng)論