第4章+TMS320C2000+DSP指令系統(tǒng)_第1頁
第4章+TMS320C2000+DSP指令系統(tǒng)_第2頁
第4章+TMS320C2000+DSP指令系統(tǒng)_第3頁
第4章+TMS320C2000+DSP指令系統(tǒng)_第4頁
第4章+TMS320C2000+DSP指令系統(tǒng)_第5頁
已閱讀5頁,還剩82頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、4.1 C2000尋址方式尋址方式nC2xx DSP具有三種基本的尋址方式:立即數尋址立即數尋址、直接尋址直接尋址和間接尋址間接尋址。第第4章章 TMS320C2000 DSP指令系統(tǒng)指令系統(tǒng) n指令格式如下表示: 指令助記符指令助記符指令操作數指令操作數尋址方式是指尋址方式是指尋找指令中操作數地址尋找指令中操作數地址的方式。的方式。 立即尋址方式立即尋址方式最為簡單,操作數就包括在指令操作數就包括在指令中,操作數地址即指令寄存器中,操作數地址即指令寄存器IR的某些位的某些位。 立即尋址的操作數有兩種: 短立即數短立即數:短立即數尋址方式時,指令字為單字長; 長立即數:長立即數:長立即數操作時

2、,指令字為雙字長。 為了與直接尋址方式中的地址操作數區(qū)別,立立即尋址方式中的立即數要以即尋址方式中的立即數要以“#”符開頭符開頭。一、立即尋址方式一、立即尋址方式 短立即數尋址方式舉例短立即數尋址方式舉例1 0 1 1 1 0 1 1 0 1 1 0 0 0 1 115 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00立即尋址方式的RPT操作碼短立即操作數99(63h)指令字中指令字中包含指令包含指令所使用的所使用的一個常數一個常數RPT #99;將緊接著;將緊接著RPT后的指令重復后的指令重復100次次 ADD #16384,2 ;將;將16384(4

3、000h)左移)左移2位位 ;后與累加器內容相加,結果保存在累加器中;后與累加器內容相加,結果保存在累加器中 長立即數尋址方式舉例長立即數尋址方式舉例第第2個指令字為個指令字為長立即操作數長立即操作數第第1個指令字為個指令字為指令操作碼指令操作碼和和移位數移位數雙字指令字的第雙字指令字的第2個指令字包含個指令字包含了指令所使用的一個常數了指令所使用的一個常數(4000h)移位位數移位位數=2長立即尋址方式下的長立即尋址方式下的ADD指令操作碼指令操作碼二、直接尋址方式二、直接尋址方式 由指令直接給出操作數所在地址。由指令直接給出操作數所在地址。頁內偏移地址頁內偏移地址指令操作碼、移位數等指令操

4、作碼、移位數等指明尋址方式為直指明尋址方式為直接尋址方式接尋址方式 存儲器地址被分成兩部分: 指令字包括數據存儲器地址的低指令字包括數據存儲器地址的低7位,即頁內偏位,即頁內偏移量;移量; 頁面的指示則由存儲器頁指針頁面的指示則由存儲器頁指針DP給出給出,DP包含數據存儲器地址的高9位。 這樣合成地址就是16位。因此指令并沒有直接給出所有16位數據寄存器地址。n數據存儲器被分為512頁頁,頁面由DP指定;每1頁包含頁包含128個字個字,頁內位置由指令字給出。n由于直接尋址方式中頁面地址由數據指針DP直接給出,因此每每次尋址操作只能次尋址操作只能在一頁進行在一頁進行(128個字的地址變化范圍),

5、若超過此范圍,若超過此范圍,必須必須重新設置重新設置數數據指針據指針DP。 直接尋址操作步驟直接尋址操作步驟n 1、設置數據頁、設置數據頁n 2、指明偏移量、指明偏移量 例如: LDP 19h ADD 4h舉例n在數據存儲器209h處的內容為 0 x32 (32h),ACC的內容為 0 x08,使209h內容左移5位后與ACC累加,問指令執(zhí)行后ACC = ? n若使用直接尋址方式,如何編程?如何編程?解答209h 80h, (80h=27)而209h = 0000 0010 0000 1001,故低7位地址為:09h,高位地址為:04h。相應指令可寫為:LDP #04hADD 09h,5三、間

6、接尋址方式三、間接尋址方式n數據存儲器地址由輔助寄存器數據存儲器地址由輔助寄存器ARn間接給出間接給出。n 這種尋址方式中,使用的輔助寄存器是當前輔助當前輔助寄存器寄存器,由由輔助寄存器指針ARP指定指定,ARn=AR(ARP)。如ARP=2,則使用的地址寄存器就是AR2,如圖示。 因為輔助寄存器ARn為16位,因此這種方式中,數據存儲器的16位地址是由ARn全部給出的,即間接尋址方間接尋址方式可進行全部數據存式可進行全部數據存儲器范圍的尋址儲器范圍的尋址。指明下一個指明下一個AR指令操作碼、移位數指令操作碼、移位數指明尋址方式為間接尋址方式指明尋址方式為間接尋址方式指明當前指明當前AR(即(

7、即ARP)是否改變:)是否改變:N=0 不發(fā)生改變;不發(fā)生改變;N=1 發(fā)生改變發(fā)生改變間接尋址操作步驟間接尋址操作步驟 TMS320C24x中八個輔助寄存器(AR0-AR7)提供了靈活而強大的間接尋址能力,在使用時,包括:1、設置輔助寄存器指針(、設置輔助寄存器指針(ARP)2、指明間接尋址選項(、指明間接尋址選項( * , *+ , *- , *0+ , *0- 等)等)3、指明下一個輔助寄存器、指明下一個輔助寄存器(可選可選)例如: MAR *,AR1 ADD *+,AR4 間接尋址方式中的指令是以符號間接尋址方式中的指令是以符號“ * * ”為標志的為標志的ARn和和ARP的指定的指定

8、 輔助寄存器指針ARP指定當前輔助寄存器AR(ARP),而ARP的值則可直接通過修改狀態(tài)寄存器ST0相應位來加載,但更方便的是使用使用MAR指令和指令和LARP指令指令。例如:n MAR *,AR0 ;ARP=0n LARP 1 ;ARP=1運算操作 功 能 描 述 * AR(ARP)的內容作為數據存儲器地址,操作后 AR(ARP)值不變。 *+ AR(ARP)的內容作為數據存儲器地址,操作后 AR(ARP)值改變:AR(ARP)+ 1 AR(ARP) 。 *- AR(ARP)的內容作為數據存儲器地址,操作后 AR(ARP)值改變:AR(ARP) 1 AR(ARP) 。 間接尋址選項間接尋址選

9、項*0+ AR(ARP)的內容作為數據存儲器地址,操作后 AR(ARP)值改變:AR(ARP)+ AR0 AR(ARP) 。 *0- AR(ARP)的內容作為數據存儲器地址,操作后 AR(ARP)值改變:AR(ARP) AR0 AR(ARP) 。 *BR0+ AR(ARP)的內容作為數據存儲器地址,操作后 AR(ARP)值改變:AR(ARP) AR0 AR(ARP) 。 (相加時按反向進位向右進位) *BR0- AR(ARP)的內容作為數據存儲器地址,操作后 AR(ARP)值改變:AR(ARP) AR0 AR(ARP) 。 (相減時按反向借位向右借位) 逆向進位逆向進位法加法加AR0的內容的內

10、容逆向借位逆向借位法減法減AR0的內容的內容舉例舉例 n ADD*BR0+,12,AR2n 指令執(zhí)行前,AR0 = 08h,ARP = 4,AR4 = 329h,AR2 = 304h; 數據存儲器329h單元內容329h = 123h,ACC = 456h,指令操作見圖示當前當前AR的內容向左的內容向左移的位數移的位數下次使用的當前輔下次使用的當前輔助寄存器助寄存器正向進位法加正向進位法加ACC的內容的內容逆向進位法加逆向進位法加AR0的內容的內容指令執(zhí)行前指令執(zhí)行前指令執(zhí)行后指令執(zhí)行后 常用的修改輔助寄存器內容的指令有: LAR 直接將操作數指定的內容裝入AR ADRK 將當前AR加上一個立

11、即數 SBRK 將當前AR減去一個立即數 MAR 將當前AR加1、減1或加、減一個變址量例如:LAR AR0,#876h ADRK #80h ;將當前輔助寄存器的內容與80h相 ;加,結果保存到當前輔助寄存器中。 MAR *,AR5 ;將當前輔助寄存器的內容加1, ;并將5送到ARP,ARP原來的值送到ARB間接尋址是有效的尋址方式n間接尋址方式是一種非常特別而又非常有效的尋址方式,在這種尋址方式的操作中,除給出當前操作除給出當前操作數地址外,還可對當前輔助寄存器數地址外,還可對當前輔助寄存器AR(ARP)進)進行修改,并給出下次的當前輔助寄存器行修改,并給出下次的當前輔助寄存器(即對ARP修

12、改)。這樣,在進行數據處理運算時,尋址不會造成額外的周期產生,這對實時信號處理非常重要。 尋址方式考慮n在實際編程中采用哪種尋址方式要考慮存儲器容存儲器容量量,程序對速度的要求程序對速度的要求,以及指令的簡便易讀程指令的簡便易讀程度度等方面因素。n在對數據塊、流的處理中對數據塊、流的處理中,基于間接尋址的操作,一般效率更高,因其地址的變更是不額外耗時的。另外,間接尋址中的位反轉(反向進位)特性特間接尋址中的位反轉(反向進位)特性特別適合于別適合于FFT算法算法。n對固定單元的尋址,采用直接尋址方式更簡單。4.3 C2000指令系統(tǒng)簡介指令系統(tǒng)簡介nC2xx DSP中共有匯編語言指令匯編語言指令

13、88條,分成條,分成6類類:累加器、算術和邏輯指令累加器、算術和邏輯指令26條條如:ADD、LACC、AND輔助寄存器和數據頁面指針指令輔助寄存器和數據頁面指針指令7條條如:MAR、LAR等TREG、PREG和乘法指令和乘法指令20條條如:LT、MTY、PAC等分支、調用指令分支、調用指令12條條如:B、BCND、INTR等控制指令控制指令15條條如:SPM、POP、BIT等存儲器和存儲器和I/O操作指令操作指令8條條如:BLDD、SPLK、TBLR等注注:有些指令助記符是增強性指令有些指令助記符是增強性指令,對應于幾條簡單指令(機器碼),如:ADD可完成ADD,ADDH,ADDK和ADLK等

14、功能,這樣做可使程序更簡潔并易讀。 參見:參見:TMS320C20 x用戶用戶指南指南.pdf 第第6、7章章4.3.1 指令格式指令格式 n指令格式如下表示: 指令助記符指令助記符指令操作數指令操作數n指令助記符就是88條匯編語言指令助記符,而指令操作數的表示法則比較復雜,對應于三種尋址方式,有三種操作數格式。 (1)直接尋址方式操作時)直接尋址方式操作時n 指令助記符指令助記符dma ,shiftn 或: 指令助記符指令助記符 dma,16n其中dma為直接尋址時的數據存儲器地址為直接尋址時的數據存儲器地址(即頁內偏移地(即頁內偏移地址址7位),位),匯編語言中若直接使用符號地址直接使用符

15、號地址,則可自動截自動截取取全符號地址16位的低低7位位(而符號地址對DP賦值時則把高高9位截取給位截取給DP),這給編程帶來方便。shift為左移位為左移位數指定數指定,shift = 0 15。“ ”為可選項。n如:ADD28,9n ADD28H,16 (2)間接尋址方式操作時)間接尋址方式操作時n 指令助記符指令助記符 indind ,shiftshift,ARnARnn或:或: 指令助記符指令助記符 indind,1616,ARnARn n其中其中indind表示間接尋址方式表示間接尋址方式,可選,可選P158 P158 表表4.14.1的的7 7種操作方式之一;種操作方式之一;ARn

16、ARn為第為第n n個輔助寄存器個輔助寄存器,n = n = 0 0 7 7?!?” ”為可選項。為可選項。n如:如: ADDADD* *0+0+,1414,AR3AR3n ADD ADD* *BR0BR0,16 16 (3)立即尋址方式操作時)立即尋址方式操作時n 指令助記符指令助記符#Kn或: 指令助記符指令助記符#lk,shiftn其中,符號符號“#”表示立即操作數表示立即操作數,k為8位短立即數,lk為為16位長立即數位長立即數,在長立即數指令中,允許移位(預定標)。n如指令:ADD #23n ADD #1234h,5 1、 加載累加器指令加載累加器指令(1)LACC:ACC裝入數據裝

17、入數據直接尋址直接尋址:LACC dma,shift dma 指定的數據存儲器地址單元的數據經左移shift位后裝入ACC,shift=015,shift=0時可不寫;直接尋址直接尋址: LACC dma,16 dma 指定的數據存儲器地址單元的數據經左移16位后裝入ACC4.3.2 幾條常用指令簡介幾條常用指令簡介LACC直接尋址舉例直接尋址舉例LDP#05hSPLK#0a5a5h,35hSPLK#05a5ah,05hLACC05h,7*頁指針DP=05,指向280h開始的一頁(128字節(jié))即使用B0塊的后一頁;實際尋址單元為285h。05a5ah為正數,因此不用關心SXM。 間接尋址間接尋

18、址:LACC ind,shift,ARn 或:LACC ind,16,ARnn 當前輔助寄存器AR(ARP)內容指定的數據存儲器地址單元的數據經左移shift或16位后裝入ACC,shift=015,shift=0時可不寫;n 同時,ARAU按ind指定的方式進行運算,ind可按要求在7種方式中選用;n 并且,可更改下一指令的當前輔助寄存器,即修改ARP。若重新指定下一指令的當前輔助寄存器ARn,則將其列出,否則不寫。注:左移時受SXM的影響,若SXM=0,則高位填入0;若SXM=1,則高位作符號擴展。低位自動填入0LACC間接尋址舉例間接尋址舉例LDP#05hSPLK#0a5a5h,35hM

19、AR*,AR3LARAR3,#02b5hLARAR0,#0123hLACC*0+,16,AR6*頁指針DP=05,指向280h開始的一頁(128字節(jié))即使用B0塊的后一頁;實際尋址單元為2b5h。無符號數0a5a5h為正數,有符號則為負數,要關注SXM立即尋址立即尋址: LACC #lk,shift長立即數經左移shift位后裝入ACC,shift=015,shift=0時可不寫;LACC立即尋址舉例立即尋址舉例LDP#05hSPLK#0a5a5h,35hMAR*,AR3LARAR3,#02b5hLARAR0,#0123hLACC#1234h,15*1234h=01 0010 0011 010

20、0b 左移15位0 1001 0001 1010 0000 0000 0000 0000 b=91a0000hACCLACL:ACCL裝入數據,裝入數據,ACCH=0直接尋址直接尋址:LACL dma dma 指定的數據存儲器地址單元的數據裝入ACCL,而ACCH則填入0。立即尋址立即尋址:LACL #k短立即數裝入ACCL,而ACCH則填入0。將數據裝入將數據裝入ACC的低位,的低位,ACC的高位的高位填填0。LACT:先左移(移位位數由:先左移(移位位數由TREG指定),然后指定),然后將將ACC裝入數據裝入數據有直接和間接兩種尋址方式,除移位不是由程序除移位不是由程序指令字直接指定外,其

21、余同指令字直接指定外,其余同LACC。操作數由操作數由TREG3:0指定左移位數。指定左移位數。LACT直接尋址舉例直接尋址舉例LDP#05hSPLK#0a5a5h,35hSPLK#05a5ah,05hLT35hLACT 05h*頁指針DP=05,指向280h開始的一頁(128字節(jié))即使用B0塊的后頁;實際尋址單元為285h。05a5ah為正數,因此不用關心SXM。LACT間接尋址舉例間接尋址舉例LDP#05hSPLK#0a5a5h,35hMAR*,AR3LARAR3,#02b5hLARAR0,#0123hLT #0abcdhLACT*0-,AR6*頁指針DP=05,指向280h開始的一頁(1

22、28字節(jié))即使用B0塊的后頁;實際尋址單元為2b5h。無符號數0a5a5h為正數,有符號則為負數,要關注SXMLACT立即尋址舉例立即尋址舉例LDP#05hSPLK#0a5a5h,35hSPLK#0b842h,36hMAR*,AR3LARAR3,#2b5hLT*+;Treg=a5a5hLARAR0,#0123hLACT #1234h;T3:0=5*1234h=01 0010 0011 0100b 左移5位010 0100 0110 1000 0000 b=24680hACC2、保存累加器值指令、保存累加器值指令(1)SACL:保存:保存ACC低半部分到數據存儲器低半部分到數據存儲器有兩種尋址方

23、式直接尋址直接尋址:SACL dma,shift2間接尋址間接尋址:SACL ind,shift2,ARn 將ACC內容經左移shift2位,然后將ACCL保存到DP:dma/或ind指定的數據存儲器地址單元中去,shift2=07,shift2=0時可不寫;注:該指令不影響狀態(tài)標志位,左移時低位補0,高位丟棄。 (2)SACH:保存:保存ACC高半部分到數據存儲器高半部分到數據存儲器有兩種尋址方式:直接尋址直接尋址:SACH dma,shift2間接尋址間接尋址:SACH ind,shift2,ARn 將ACC內容經左移shift2位,然后將ACCH保存到DP:dma/或ind指定的數據存儲

24、器地址單元中去,shift2=07,shift2=0時可不寫;注:該指令不影響狀態(tài)標志位,左移時低位補0,高位丟棄。加載和存儲的區(qū)別加載和存儲的區(qū)別裝入到ACC中裝入到P寄存器中裝入到T寄存器中裝入到DP/ST/AR/ARP裝入長立即數裝載裝載指令指令Load裝入裝入寄存寄存器器LACCLPHLTLDPLACLLTALSTLACTLTDLARZALRLTPLARPLTS存儲存儲指令指令Store存入存入存儲存儲器器SACHSPHSSTSPLKSACLSPLSAR把ACC存入把P寄存器存入把T寄存器存入把DP/ST/AR/ARP/PM寄存器存入存入長立即數3、累加器加法、累加器加法ADD,有間接

25、、直接、立即,有間接、直接、立即 3種尋址方式由間接、直接尋址間接、直接尋址指定的數據存儲器地址單元的數據經左移shift/或16位后與與ACC累加累加,結果回送結果回送ACC;shift=015,shift=0時可不寫。對間接尋址間接尋址同時,ARAU按ind指定的方式進行運算,ind可按要求在7種方式中選用;并且,可更改下一指令的當前輔助寄存器,即修改ARP。若重新指定下一指令的當前輔助寄存器ARn,則將其列出,否則不寫。 注:左移時受符號擴展位SXM的影響:若SXM=0,則高位填入0;若SXM=1,則高位作符號擴展。低位自動填入0。執(zhí)行該指令時會影響進位位會影響進位位C和溢出位和溢出位O

26、V,且溢出時受溢出模式OVM影響。運算產生進位時,一般將進位位C置位;不產生進位時,則將進位位C清0。但在進行高16位加(左移16位后累加)時,若產生進位則C置位,如無進位則不影響進位位C。LDP#05hSPLK#0a5a5h,35hSPLK#05a5ah,05hLACC 05h,7ADD035h,9*頁指針DP=05,指向280h開始的一頁(128字節(jié))即使用B0塊的后頁;實際尋址單元為285h/2b5h。其它加法指令其它加法指令ADDC:帶進位位累加器加法:帶進位位累加器加法 ADDS:無符號數的累加器加法:無符號數的累加器加法 ADDT:TREG指定移位的累加器加法指定移位的累加器加法這

27、幾種加法有直接和間接兩種尋址方式,其余和ADD指令類似 4、累加器減法指令、累加器減法指令累加器減法指令有多條:累加器減法指令有多條:SUB、SUBB、SUBS、SUBT 、 SUBC這些指令除完成減法運算外,類似于累加器加法指令。SUBC是是條件減法條件減法指令,很特殊。指令,很特殊。條件減法條件減法SUBC:當當ACC和操作數均為正數時有效。和操作數均為正數時有效。兩種尋址方式:直接直接:SUBC dma 間接間接:SUBC ind,ARn ACC減去經左移減去經左移15位后的指定的數據存儲器地址位后的指定的數據存儲器地址單元的數據,結果送單元的數據,結果送ALU;若若ALU非負,則非負,

28、則ALU左左移移1位后加位后加1送送ACC;若為負數,則將原來的;若為負數,則將原來的ACC左移左移1位后送位后送ACC。執(zhí)行該指令時會影響進位位C和溢出位OV,但不受溢出模式OVM影響,ACC不會因為溢出而飽和。運算產生借位時,將進位位C清0;不產生借位時,則將進位位C置位。5、邏輯運算指令、邏輯運算指令nAND 將累加器的內容和被尋址的數據單元內容作“邏輯與”,結果送累加器nOR 將累加器的內容和被尋址的數據單元內容作“邏輯或”,結果送累加器nXOR 異或nCMPL ACC取反(對累加器中的內容邏輯取反)nNEG ACC取補(換成ACC的相反數,即(ACC)(1)(ACC)6、加載輔助寄存

29、器指令、加載輔助寄存器指令直接尋址直接尋址:LAR ARx,dma間接尋址間接尋址:LAR ARx,ind,ARn 立即尋址立即尋址:LAR ARx,#k 或 LAR ARx,#lk指定的操作數裝入ARx,x=07。注:該指令不影響狀態(tài)標志位,按無符號數 方式操作。7、加載數據頁指針、加載數據頁指針直接尋址:直接尋址:LDP dmaLDP dma間接尋址:間接尋址:LDP ind,ARnLDP ind,ARn 立即尋址:立即尋址:LDP #kLDP #k(短立即數:(短立即數:9 9位)位)指定的操作數裝入指定的操作數裝入DPDP注:該指令不影響狀態(tài)標志位,按無符號數方注:該指令不影響狀態(tài)標志

30、位,按無符號數方式操作。式操作。8、與乘法有關的指令、與乘法有關的指令 (1)MPY:操作數與操作數與TREG乘法指令乘法指令 直接尋址直接尋址:MPY dma 間接尋址間接尋址:MPY ind,ARn 立即尋址立即尋址:MPY #k 指定的操作數與指定的操作數與TREG相乘,結果送相乘,結果送PREG。注: 短立即數時進行符號擴展而不管SXM的值。該指令不影響狀態(tài)標志位。 例: mpy *br0+,ar3(2)MPYU無符號乘法指令無符號乘法指令操作數與操作數與TREG無符號乘法指令無符號乘法指令 直接尋址直接尋址:MPYU dma 間接尋址間接尋址:MPYU ind,ARn 指定的操作數(

31、無符號數)與TREG無符號數相乘,結果送PREG。 注:該指令不影響狀態(tài)標志位。(3)MPYA指令指令 操作數與操作數與TREG相乘并累加前乘積指令相乘并累加前乘積指令 直接尋址直接尋址:MPYA dma間接尋址間接尋址:MPYA ind,ARn (ACC)+ 移位后的PREG ACC,數據存儲器地址單元的數據 x (TREG)PREG注:移位時受PM的影響,執(zhí)行該指令時會影響進位位C和溢出位OV,且溢出時受溢出模式OVM影響運算產生進位時,將進位位C置位;不產生進位時,則將進位位C清0。(4)MPYS指令指令操作數與操作數與TREG相乘且累加器減去前乘積指令相乘且累加器減去前乘積指令 直接尋

32、址直接尋址:MPYS dma 間接尋址間接尋址:MPYS ind,ARn (ACC)- 移位后的PREG ACC,數據存儲器地址單元的數據 x (TREG)PREG,注:移位時受PM的影響,執(zhí)行該指令時會影響進位位C和溢出位OV,且溢出時受溢出模式OVM影響。運算產生借位時,將進位位C清0;不產生借位時,則將進位位C置位。 (5)MAC指令直接尋址指令直接尋址兩個操作數相乘并累加前乘積指令兩個操作數相乘并累加前乘積指令 直接尋址直接尋址:MAC pma,dma(PC)MSTACK, pma PC,(ACC)+ 移位后的PREG ACC,數據存儲器地址單元dma的數據 TREG,(TREG)x

33、程序存儲器地址單元pma的數據PREG(PC)+ 1 PC clrcSXMsetcOVMlacc#0ldp#10hspm00rpt#31mac7000h, 00hsacl*+sach*+n注:執(zhí)行該指令時會影響進位位C和溢出位OV,且溢出時受溢出模式OVM影響。 運算產生進位時,將進位位C置位;不產生進位時,則將進位位C清0。MAC指令間接尋址指令間接尋址 兩個操作數相乘并累加前乘積指令兩個操作數相乘并累加前乘積指令 間接尋址:間接尋址:MAC pma,ind,ARn(PC)MSTACK,pma PC,(ACC)+ 移位后的PREG ACC,(PC)+ 1 PC,輔助寄存器指定數據存儲器地址單

34、元的數據TREG,(TREG)x 程序存儲器地址單元pma的數據PREG。(6)MACD指令指令帶數據移動的兩個操作數相乘并累加前乘積指令帶數據移動的兩個操作數相乘并累加前乘積指令 直接尋址直接尋址:MACD pma,dma 間接尋址間接尋址:MACD pma,ind,ARn (PC)MSTACK,pma PC,(ACC)+ 移位后的PREG ACC,(PC)+ 1 PC,輔助寄存器指定數據存儲器地址單元的數據 TREG,(TREG)x 程序存儲器地址單元pma的數據PREG, AR(ARP) AR(ARP) + 1數據存儲器地址單元。 特殊指令:APAC Add Preg to ACCSPA

35、C Sub Preg from ACC9、分支和調用指令、分支和調用指令(1)無條件分支(跳轉)無條件分支(跳轉) (只有一種尋址方式)間接尋址間接尋址:B pma,ind,ARn pma PC,程序無條件跳轉到由pma指定的程序存儲器地址單元處執(zhí)行;同時,ARAU按ind指定的方式進行運算,ind可按要求在7種方式中選用;并且,可更改下一指令的當前輔助寄存器,即修改ARP。若重新指定下一指令的當前輔助寄存器ARn,則將其列出,否則不寫。 注:該指令不影響狀態(tài)標志位。pma為程序存儲器地址,16位。 帶間接尋址無條件分支帶間接尋址無條件分支larar0,#102chmar*,ar0sacl*b

36、backnt,*+,ar1lacl*,16,ar0backnt: add*larar0,#1038h(2)BACC無條件分支(跳轉)到無條件分支(跳轉)到ACCL指定的程序地址處執(zhí)指定的程序地址處執(zhí)行行,表示如下:BACCACCL PC,程序無條件跳轉到由ACCL指定的程序存儲器地址單元處執(zhí)行。注:該指令不影響狀態(tài)標志位。BACC舉例舉例lacl61hadd800hsacl62hlarar0,62hbacc ;跳轉到;跳轉到ACCL指定的程序處執(zhí)行指定的程序處執(zhí)行xyz:sacl*,3,ar6quitnmi:sach*,7,ar3clrcINTMret(3)BANZ 當前輔助寄存器非當前輔助寄

37、存器非0分支(跳轉),分支(跳轉),只有一種尋址方式:間接尋址間接尋址:BANZ pma,ind,ARn 當前輔助寄存器AR(ARP)非0,則pmaPC,程序跳轉到由pma指定的程序存儲器地址單元處執(zhí)行;否則順序往下執(zhí)行。同時,ARAU按ind指定的方式進行運算,ind可按要求在7種方式中選用;并且,可更改下一指令的當前輔助寄存器,即修改ARP。若重新指定下一指令的當前輔助寄存器ARn,則將其列出,否則不寫。 注:該指令不影響狀態(tài)標志位。間接尋址間接尋址BANZ舉例舉例ckntiii2:lacl61hand#0180hxor#0180hbanz quitnmi,*,ar0lacl61hand#

38、007fhlarar0,#101ehsacl* quitnmi:clrcINTMret(4)BCND條件分支(跳轉),條件分支(跳轉),表示如下:BCND pma,cond1,cond2,.當所有條件都滿足時,則pmaPC,程序跳轉到由pma指定的程序存儲器地址單元處執(zhí)行;否則順序往下執(zhí)行。注:該指令不影響狀態(tài)標志位。 間接尋址條件分支間接尋址條件分支bcnd舉例舉例add *+,ar1lar ar1,*,ar3lar ar0,#55aahcmpr 00bcnd SYRJi0,NTC,C,OVNSYRJi0:lar ar1,#800hb ntproci0SYRJi0:lar ar1,#200h

39、(5)CALL 無條件調用子程序無條件調用子程序,有一種尋址方式: 間接尋址間接尋址:CALL pma,ind,ARnPC+2 TOS,pma PC,下一指令地址進棧,程序無條件跳轉到由pma指定的子程序處執(zhí)行;同時,ARAU按ind指定的方式進行運算,ind可按要求在7種方式中選用;并且,可更改下一指令的當前輔助寄存器,即修改ARP。若重新指定下一指令的當前輔助寄存器ARn,則將其列出,否則不寫。 注:該指令不影響狀態(tài)標志位。(6)CALA無條件調用無條件調用ACCL指定的子程序指定的子程序,表示如下:CALAPC+2 TOS,ACCL PC,下一指令地址進棧,程序無條件跳轉到由ACCL指定

40、的子程序處執(zhí)行。注:該指令不影響狀態(tài)標志位。(7)CC條件調用子程序條件調用子程序,表示如下:CC pma,cond1,cond2,.當所有條件都滿足時,則PC+2 TOS, pma PC,下一指令地址進棧,程序跳轉到由pma指定的子程序處執(zhí)行。否則順序往下執(zhí)行。注:該指令不影響狀態(tài)標志位。 間接尋址調用間接尋址調用mar*,ar0calladcproc,*+,ar1add*-,4,ar2cala ;調用ACCL指定的程序ccdacout,BIO,Cadcproc: bldd*+,8000hdacout:(8)無條件返回)無條件返回無條件返回無條件返回,表示如下:RET(TOS) PC,棧頂彈

41、出下一指令地址,程序無條件從子程序(或中斷服務程序)返回。注:該指令不影響狀態(tài)標志位。(9)RETC:條件返回:條件返回RETC:條件返回:條件返回,表示如下:RETC cond1,cond2,.當所有條件都滿足時,(TOS) PC,棧頂彈出下一指令地址,程序從子程序(或中斷服務程序)返回;否則順序往下執(zhí)行。注:該指令不影響狀態(tài)標志位。RET/RETCNSYRJi0:retcBIO,CSYSRJi0:retnBIT dma, bit_code BIT ind, bit_code ,ARn 測試第測試第15- bit_code位位 例:例: BIT *,0,AR1 測試當前AR指向的數據單元中的

42、最高位(即第15-0=15位)nBITT dma BITT ind ,ARn 同上,但測試的位由同上,但測試的位由Treg指定指定10、位操作指令、位操作指令11、塊操作指令、塊操作指令(1)BLDD:數據塊傳送指令:數據塊傳送指令 源為長立即數,直接尋址源為長立即數,直接尋址: BLDD #lk,dma源為長立即數,間接尋址源為長立即數,間接尋址: BLDD #lk,ind,ARn目的為長立即數,直接尋址目的為長立即數,直接尋址:BLDD dma,#lk目的為長立即數,間接尋址目的為長立即數,間接尋址:BLDD ind,#lk,ARn (PC)MSTACK,lk PC,(源)目的;(PC)+

43、 1 PC。源源地地址址目目的的地地址址; FFT CODE WITH BIT-REVERSED INPUT SAMPLES / ARP=AR3 / DP=0; transfer 2*N input data from INPUT to BUFFERFFT: lar ar3,DATAADD lar ar0,NN ; indexregister = N rpt #255 bldd #INPUT,*BR0+ rpt #255 bldd #INPUT+100h,*BR0+ rpt #255 bldd #INPUT+200h,*BR0+ rpt #255 bldd #INPUT+300h,*BR0+(

44、2)BLPD指令指令程序存儲器到數據存儲器的塊傳送指令程序存儲器到數據存儲器的塊傳送指令源為長立即數,源為長立即數,直接尋址直接尋址:BLPD #pma,dma(PC)MSTACK, pma PC,(源)目的;(PC)+ 1 PC。源為長立即數,源為長立即數,間接尋址間接尋址:BLPD #pma,ind,ARn(PC)MSTACK,pma PC,(源)目的;(PC)+ 1 PC。 (3)DMOV:數據移動指令:數據移動指令直接尋址:直接尋址:DMOV dma數據單元數據單元dmadma的數據的數據 數據存儲器地址數據存儲器地址dma+1dma+1單元。單元。間接尋址:間接尋址:DMOV ind

45、,ARnARAR(ARPARP) AR AR(ARPARP) + 1 + 1數據存儲器單元。數據存儲器單元。* arp=1, ar1=1000h,1000h=ADC后的要處理數據Repeat: lacc #0 lt #0 mpy #0 spm 00 rpt #63 mac codaddr,*+;acc += di * ci mar *- rpt #63 dmov *- adrk ar1, #1 banz repeat, *+ codaddr:.set $ .word -32124 (4)TBLR:表讀指令:表讀指令 直接尋址直接尋址:TBLR dma(PC)MSTACK,(ACCL) PC,(源)目的;(PC)+ 1 PC。程序計數器PC裝入微堆棧MSTACK;累

溫馨提示

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

評論

0/150

提交評論