




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第四章TMS320C20X的指令系統(tǒng)及匯編語言第一節(jié)尋址方式第二節(jié)指令系統(tǒng)第三節(jié)匯編語言第四章TMS320C20X的指令系統(tǒng)及匯編語言第一節(jié)1第一節(jié)TMS320C200的尋址方式1.尋址方式:就是尋找參加指令運行的操作數(shù)的方法。2.操作數(shù)主要包括:寄存器地址、常數(shù)、I/O口、指針、偏移量、數(shù)據(jù)存儲器地址等第一節(jié)TMS320C200的尋址方式1.尋址方式:就是尋21.立即數(shù)尋址2.直接尋址3.間接尋址尋址分類1.立即數(shù)尋址尋址分類3
1.立即數(shù)尋址
在操作數(shù)前面需要加#字號來說明該操作數(shù)為立即數(shù)。否則會把該操作數(shù)誤認(rèn)為是一個地址,從而把立即數(shù)尋址變成直接地址尋址。
特點指令中包含有執(zhí)行指令所需要的操作數(shù)。短立即尋址:立即數(shù)為8、9位或13位的短立即數(shù);長立即尋址:16位的長立即數(shù)短立即數(shù)可包含在單字或雙字指令中,長立即數(shù)在雙字指令中。
注意舉例ADD#55HADD#1111,11.立即數(shù)尋址在操作數(shù)前面需要加#字號來說明該操作數(shù)4可以在不改變DP的情況下,隨機地尋址128個存儲單元中的任何一個單元。
用一個符號或一個常數(shù)來確定7位偏移值,與DP共同形成16位的數(shù)據(jù)存儲器實際地址。2.直接尋址方法LDP#14HADD5H舉例特點可以在不改變DP的情況下,隨機地尋址128個存儲單元中的任何500000000000000000000000011111111000000010000000000000001111111110000001000000000000000101111111111111111000000001111111111111111DP值偏移量第0頁:0000~007FH第1頁:0080~00FFH第2頁:0100~017FH第511頁:FF80~FFFFH數(shù)據(jù)存儲器00000000000000000000000067位dma域與9位的DP相結(jié)合形成16位的數(shù)據(jù)存儲器地址。8MSBs07LSBS7MSBs9LSBsDP指令寄存器IR狀態(tài)寄存器ST0頁9LSBs偏移量7LSBs16位數(shù)據(jù)存儲器地址DP值是從0~511(29-1),以DP為基準(zhǔn)的直接尋址把存儲器分成512頁,7位的dma范圍從0~127,每頁有128個可訪問的單元。7位dma域與9位的DP相結(jié)合形成16位的數(shù)據(jù)存儲器地址。7使用直接尋址方式設(shè)置數(shù)據(jù)頁指明偏移量LDP#32ADD1H使用直接尋址方式設(shè)置數(shù)據(jù)頁指明偏移量LDP#32AD83.間接尋址
方法特點(AR0~AR7)→ARAU→16位無符號算術(shù)運算→尋址范圍為64K
靈活多變且功能強大,提供7種間接尋址方式3.間接尋址方法特點(AR0~AR7)→靈活多變且功能強大9不增量或不減量方法舉例指令使用AR內(nèi)容作為數(shù)據(jù)存儲器地址,執(zhí)行指令后AR內(nèi)容保持不變。LT*執(zhí)行指令前:ARP=0,(AR0)=100H執(zhí)行操作:用AR0所指的數(shù)據(jù)存儲器100H內(nèi)容裝載暫時寄存器;執(zhí)行指令后:ARP=0,(AR0)=100H不增量或不減量方法舉例指令使用AR內(nèi)容作為數(shù)據(jù)存儲器地址,10增1方法舉例指令使用AR內(nèi)容作為數(shù)據(jù)存儲器地址,執(zhí)行指令后AR內(nèi)容自動加1。LT*+執(zhí)行指令前:ARP=0,(AR0)=100H執(zhí)行操作:用AR0所指的數(shù)據(jù)存儲器100H內(nèi)容裝載暫時寄存器;執(zhí)行指令后:ARP=0,(AR0)=101H增1方法舉例指令使用AR內(nèi)容作為數(shù)據(jù)存儲器地址,執(zhí)行指令后11減1方法舉例指令使用AR內(nèi)容作為數(shù)據(jù)存儲器地址,執(zhí)行指令后AR內(nèi)容自動減1。LT*-執(zhí)行指令前:ARP=0,(AR0)=100H執(zhí)行操作:用AR0所指的數(shù)據(jù)存儲器100H內(nèi)容裝載暫時寄存器;執(zhí)行指令后:ARP=0,(AR0)=FFH減1方法舉例指令使用AR內(nèi)容作為數(shù)據(jù)存儲器地址,執(zhí)行指令后A12加上索引量方法舉例指令使用AR內(nèi)容作為數(shù)據(jù)存儲器地址,執(zhí)行指令后AR內(nèi)容加上AR0的內(nèi)容。LT*0+執(zhí)行指令前:ARP=1,(AR1)=100H,(AR0)=3執(zhí)行操作:用AR1所指的數(shù)據(jù)存儲器100H內(nèi)容裝載暫時寄存器;執(zhí)行指令后:ARP=1,(AR1)=103H加上索引量方法舉例指令使用AR內(nèi)容作為數(shù)據(jù)存儲器地址,執(zhí)行指13減去索引量方法舉例指令使用AR內(nèi)容作為數(shù)據(jù)存儲器地址,執(zhí)行指令后AR內(nèi)容自動減去ARO的內(nèi)容。LT*0-執(zhí)行指令前:ARP=1,(AR1)=100H,(AR0)=3執(zhí)行操作:用AR0所指的數(shù)據(jù)存儲器100H內(nèi)容裝載暫時寄存器;執(zhí)行指令后:ARP=1,(AR1)=FEH減去索引量方法舉例指令使用AR內(nèi)容作為數(shù)據(jù)存儲器地址,執(zhí)行指14加上索引量,反向進(jìn)位方法舉例指令使用AR內(nèi)容作為數(shù)據(jù)存儲器地址,執(zhí)行指令后AR內(nèi)容自動加上AR0的內(nèi)容,該加法采用反向進(jìn)位方法。注:主要用于FFT算法LT*BR0+加上索引量,反向進(jìn)位方法舉例指令使用AR內(nèi)容作為數(shù)據(jù)存儲器地15把AR0加到輔助寄存器中時,地址以位倒序的方式產(chǎn)生,即進(jìn)位是從左向右,而不是從右向左進(jìn)位。例如:01101000+0000100001100100以8位輔助寄存器為例,AR1表示了在存儲器中數(shù)據(jù)的基地址(01100000)2,AR0的值為(00001000)2。把AR0加到輔助寄存器中時,地址以位倒序的方式產(chǎn)生,即進(jìn)位是16AR1修改循環(huán)值存儲單元地址整序前FFT變換結(jié)果位倒序AR1更新的地址值A(chǔ)R0=000010002整序后PA輸出的FFT變換結(jié)果00000X(0)000001100000X(0)10001X(8)100001101000X(1)20010X(4)010001100100X(2)30011X(12)110001101100X(3)40100X(2)001001100010X(4)50101X(10)101001101010X(5)60110X(6)011001100110X(6)70111X(14)111001101110X(7)81000X(1)000101100001X(8)91001X(9)100101101001X(9)101010X(5)010101100101X(10)111011X(13)110101101101X(11)121100X(3)001101100011X(12)131101X(11)101101101011X(13)141110X(7)011101100111X(14)151111X(15)111101101111X(15)位倒序?qū)FT變換結(jié)果的序號調(diào)整
AR1修改循環(huán)值存儲單整序前FFT變換結(jié)果位倒序AR1更17減去上索引量,反向借位方法舉例指令使用AR內(nèi)容作為數(shù)據(jù)存儲器地址,執(zhí)行指令后AR內(nèi)容自動加上AR0的內(nèi)容,該加法采用反向進(jìn)位方法。LT*BR0-減去上索引量,反向借位方法舉例指令使用AR內(nèi)容作為數(shù)據(jù)存儲器18下一當(dāng)前輔助寄存器的制定方法舉例指令使用AR內(nèi)容作為數(shù)據(jù)存儲器地址,執(zhí)行指令后,下一輔助寄存器被指定為當(dāng)前輔助寄存器MAR*,AR1LT*+,AR2下一當(dāng)前輔助寄存器的制定方法舉例指令使用AR內(nèi)容作為數(shù)據(jù)存儲19第二節(jié)TMS320C2000的匯編指令C2000指令按照功能劃分為6類:累加器、算術(shù)和邏輯指令輔助寄存器指令TREG、PREG和乘法指令轉(zhuǎn)移指令控制指令輸入/輸出指令和存儲器指令第二節(jié)TMS320C2000的匯編指令C2000指令按照功202.1匯編指令集說明1、指令的基本格式操作碼操作數(shù)或操作數(shù)地址指令助記符含義:dma:數(shù)據(jù)存儲器地址的低7位偏移量Pma:16位程序存儲器地址Shift:左移位數(shù):0~15Shift2:左移位數(shù):0~7n:指示下一位輔助寄存器的值:0~7k:8位短立即數(shù)lk:16位長立即數(shù)ind:間接尋址方式中的一種2.1匯編指令集說明1、指令的基本格式操作碼操作數(shù)或操作數(shù)地212、匯編指令名稱助記符指令指令說明尋址方式ADDADDdma[,shift](ACC)+((數(shù)存地址)x2shift)ACC直接尋址ADD#k(ACC)+kACC短立即尋址ADD#lk[,shift](ACC)+lkx2shift)ACC長立即尋址ADDind[,shift][,ARn]間接尋址舉例:ADD*+,1,AR0執(zhí)行指令前執(zhí)行指令后ARPAR4數(shù)據(jù)存儲器302HACC
加法指令:ADDC、ADDS、ADDT減法指令:SUB、SUBB、SUBS、SUBT邏輯指令:AND、OR、XOR、CMPL、NEG累加器指令:LACC、LACL、LACH、SACH、SACL、ROL、ROR、SFL、SFR表2.1累加器、算術(shù)和邏輯指令450302H0303H4440CH2、匯編指令名稱助記符指令22名稱助記符指令指令說明尋址方式ADRkADRk#k(AR)+8位整數(shù)kAR短立即數(shù)尋址BANZBANZPma[,ind][,ARn]AR0不為零轉(zhuǎn)移至Pma間接尋址CMPRCMPRCMAR與AR0進(jìn)行比較LARLARARx,dma直接尋址LARARx,ind[,ARn]間接尋址LARARx,#k短立即尋址LARARx,#lk長立即尋址MARMARdma修改AR值直接尋址MARind[,ARn]間接尋址SBRKSBRK#k(AR)-kAR短立即尋址SARSARARx,dma直接尋址SARARx,ind[,ARn]間接尋址表2.2輔助寄存器指令名稱助記符指令23舉例:LARAR4,#01H指令執(zhí)行前指令執(zhí)行后AR4LARAR6,#3FFFHAR60FF09H0FF09H0H3FFFH舉例:0FF09H0FF09H0H3FFFH24表2.3TREG、PREG和乘法指令名稱助記符指令指令說明尋址方式APACAPAC(ACC)+移位后(PREG)ACCLPHLPHdma裝載PREG直接尋址LPHind[,ARn]間接尋址LTLTdma裝載TREG直接尋址LTind[,ARn]間接尋址LTALTAdma裝載TREG并累加前次乘積直接尋址LTAind[,ARn]間接尋址LTDLTDdma裝載TREG,累加前次乘積,尋址數(shù)據(jù)移動LTDind[,ARn]LTPLTPdma裝載TRGE,并將PREG存至ACCLTPind[,ARn]MACMACpma,dma乘且累加MACpma,ind[,ARn]MACDMACDpma,dma乘且累加,并將被尋址數(shù)據(jù)移至下一單元MACDpma,ind[,ARn]MPYMPYdmaMPYind[,ARn]MPYA/MPYS累加前次乘積,再將TREG與被尋址數(shù)相乘PACPACPREG轉(zhuǎn)入累加器ACCSPH存儲PREG高16位,直接或間接尋址SPL存儲PREG低16位,直接或間接尋址表2.3TREG、PREG和乘法指令名稱助記符指25例1:MAC0FF00H,02H;DP=6,地址300H~37FH,PM=0,CNF=1指令執(zhí)行前指令執(zhí)行后數(shù)據(jù)存儲器數(shù)據(jù)存儲器302H302H程序存儲器程序存儲器FF00HFF00HTREGTREGPREGPREGACCACC23h23h4h4h45h458972h723EC41h23h8Ch76975B3h例1:MAC0FF00H,02H;DP=6,地址326例2:MACD0FF00H,08H;DP=6,地址300H~37FH,PM=0,CNF=1指令執(zhí)行前指令執(zhí)行后數(shù)據(jù)存儲器數(shù)據(jù)存儲器308H308H數(shù)據(jù)存儲器數(shù)據(jù)存儲器309H309H程序存儲器程序存儲器FF00HFF00HTREGTREGPREGPREGACCACC23h23h4h4h45h458972h723EC41h23h8Ch76975B3h18h23h例2:MACD0FF00H,08H;DP=6,地址3027表2.3轉(zhuǎn)移指令名稱助記符指令指令說明尋址方式BBpma[,ind[,ARn]]無條件轉(zhuǎn)移間接尋址BACCBACC轉(zhuǎn)移至累加器低16位指定地址BANZBANZpma[,ind[,ARn]]當(dāng)前AR非零則轉(zhuǎn)移間接尋址BCNDBCNDpma,cond1[,cond2]條件轉(zhuǎn)移CALACALA調(diào)用ACC低16位指定地址處子程序CALLCALLpma[,ind[,ARn]]調(diào)用子程序間接尋址CCCCpma,cond1[,cond2]條件調(diào)用子程序INTRINTR軟中斷NMINMI非屏蔽中斷RETRET從子程序返回RETCRETC條件返回表2.3轉(zhuǎn)移指令名稱助記符指令28例1:BCNDGetMax,LEQ,C如果ACC內(nèi)容小于等于零且進(jìn)位位被置1,則程序地址GetMax被裝入程序計數(shù)器,程序從該地址繼續(xù)執(zhí)行;例2:CCGetMin,LEQ,C如果ACC內(nèi)容小于等于零且進(jìn)位位被置1,則程序地址GetMin被裝入程序計數(shù)器,程序從該地址繼續(xù)執(zhí)行;例1:BCNDGetMax,LEQ,C29條件轉(zhuǎn)移和調(diào)用中的判斷條件Cond條件EQACC=0NEQACC<>0LTACC<0LEQACC<=0GTACC>0GEQACC>=0NCC=0CC=1NOVOV=0OVOV=1NTCTC=0TCTC=1條件轉(zhuǎn)移和調(diào)用中的判斷條件Cond30表2.4控制指令名稱助記符指令指令說明尋址方式BITBITdma,bit對數(shù)據(jù)地址中數(shù)據(jù)指定位測試直接尋址BITind,bit[,ARn]間接尋址CLRCCLRCcontrolbit清零控制位和狀態(tài)位SETCSETCcontrolbit置1控制位和狀態(tài)為LDPLDPdma初始化數(shù)據(jù)頁直接尋址LDPind[,ARn]間接尋址LDP#k立即尋址LSTLST#m,dma初始化狀態(tài)寄存器ST0、ST1直接尋址LST#m,ind[,ARn]間接尋址NOPNOP空操作POPPOP(堆棧)ACC(0..15)POPDPOPDdma(堆棧)數(shù)存地址直接尋址POPDind[,ARn]間接尋址PSHDPSHDdma(數(shù)存地址)堆棧直接尋址PSHDind[,ARn]間接尋址PUSH表2.4控制指令名稱助記符指令31表2.6輸入/輸出和存儲器指令名稱助記符指令指令說明尋址方式BLDDBLDD#lk,dma數(shù)據(jù)存儲器間的塊傳送直接尋址BLDD#lk,ind[,ARn]間接尋址BLDDdma,#lk長立即數(shù)尋址BLDDind,#lk,[ARn]BLPDBPLD#pma,dma程序存儲器到數(shù)據(jù)存儲器直接尋址BPLD#pma,ind[,ARn]間的塊移動間接尋址DMOVDMOVdma(數(shù)據(jù)單元)數(shù)存單元+1直接尋址DMOVind[,ARn]間接尋址ININdma,PA讀入PA端口的內(nèi)容INind,PA[,ARn]OUTOUTdma,PA寫內(nèi)容至端口PAOUTind,PA[,ARn]SPLKTBLRTBLRdma讀表,表首地址放在ACC中TBLRind[,ARn]TBLWTBLWdma寫表,TBLWind[,ARn]表2.6輸入/輸出和存儲器指令名稱32例1:BLDD#300H,20H;DP=6執(zhí)行前執(zhí)行后數(shù)據(jù)存儲器數(shù)據(jù)存儲器300H300H320H320H例2:BLDD*+,#321H,AR3執(zhí)行指令前執(zhí)行指令后ARPARPAR2AR3數(shù)據(jù)存儲器數(shù)據(jù)存儲器301H301H321H321H01h2h23h23h0Fh0Fh302h01h23h01h301h3h例1:BLDD#300H,20H;DP=601h33
例3:BLPD#800H,00H;DP=6指令執(zhí)行前指令執(zhí)行后程序存儲器程序存儲器300H300H數(shù)據(jù)存儲器 數(shù)據(jù)存儲器320H320H例4:BLPD#800H,*,AR7執(zhí)行指令前執(zhí)行指令后ARPARPAR2AR3存儲器存儲器800H800H310H310H
1111h0h0Fh0Fh00h0100h310h1111h0Fh1111h310h7h例3:BLPD#800H,00H;DP=634
例5:TBLRDAT6;DP=6,地址200H~27FH指令執(zhí)行前指令執(zhí)行后ACCACC程序存儲器程序存儲器23H23H數(shù)據(jù)存儲器 數(shù)據(jù)存儲器206H206H例6:BLPD*,AR7執(zhí)行指令前執(zhí)行指令后ARPARPAR0AR0ACCACC存儲器存儲器24H24H300H300H307h0h306h306h75h75h300h75h306h307h300h7h23h23h24h24h例5:TBLRDAT6;DP=6,地址235第3節(jié)DSP的匯編語言及編程TMS320系列DSP的目標(biāo)文件采用公共目標(biāo)文件COFF格式,將指令和數(shù)據(jù)按照段的概念進(jìn)行組織和存儲,增強程序的可讀性,便于程序的移植和模塊化設(shè)計段的定義:段是目標(biāo)文件中的最小單位,所謂段就是通過匯編和連接最終在dsp的存儲映像中占據(jù)連續(xù)空間的一塊代碼或數(shù)據(jù),并且每個段都是獨立的,COFF目標(biāo)文件的段分為兩大類:已初始化段和未初始化段。第3節(jié)DSP的匯編語言及編程TMS320系36COFF的段的定義COFF目標(biāo)文件的段:.text段,該段內(nèi)含可執(zhí)行代碼;定義.data段,該段內(nèi)容已初始化數(shù)據(jù);.bss段,該段是為初始化的數(shù)據(jù)保留空間;.sect,建立一個自定義的并自定義初始化的段;.usect,建立一個自定義但沒有初始化的段;COFF的段的定義COFF目標(biāo)文件的段:37
1..text段
特點建立一個獨立的段,其段名為.text,該段通常包含可執(zhí)行的代碼;舉例.textLDP#06HclrcSXM.text語法1..text段特建立一個獨立的段,其段名為.text382.Data段
特點.data段,建立一個獨立的段,其段名為.data,它包含初始化了的數(shù)據(jù)或常數(shù)。舉例.dataCoeff.word11H,22H,33H.data語法2.Data段特.data段,建立一個獨立的段,其段名393.bss段特點.bss段,建立一個獨立的段,其段名為.bss,它包含未初始化了的數(shù)據(jù)或常數(shù)。舉例.bssvar1,1.bssbuffer,10.bss符號,字?jǐn)?shù)[,塊標(biāo)記]其中,符號指由.bss指令保留的第一個字,他對應(yīng)為變量保留空間的變量名,字?jǐn)?shù)表示空間的大小。語法3.bss段特.bss段,建立一個獨立的段,其段名為.404.sect段
特點.sect段,建立一個自定義并且初始化的段,它包含代碼或數(shù)據(jù)。舉例.sect“var-def”.word17H,18H.sect“段名”語法4.sect段特.sect段,建立一個自定義并且初始化415.usect段
特點.usect段,建立一個自定義段但是沒有被初始化的段;舉例Usysm.usect“xy”,20標(biāo)號.usect“段名”,字?jǐn)?shù)標(biāo)號指由.bss指令保留的第一個字,他對應(yīng)為變量保留空間的變量名,字?jǐn)?shù)表示空間的大小。語法5.usect段特.usect段,建立一個自定義段但是42匯編程序和連接程序?qū)Χ蔚奶幚韰R編程序?qū)Χ蔚奶幚?/p>
在匯編時,匯編程序確定源程序中的各部分屬于哪個特定的段;當(dāng)遇到已初始化段定義指令.text,.data,.sect時,立即停止把隨后的代碼和數(shù)據(jù)匯編到當(dāng)前段中,而是將他們匯編到指令所指定的新的段中;但當(dāng)匯編程序遇到未初始化的段.bss,.usect時,只是暫時離開當(dāng)前的段去未初始化段保留空間,而不結(jié)束當(dāng)前段去開始一個新的段,隨后的匯編仍然在當(dāng)前段中進(jìn)行,直至遇到另一個已初始化段定義指令。匯編程序和連接程序?qū)Χ蔚奶幚韰R編程序?qū)Χ蔚奶幚?3.dataCoeff.word11H,22h,33H.bssvar1,1.bssbuffer,10.word0123H.text.word1,2,3.dataval2.Word0AAHVar3.Usect“newvars”,7.text.word4,511H22H33H01H23HAAh沒有數(shù)據(jù)保留11個字01H02H03H04H05H沒有數(shù)據(jù)保留7個字.data段.bss段.text段newvar段匯編程序?qū)Χ翁幚硎玖?data11H01HAAh沒有數(shù)據(jù)01H04H沒有數(shù)據(jù)保留44連接程序?qū)Χ蔚奶幚磉B接程序?qū)Χ蔚奶幚碇饕瓿蓛蓚€功能:把1個或多個目標(biāo)文件連接起來產(chǎn)生可執(zhí)行的COFF輸出文件(文件名.out);定位輸出文件的存儲器地址;連接程序?qū)Χ蔚奶幚磉B接程序?qū)Χ蔚奶幚碇饕瓿蓛蓚€功能:45存儲器映像定位存儲器映像定位:就是把.text,.data,.bss等段定位到編程者想要定位的地方,即和硬件設(shè)計的RAM、ROM和I/O口一致;存儲器映像包括:(1)目標(biāo)系統(tǒng)的存儲器的定義;(2)分配段在存儲器中的位置存儲器映像定位存儲器映像定位:46目標(biāo)存儲器的定義MEMORY{
PAGE0:名字1:orgin=常數(shù),length=常數(shù);PAGEn:名字n:orgin=常數(shù),length=常數(shù);}在memory命令中,PAGE定義一個存儲器空間0~255,通常PAGE0指向程序存儲器;PAGE1指向數(shù)據(jù)存儲器;目標(biāo)存儲器的定義MEMORY47段在存儲器中的定位SECTIONS{段名:{}>存儲器名PAGEn}段在存儲器中的定位SECTIONS48存儲器的映像定位例.cmdMEMORY{PAGE0:EX1-PM:ORGIN=0H,LENGTH=0FEFFHB0-PM:ORGIN=0FF00H,LENGTH=100HPAGE1:REGS:ORGIN=0H,LENGTH=60HBLK-B2:ORGIN=60H,LENGTH=20HBLK-B0:ORGIN=200H,LENGTH=100HBLK-B1:ORGIN=300H,LENGTH=100HEX1-DM:ORGIN=800H,LENGTH=7800HGM-DM:ORGIN=8000H,LENGTH=800H}存儲器的映像定位例.cmdMEMORY49SECTIONS{vectors:{}>EX1-PMPAGE0.text:{}>EX1-PMPAGE0.bss:{}>EX1-DMPAGE1sum:{}>BLK-B2PAGE1.data:{}>0x0370PAGE1}SECTIONS50第四章TMS320C20X的指令系統(tǒng)及匯編語言第一節(jié)尋址方式第二節(jié)指令系統(tǒng)第三節(jié)匯編語言第四章TMS320C20X的指令系統(tǒng)及匯編語言第一節(jié)51第一節(jié)TMS320C200的尋址方式1.尋址方式:就是尋找參加指令運行的操作數(shù)的方法。2.操作數(shù)主要包括:寄存器地址、常數(shù)、I/O口、指針、偏移量、數(shù)據(jù)存儲器地址等第一節(jié)TMS320C200的尋址方式1.尋址方式:就是尋521.立即數(shù)尋址2.直接尋址3.間接尋址尋址分類1.立即數(shù)尋址尋址分類53
1.立即數(shù)尋址
在操作數(shù)前面需要加#字號來說明該操作數(shù)為立即數(shù)。否則會把該操作數(shù)誤認(rèn)為是一個地址,從而把立即數(shù)尋址變成直接地址尋址。
特點指令中包含有執(zhí)行指令所需要的操作數(shù)。短立即尋址:立即數(shù)為8、9位或13位的短立即數(shù);長立即尋址:16位的長立即數(shù)短立即數(shù)可包含在單字或雙字指令中,長立即數(shù)在雙字指令中。
注意舉例ADD#55HADD#1111,11.立即數(shù)尋址在操作數(shù)前面需要加#字號來說明該操作數(shù)54可以在不改變DP的情況下,隨機地尋址128個存儲單元中的任何一個單元。
用一個符號或一個常數(shù)來確定7位偏移值,與DP共同形成16位的數(shù)據(jù)存儲器實際地址。2.直接尋址方法LDP#14HADD5H舉例特點可以在不改變DP的情況下,隨機地尋址128個存儲單元中的任何5500000000000000000000000011111111000000010000000000000001111111110000001000000000000000101111111111111111000000001111111111111111DP值偏移量第0頁:0000~007FH第1頁:0080~00FFH第2頁:0100~017FH第511頁:FF80~FFFFH數(shù)據(jù)存儲器000000000000000000000000567位dma域與9位的DP相結(jié)合形成16位的數(shù)據(jù)存儲器地址。8MSBs07LSBS7MSBs9LSBsDP指令寄存器IR狀態(tài)寄存器ST0頁9LSBs偏移量7LSBs16位數(shù)據(jù)存儲器地址DP值是從0~511(29-1),以DP為基準(zhǔn)的直接尋址把存儲器分成512頁,7位的dma范圍從0~127,每頁有128個可訪問的單元。7位dma域與9位的DP相結(jié)合形成16位的數(shù)據(jù)存儲器地址。57使用直接尋址方式設(shè)置數(shù)據(jù)頁指明偏移量LDP#32ADD1H使用直接尋址方式設(shè)置數(shù)據(jù)頁指明偏移量LDP#32AD583.間接尋址
方法特點(AR0~AR7)→ARAU→16位無符號算術(shù)運算→尋址范圍為64K
靈活多變且功能強大,提供7種間接尋址方式3.間接尋址方法特點(AR0~AR7)→靈活多變且功能強大59不增量或不減量方法舉例指令使用AR內(nèi)容作為數(shù)據(jù)存儲器地址,執(zhí)行指令后AR內(nèi)容保持不變。LT*執(zhí)行指令前:ARP=0,(AR0)=100H執(zhí)行操作:用AR0所指的數(shù)據(jù)存儲器100H內(nèi)容裝載暫時寄存器;執(zhí)行指令后:ARP=0,(AR0)=100H不增量或不減量方法舉例指令使用AR內(nèi)容作為數(shù)據(jù)存儲器地址,60增1方法舉例指令使用AR內(nèi)容作為數(shù)據(jù)存儲器地址,執(zhí)行指令后AR內(nèi)容自動加1。LT*+執(zhí)行指令前:ARP=0,(AR0)=100H執(zhí)行操作:用AR0所指的數(shù)據(jù)存儲器100H內(nèi)容裝載暫時寄存器;執(zhí)行指令后:ARP=0,(AR0)=101H增1方法舉例指令使用AR內(nèi)容作為數(shù)據(jù)存儲器地址,執(zhí)行指令后61減1方法舉例指令使用AR內(nèi)容作為數(shù)據(jù)存儲器地址,執(zhí)行指令后AR內(nèi)容自動減1。LT*-執(zhí)行指令前:ARP=0,(AR0)=100H執(zhí)行操作:用AR0所指的數(shù)據(jù)存儲器100H內(nèi)容裝載暫時寄存器;執(zhí)行指令后:ARP=0,(AR0)=FFH減1方法舉例指令使用AR內(nèi)容作為數(shù)據(jù)存儲器地址,執(zhí)行指令后A62加上索引量方法舉例指令使用AR內(nèi)容作為數(shù)據(jù)存儲器地址,執(zhí)行指令后AR內(nèi)容加上AR0的內(nèi)容。LT*0+執(zhí)行指令前:ARP=1,(AR1)=100H,(AR0)=3執(zhí)行操作:用AR1所指的數(shù)據(jù)存儲器100H內(nèi)容裝載暫時寄存器;執(zhí)行指令后:ARP=1,(AR1)=103H加上索引量方法舉例指令使用AR內(nèi)容作為數(shù)據(jù)存儲器地址,執(zhí)行指63減去索引量方法舉例指令使用AR內(nèi)容作為數(shù)據(jù)存儲器地址,執(zhí)行指令后AR內(nèi)容自動減去ARO的內(nèi)容。LT*0-執(zhí)行指令前:ARP=1,(AR1)=100H,(AR0)=3執(zhí)行操作:用AR0所指的數(shù)據(jù)存儲器100H內(nèi)容裝載暫時寄存器;執(zhí)行指令后:ARP=1,(AR1)=FEH減去索引量方法舉例指令使用AR內(nèi)容作為數(shù)據(jù)存儲器地址,執(zhí)行指64加上索引量,反向進(jìn)位方法舉例指令使用AR內(nèi)容作為數(shù)據(jù)存儲器地址,執(zhí)行指令后AR內(nèi)容自動加上AR0的內(nèi)容,該加法采用反向進(jìn)位方法。注:主要用于FFT算法LT*BR0+加上索引量,反向進(jìn)位方法舉例指令使用AR內(nèi)容作為數(shù)據(jù)存儲器地65把AR0加到輔助寄存器中時,地址以位倒序的方式產(chǎn)生,即進(jìn)位是從左向右,而不是從右向左進(jìn)位。例如:01101000+0000100001100100以8位輔助寄存器為例,AR1表示了在存儲器中數(shù)據(jù)的基地址(01100000)2,AR0的值為(00001000)2。把AR0加到輔助寄存器中時,地址以位倒序的方式產(chǎn)生,即進(jìn)位是66AR1修改循環(huán)值存儲單元地址整序前FFT變換結(jié)果位倒序AR1更新的地址值A(chǔ)R0=000010002整序后PA輸出的FFT變換結(jié)果00000X(0)000001100000X(0)10001X(8)100001101000X(1)20010X(4)010001100100X(2)30011X(12)110001101100X(3)40100X(2)001001100010X(4)50101X(10)101001101010X(5)60110X(6)011001100110X(6)70111X(14)111001101110X(7)81000X(1)000101100001X(8)91001X(9)100101101001X(9)101010X(5)010101100101X(10)111011X(13)110101101101X(11)121100X(3)001101100011X(12)131101X(11)101101101011X(13)141110X(7)011101100111X(14)151111X(15)111101101111X(15)位倒序?qū)FT變換結(jié)果的序號調(diào)整
AR1修改循環(huán)值存儲單整序前FFT變換結(jié)果位倒序AR1更67減去上索引量,反向借位方法舉例指令使用AR內(nèi)容作為數(shù)據(jù)存儲器地址,執(zhí)行指令后AR內(nèi)容自動加上AR0的內(nèi)容,該加法采用反向進(jìn)位方法。LT*BR0-減去上索引量,反向借位方法舉例指令使用AR內(nèi)容作為數(shù)據(jù)存儲器68下一當(dāng)前輔助寄存器的制定方法舉例指令使用AR內(nèi)容作為數(shù)據(jù)存儲器地址,執(zhí)行指令后,下一輔助寄存器被指定為當(dāng)前輔助寄存器MAR*,AR1LT*+,AR2下一當(dāng)前輔助寄存器的制定方法舉例指令使用AR內(nèi)容作為數(shù)據(jù)存儲69第二節(jié)TMS320C2000的匯編指令C2000指令按照功能劃分為6類:累加器、算術(shù)和邏輯指令輔助寄存器指令TREG、PREG和乘法指令轉(zhuǎn)移指令控制指令輸入/輸出指令和存儲器指令第二節(jié)TMS320C2000的匯編指令C2000指令按照功702.1匯編指令集說明1、指令的基本格式操作碼操作數(shù)或操作數(shù)地址指令助記符含義:dma:數(shù)據(jù)存儲器地址的低7位偏移量Pma:16位程序存儲器地址Shift:左移位數(shù):0~15Shift2:左移位數(shù):0~7n:指示下一位輔助寄存器的值:0~7k:8位短立即數(shù)lk:16位長立即數(shù)ind:間接尋址方式中的一種2.1匯編指令集說明1、指令的基本格式操作碼操作數(shù)或操作數(shù)地712、匯編指令名稱助記符指令指令說明尋址方式ADDADDdma[,shift](ACC)+((數(shù)存地址)x2shift)ACC直接尋址ADD#k(ACC)+kACC短立即尋址ADD#lk[,shift](ACC)+lkx2shift)ACC長立即尋址ADDind[,shift][,ARn]間接尋址舉例:ADD*+,1,AR0執(zhí)行指令前執(zhí)行指令后ARPAR4數(shù)據(jù)存儲器302HACC
加法指令:ADDC、ADDS、ADDT減法指令:SUB、SUBB、SUBS、SUBT邏輯指令:AND、OR、XOR、CMPL、NEG累加器指令:LACC、LACL、LACH、SACH、SACL、ROL、ROR、SFL、SFR表2.1累加器、算術(shù)和邏輯指令450302H0303H4440CH2、匯編指令名稱助記符指令72名稱助記符指令指令說明尋址方式ADRkADRk#k(AR)+8位整數(shù)kAR短立即數(shù)尋址BANZBANZPma[,ind][,ARn]AR0不為零轉(zhuǎn)移至Pma間接尋址CMPRCMPRCMAR與AR0進(jìn)行比較LARLARARx,dma直接尋址LARARx,ind[,ARn]間接尋址LARARx,#k短立即尋址LARARx,#lk長立即尋址MARMARdma修改AR值直接尋址MARind[,ARn]間接尋址SBRKSBRK#k(AR)-kAR短立即尋址SARSARARx,dma直接尋址SARARx,ind[,ARn]間接尋址表2.2輔助寄存器指令名稱助記符指令73舉例:LARAR4,#01H指令執(zhí)行前指令執(zhí)行后AR4LARAR6,#3FFFHAR60FF09H0FF09H0H3FFFH舉例:0FF09H0FF09H0H3FFFH74表2.3TREG、PREG和乘法指令名稱助記符指令指令說明尋址方式APACAPAC(ACC)+移位后(PREG)ACCLPHLPHdma裝載PREG直接尋址LPHind[,ARn]間接尋址LTLTdma裝載TREG直接尋址LTind[,ARn]間接尋址LTALTAdma裝載TREG并累加前次乘積直接尋址LTAind[,ARn]間接尋址LTDLTDdma裝載TREG,累加前次乘積,尋址數(shù)據(jù)移動LTDind[,ARn]LTPLTPdma裝載TRGE,并將PREG存至ACCLTPind[,ARn]MACMACpma,dma乘且累加MACpma,ind[,ARn]MACDMACDpma,dma乘且累加,并將被尋址數(shù)據(jù)移至下一單元MACDpma,ind[,ARn]MPYMPYdmaMPYind[,ARn]MPYA/MPYS累加前次乘積,再將TREG與被尋址數(shù)相乘PACPACPREG轉(zhuǎn)入累加器ACCSPH存儲PREG高16位,直接或間接尋址SPL存儲PREG低16位,直接或間接尋址表2.3TREG、PREG和乘法指令名稱助記符指75例1:MAC0FF00H,02H;DP=6,地址300H~37FH,PM=0,CNF=1指令執(zhí)行前指令執(zhí)行后數(shù)據(jù)存儲器數(shù)據(jù)存儲器302H302H程序存儲器程序存儲器FF00HFF00HTREGTREGPREGPREGACCACC23h23h4h4h45h458972h723EC41h23h8Ch76975B3h例1:MAC0FF00H,02H;DP=6,地址376例2:MACD0FF00H,08H;DP=6,地址300H~37FH,PM=0,CNF=1指令執(zhí)行前指令執(zhí)行后數(shù)據(jù)存儲器數(shù)據(jù)存儲器308H308H數(shù)據(jù)存儲器數(shù)據(jù)存儲器309H309H程序存儲器程序存儲器FF00HFF00HTREGTREGPREGPREGACC
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CSRME 027-2022鹽穴儲氣庫對接連通井造腔技術(shù)指南
- T/CSBME 079-2024肺癌PET/CT正電子藥物臨床使用質(zhì)量驗收要求
- T/CSBME 061-2022乳腺X射線高壓發(fā)生器
- T/CRIA 26003-2023鋼簾線單位產(chǎn)品能源消耗限額
- T/CNFMA B030-2023戶外林業(yè)機械以鋰離子電池為動力源的手持式長桿修枝剪刀
- T/CMMA 6-2019鎂質(zhì)膠凝材料及制品術(shù)語
- T/CITS 0003-2022標(biāo)準(zhǔn)“領(lǐng)跑者”評價要求電冰箱檢驗檢測服務(wù)
- T/CIMA 0027-2021交流采樣測量裝置檢驗規(guī)范
- T/CIIA 032.2-2022風(fēng)電企業(yè)綠色供應(yīng)鏈信息管理平臺第2部分:能源數(shù)據(jù)采集要求
- T/CIIA 016-2022智慧工地應(yīng)用規(guī)范
- 網(wǎng)絡(luò)優(yōu)化低PHR高占比提升優(yōu)化處理案例總結(jié)
- 《公路隧道施工技術(shù)規(guī)范》(3660-2020)【可編輯】
- 2023-2024學(xué)年安徽省合肥市七年級下學(xué)期期末語文質(zhì)量檢測試題(含答案)
- 華為認(rèn)證安全方向HCIP-Security H12-725 V4.0更新題庫匯總(含答案)
- 中國城市區(qū)域劃分表(超實用)
- 2022分布式并網(wǎng)光伏調(diào)試方案
- 卷揚機調(diào)速控制系統(tǒng)設(shè)計
- 研學(xué)旅行PPT模板
- 精神科常見并發(fā)癥發(fā)生危險及防范課件
- 精益管理之精益生產(chǎn)
- 架空索道安裝施工工藝標(biāo)準(zhǔn)
評論
0/150
提交評論