“DSP技術(shù)”第3章尋址方式和指令系統(tǒng)_第1頁
“DSP技術(shù)”第3章尋址方式和指令系統(tǒng)_第2頁
“DSP技術(shù)”第3章尋址方式和指令系統(tǒng)_第3頁
“DSP技術(shù)”第3章尋址方式和指令系統(tǒng)_第4頁
“DSP技術(shù)”第3章尋址方式和指令系統(tǒng)_第5頁
已閱讀5頁,還剩71頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、DSP技術(shù)第3章:TMS320C24x 尋址方式和指令系統(tǒng)3.1 尋址方式3.2 指令集3.3 典型指令說明第3章: TMS320C24x 尋址方式和指令系統(tǒng)重點: 掌握TMS320LF240 x DSP 尋址方式及指令集合中的重要指令難點: 理解TMS320LF240 x DSP不同尋址方式的含義、操作原理和作用 3.1 尋址方式存儲器尋址方式立即尋址直接尋址間接尋址 3.1 尋址方式1、立即尋址含義:指令中已包含有執(zhí)行指令所需的操作數(shù);說明: 在數(shù)值或符號前加#表示立即數(shù); 立即數(shù)有兩種形式:短和長例如:采用短立即尋址RPT指令RPT #99 ;將緊跟在后面的語句重復(fù)99+1次采用長立即尋

2、址ADD指令A(yù)DD #65534, 2 ;將數(shù)據(jù)65534左移兩位后,再將結(jié)果加至 ;累加器 3.1 尋址方式2、直接尋址含義:用指令中包含的數(shù)據(jù)存儲器地址的低7位+基地址 16位數(shù)據(jù)存儲器地址?;刂罚?DP_ 數(shù)據(jù)頁指針指令寄存器的內(nèi)容: 位158:指示指令類型(操作碼)和指令所訪問的數(shù)據(jù)值的移位信息。 位7: 直接/間接指示符。0直接尋址;1間接尋址。 位60: 指示指令訪問的數(shù)據(jù)存儲器的偏移量。DP作為基地址的直接尋址方式 數(shù)據(jù)存儲器地址以128為單位被分成若干塊,這些塊被稱為數(shù)據(jù)頁。64K的數(shù)據(jù)存儲器總共包含512個數(shù)據(jù)頁,標號從0511。數(shù)據(jù)頁由狀態(tài)寄存器ST0中的9位數(shù)據(jù)頁指針D

3、P值決定。偏移地址由指令中操作數(shù)的7位最低有效位提供。如采用直接尋址方式訪問數(shù)據(jù)地址0050H,則:DP0000 0000 0偏移量101 0000數(shù)據(jù)存儲器頁圖 3.1 尋址方式2、直接尋址步驟: 設(shè)置數(shù)據(jù)頁面:將適當?shù)闹?0511)加載到DP??衫肔DP或任何能將數(shù)值加載到ST0的指令。 指定偏移地址:給出7位偏移地址作為指令的操作數(shù)。注:不必在每條使用直接尋址的指令前都設(shè)置數(shù)據(jù)頁面。如果代碼塊內(nèi)的所有指令都訪問同一數(shù)據(jù)頁面,只須在該指令塊的前面加載一個DP。必須保證在訪問新的數(shù)據(jù)頁面前改變DP。 3.1 尋址方式2、直接尋址例: 使用直接尋址的ADD指令LDP 4 ;將數(shù)據(jù)頁面設(shè)置為4

4、ADD 9h,5 ;數(shù)據(jù)存儲器地址0209h中的內(nèi)容左移5位與累 ;加器的內(nèi)容相加數(shù)據(jù)地址的產(chǎn)生 3.1 尋址方式2、直接尋址例: 使用直接尋址的ADDC指令LDP 500 ;將數(shù)據(jù)頁面設(shè)置為500ADDC 6h ;數(shù)據(jù)存儲器地址FA06h中的內(nèi)容及進位位(C)的值與累;加器的內(nèi)容相加數(shù)據(jù)地址的產(chǎn)生 3.1 尋址方式3、間接尋址含義:按輔助寄存器(AR)中的內(nèi)容尋址數(shù)據(jù)存儲器用途:主要用在需要存儲器地址以步進方式連續(xù)變化的場合。 說明:(1)當前輔助寄存器 通過向狀態(tài)寄存器ST0中的3位輔助寄存器指針(ARP)在裝入07,可選擇特定的輔助寄存器。ARP可由MAR、LST或任何支持間接尋址的指令

5、裝載。ARP所指的寄存器被作為當前寄存器(AR)。執(zhí)行指令時,當前AR的內(nèi)容用作被訪問的數(shù)據(jù)存儲器地址。 3.1 尋址方式3、間接尋址(2)間接尋址選項不加也不減:指令使用當前AR的內(nèi)容作為數(shù)據(jù)存儲器的地址,但當前AR的內(nèi)容既不增加也不減少。加1或減1:指令使用當前AR的內(nèi)容作為數(shù)據(jù)存儲器的地址,但當前AR的內(nèi)容加1或減1。加或減一個變址量:指令使用當前AR的內(nèi)容作為數(shù)據(jù)存儲器的地址,然后使當前AR的內(nèi)容加或減一個變址量,該變址量為AR0中的值。加或減一個變址量且反向進位:指令使用當前AR的內(nèi)容作為數(shù)據(jù)存儲器的地址,然后使當前AR的內(nèi)容加或減一個變址量,該變址量為AR0中的值,采用反向進位方式

6、(用于FFT)。3.1 尋址方式選項操作數(shù)例子不增不減*LACC * 用當前AR所指的DM地址中的內(nèi)容裝載累加器增1*LACC * 用當前AR所指的DM地址中的內(nèi)容裝載累加器 然后當前AR加1減1*LACC * 用當前AR所指的DM地址中的內(nèi)容裝載累加器 然后當前AR減1加變址量*0LACC *0 用當前AR所指的DM地址中的內(nèi)容裝載累加器 然后當前AR的內(nèi)容加上AR0的內(nèi)容減變址量*0LACC *0 用當前AR所指的DM地址中的內(nèi)容裝載累加器 然后當前AR的內(nèi)容減去AR0的內(nèi)容加變址量反向進位*BROLACC *BRO 用當前AR所指的DM地址中的內(nèi)容裝載累加器 然后當前AR的內(nèi)容加上AR0

7、的內(nèi)容,采用反轉(zhuǎn)進位減變址量反向進位*BROLACC *BRO 用當前AR所指的DM地址中的內(nèi)容裝載累加器 然后當前AR的內(nèi)容減去AR0的內(nèi)容,采用反轉(zhuǎn)進位 3.1 尋址方式3、間接尋址(3)輔助寄存器除了更新當前AR內(nèi)容外,某些指令還可以指明下一個AR。例:MAR*,AR1;將當前AR設(shè)為AR1LACL*,AR2;將AR1所指向的地址中的內(nèi)容裝載到;ACC累加器的低16位,AR1內(nèi)容加1,使 ;AR2為當前ARSACL *;將ACC的低16位存于AR2所指向的地址;單元,AR2內(nèi)容加1 3.1 尋址方式3、間接尋址(5)修改輔助寄存器的內(nèi)容特定指令:LAR、ADRK、SBRK和MAR。LAR

8、裝載AR;ADRK、SBRK從AR中加上、減去一個立即數(shù);MAR使AR值增加/減少1或增加/減少一個索引量。 3.1 尋址方式3、間接尋址例: 不加也不減的間接尋址指令A(yù)DD *,8;將當前AR指定的DM單元的值向左移8位后;加到ACC中間接尋址時指令寄存器的內(nèi)容0 0 1 00 0 1 010 0 00 x x x 15 14 13 12 11 10 9 8 6 5 4 2 1 037ADD操作碼Shift=8間接尋址方式N=不指定下一ARARU=對當前AR無操作NAR=任意值 3.1 尋址方式3、間接尋址例: 加1的間接尋址指令A(yù)DD *,8,AR4;將當前AR指定的DM單元的值向左移8位

9、后;加到ACC中,當前AR加1,且AR4變?yōu)橄乱籄R間接尋址時指令寄存器的內(nèi)容0 0 1 00 0 1 010 1 011 0 0 15 14 13 12 11 10 9 8 6 5 4 2 1 037ADD操作碼Shift=8間接尋址方式N=指定下一ARARU=對當前AR加1操作NAR=4 3.1 尋址方式3、間接尋址(4)間接尋址操作碼格式指令寄存器的內(nèi)容:位158:指定指令類型及與數(shù)據(jù)移位相關(guān)的信息。位7:直接/間接指示。1為間接尋址方式,0為直接尋址方式。位64:AR更新代碼ARU,確定是否對AR進行更新以及將其增加還是減少,將ACC的低16位存于AR所指向的地址。位3:下一AR指示符

10、N。指定該指令是否改變ARP的值,0ARP內(nèi)容不變;1NAR的內(nèi)容加載到ARP,原ARP的值加載到ST1的ARB。位20:下一AR的值NAR。ARU代碼在當前AR中完成的運算654000在當前AR中無操作001當前AR-1當前AR010當前AR+1當前AR011保留100當前AR-AR0當前AR(反向進位)101當前AR-AR0當前AR110當前AR+AR0當前AR111當前AR+AR0當前AR(反向進位)當前AR中ARU代碼的作用 3.2 指令集按功能分為6大類累加器、算術(shù)和邏輯指令(表3.3)輔助寄存器和數(shù)據(jù)頁面指針指令(表3.4)TREG、PREG和乘法指令(表3.5)轉(zhuǎn)移指令(表3.6

11、)控制指令(表3.7)I/O和存儲器操作(表3.8) 3.2 指令集ACC累加器ARxLAR和SAR指令中使用的3位值,指定被操作的輔助寄存器CM2位數(shù)值,CMPR指令根據(jù)CM的值進行比較:CM=00,測試是否當前AR=AR0;CM=01,測試是否當前ARAR0;CM=11,測試是否當前ARAR0。AR輔助寄存器BITX4位數(shù)值,表示BIT指令要測試數(shù)據(jù)存儲器值的哪一位SHIFT4位右移量TP條件執(zhí)行指令的2位數(shù)值:BIO引腳為低,TP=00;TC=1,TP=01;TC=0,TP=10;無條件,TP=11。符號定義 3.3 典型指令說明1、對累加器的加操作ADD指令 ADD指令執(zhí)行的操作是將數(shù)

12、據(jù)存儲器單元的數(shù)或立即數(shù)左移后加至累加器。移位時,低位填0,高位在SXM=1時為符號擴展,在SXM=0時填0。結(jié)果存在累加器中。尋址短立即數(shù)時,加操作不受SXM的影響,且不能重復(fù)執(zhí)行。 3.3 典型指令說明1、對累加器的加操作ADD指令 舉例:(1) ADD5, 2;(DP=4:0200h027Fh)將數(shù)據(jù)存儲器單元205;的內(nèi)容左移2位之后與ACC相加,結(jié)果存;ACC執(zhí)行前執(zhí)行后數(shù)據(jù)存儲器205h1h數(shù)據(jù)存儲器205h1hACCx2hACC006hCC 3.3 典型指令說明1、對累加器的加操作ADD指令(2) ADD*+, 2, AR0;(ARP=4, AR4=282)將數(shù)據(jù)存儲器;單元28

13、2的內(nèi)容左移2位之后與;ACC相加,結(jié)果存在ACC執(zhí)行前執(zhí)行后ARP4ARP0AR40282hAR40283h數(shù)據(jù)存儲器282h2h數(shù)據(jù)存儲器282h2hACCx2hACC00AhCC 3.3 典型指令說明1、對累加器的加操作ADD指令(3) ADD# 2;短立即數(shù)2;與ACC相加,;結(jié)果存在ACC(4) ADD # 1111h, 2;長立即數(shù);1111h左移2位;后與ACC相;加,結(jié)存在;ACC執(zhí)行前執(zhí)行后ACCx2hACC004hCC執(zhí)行前執(zhí)行后ACCx2hACC04446hCC例2、和累加器邏輯“與”操作指令A(yù)ND語法說明:如果是直接或間接尋址,數(shù)據(jù)存儲單元中的數(shù)和累加器的低16位進行與

14、運算,結(jié)果放在累加器的低16位,累加器的高16位清0。如果是立即數(shù)尋址,長立即數(shù)可以先左移,再和累加器進行運算。沒有被左移后的值覆蓋的低位和高位都清0。指令不受SXM影響。例如: 3.3 典型指令說明AND指令用來實現(xiàn)被尋址單元的內(nèi)容和連接器的邏輯“與”操作,以及長立即數(shù)經(jīng)過移位之后和連接器進行邏輯“與”操作。邏輯“與”操作之后的結(jié)果保存在累加器中。舉例:(1)AND16;(DP=4:0200027Fh)將數(shù)據(jù)存儲器單元210h的內(nèi)容;與ACC的內(nèi)容進行邏輯“與”操作,結(jié)果保留在;ACC中執(zhí)行前執(zhí)行后數(shù)據(jù)存儲器0210h00FFh數(shù)據(jù)存儲器0210h00FFhACC12345678hACC00

15、000078h 3.3 典型指令說明2、和累加器邏輯“與”操作指令A(yù)ND(2)AND *;(ARP=0,AR0=0301h)將數(shù)據(jù)存儲器單元301h的內(nèi)容與ACC;的內(nèi)容進行邏輯“與”操作,結(jié)果保留在ACC中(3)AND 00FFh, 4;將立即數(shù)00FFh左移4位后與ACC的內(nèi)容進行邏輯;“與”操作,結(jié)果保留在ACC中執(zhí)行前執(zhí)行后ARP0ARP0AR00301hAR00301h數(shù)據(jù)存儲器0301h0FF00h數(shù)據(jù)存儲器0301h0FF00hACC12345678hACC00005600h執(zhí)行前執(zhí)行后ACC12345678hACC00000670h 3.3 典型指令說明3、輔助寄存器不等于零轉(zhuǎn)

16、移指令BANZ 若當前輔助寄存器內(nèi)容不為零,則控制轉(zhuǎn)移至指定的程序存儲器地址,否則控制轉(zhuǎn)移到下一條指令。當前AR的缺省修改為減1。該指令可用來實現(xiàn)程序的循環(huán)執(zhí)行。 3.3 典型指令說明3、輔助寄存器不等于零轉(zhuǎn)移指令BANZ舉例:(1)BANZ PGM0;PGM0是程序地址0的標號當AR0的內(nèi)容不是0,程序轉(zhuǎn)移的目的地址加載到程序計數(shù)器(PC),程序從這里繼續(xù)運行。對當前AR缺省的修改方式是減1,因此執(zhí)行后AR0的內(nèi)容是4h。或者當AR0的內(nèi)容是0,不執(zhí)行程序轉(zhuǎn)移;而是將PC加2執(zhí)行BANZ后面的指令。對當前AR缺省的修改方式是減1,因此執(zhí)行后AR0的內(nèi)容是FFFFh(-1)。執(zhí)行前執(zhí)行后ARP

17、0ARP0AR05hAR04h執(zhí)行前執(zhí)行后ARP0ARP0AR00hAR0FFFFh 3.3 典型指令說明3、輔助寄存器不等于零轉(zhuǎn)移指令BANZ(2)MAR*, AR0;ARP指向AR0 LARAR1, #3;AR1中裝入3 LARAR0, #60h;AR0中裝入0060hP1 ADD*+, AR1;若AR10則循環(huán) BANZP1, AR0;將AR0所指的數(shù)加到ACC,并將;AR0的值增1 3.3 典型指令說明4、條件轉(zhuǎn)移指令BCND 當所規(guī)定的條件符合時,控制轉(zhuǎn)移到指定的程序存儲器地址。舉例:BCNDP1, LEQ;若ACC的內(nèi)容0時,程序轉(zhuǎn)到P1處開始執(zhí)行條件說明條件說明EQACC=0CC

18、=1NEQACC0NOVOV=0LTACC0NTCTC=0GEQACC0TCTC=1NCC=0UNC無條件 3.3 典型指令說明5、位測試指令BIT 該指令將數(shù)據(jù)存儲器中的指定位的值復(fù)制到狀態(tài)寄存器ST1的TC位。將該指令和BCND指令結(jié)合可判斷指定位的狀態(tài),并根據(jù)該位的狀態(tài)來控制程序的轉(zhuǎn)移。指令中bit code的值與其所對應(yīng)的數(shù)據(jù)存儲器數(shù)值的bit number的關(guān)系如下圖所示:bit code0123456789101112131415bit number1514131211109876543210MSB數(shù)據(jù)存儲器的值LSB 3.3 典型指令說明5、位測試指令BIT舉例:(1)BIT 0

19、h, 15;(DP=6),測試0300h處的最低有效位(2)BIT *, 0, AR1;測試0310h處的最高有效位,并設(shè)ARP=1執(zhí)行前執(zhí)行后數(shù)據(jù)存儲器0300h4DC8h數(shù)據(jù)存儲器0300h4DC8hTC0TC0執(zhí)行前執(zhí)行后ARP0ARP0AR0310hAR0310h數(shù)據(jù)存儲器0310h8000h數(shù)據(jù)存儲器0310h8000hTC0TC1 3.3 典型指令說明6、數(shù)據(jù)存儲器間的塊傳送BLDD把指定的數(shù)據(jù)存儲單元源地址中的字copy到指定的數(shù)據(jù)存儲單元目的地址中。源地址和目的地址可由長立即數(shù)地址或數(shù)據(jù)存儲器地址指定。注意: 如果源地址為長立即數(shù),則目的地址只能為直接或間接尋址方式;如果源地址

20、為直接或間接尋址方式,則目的地址只能為長立即數(shù)。該指令不能用于存儲器映射的寄存器。使用RPT指令重復(fù)BLDD操作期間中斷被禁止。當BLDD指令重復(fù)使用時,由長立即數(shù)指定的源(目的)地址被保存在PC中.每次重復(fù)過程PC增1,因此可以訪問一串源(目的)地址,若使用間接尋址方式指定目的(源)地址,則每次重復(fù)時訪問一個新目的(源)地址。若使用直接尋址方式,所指定的源(目的)地址不變,每次重復(fù)時不能修改。 3.3 典型指令說明6、數(shù)據(jù)存儲器間的塊傳送BLDD舉例:(1)BLDD #300h, 20h;(DP=6:0300h037Fh)將數(shù)據(jù)存儲單元0300h的內(nèi)容;復(fù)制到數(shù)據(jù)存儲單元0320h(2)BL

21、DD *+, #321h, AR3執(zhí)行前執(zhí)行后數(shù)據(jù)存儲器0300h0h數(shù)據(jù)存儲器0300h0h0320h0Fh0320h0h執(zhí)行前執(zhí)行后ARP2ARP3AR2301hAR2302h數(shù)據(jù)存儲器0301h01h數(shù)據(jù)存儲器0301h01h0321h0Fh0321h01h 3.3 典型指令說明7、清除控制位指令CLRC 該指令將指定的控制位清除為0。指定的控制位為下述控制位之一:CST1的進位位CNFST1的RAM配置控制位INTMST0的中斷方式位OVMST0的溢出方式位SXMST1的符號擴展方式位TCST1的測試/控制標志位XFST1的XF引腳狀態(tài)位舉例:CLRCTC;將ST1的TC位清零執(zhí)行前執(zhí)

22、行后ST1x9xxhST1 x1xxh 3.3 典型指令說明8、從端口輸入數(shù)據(jù)指令I(lǐng)N 該指令從一個I/O單元讀一個16位數(shù)到指定的數(shù)據(jù)存儲器單元。IS引腳變?yōu)榈碗娖剑硎具M行I/O訪問,STRB、RD和READY時序與讀外存儲器一樣。重復(fù)指令RPT與該指令一起使用可以連續(xù)從I/O空間讀入數(shù)據(jù),并送到數(shù)據(jù)空間。舉例:(1)IN7,1000h;(DP=6)從地址為1000h的外設(shè)讀數(shù),并將數(shù)據(jù)存;于數(shù)據(jù)存儲器單元0307h中(2)IN*, 5h;從口地址為0005h的外設(shè)讀數(shù)據(jù),并將數(shù)據(jù)存至;當前AR所指的數(shù)據(jù)存儲器單元中 3.3 典型指令說明9、裝載累加器指令LACC 該指令執(zhí)行的操作是將指定

23、的數(shù)據(jù)存儲器單元的內(nèi)容或一個16位常數(shù)左移后送入累加器。移位時,低位填0,高位根據(jù)SXM的值進行擴展或填0。舉例:(1)LACC5, 4;(DP=8:0400h047Fh, SXM=0)將數(shù)據(jù)存儲器單;元0405h的內(nèi)容左移4位后送到ACC執(zhí)行前執(zhí)行后數(shù)據(jù)存儲器405h01h數(shù)據(jù)存儲器405h01hACCx012345678hACCx10hCC 3.3 典型指令說明9、裝載累加器指令LACC(2)LACC*, 4;(ARP=2, AR2=0305h, SXM=0)將數(shù)據(jù)存儲器單;元0305h的內(nèi)容左移4位后送到ACC(3)LACC#0F000h, 1;(SXM=1)將長立即數(shù)0F000h左移1

24、位后;送到ACC執(zhí)行前執(zhí)行后ARP2ARP2AR20305hAR20305h數(shù)據(jù)存儲器305h0FFh數(shù)據(jù)存儲器305h0FFhACCx012345678hACCx0FF0hCC執(zhí)行前執(zhí)行后ACCx012345678hACCxFFFFE000hCC 3.3 典型指令說明10、裝載累加器低位并清累加器高位指令LACL 該指令將指定數(shù)據(jù)存儲器單元的內(nèi)容或用0擴展的8位常數(shù)裝入累加器的低16位,高位填0。數(shù)據(jù)作為無符號的16位數(shù)據(jù)處理,而非二進制補碼。無論SXM為何狀態(tài),該指令的操作數(shù)抑制符號擴展。舉例:(1)LACL1;(DP=6:0300h037Fh)將數(shù)據(jù)存儲單元0301h的內(nèi);容裝入ACC執(zhí)

25、行前執(zhí)行后數(shù)據(jù)存儲器301h0h數(shù)據(jù)存儲器301h0hACCx7FFFFFFFhACCx0hCC 3.3 典型指令說明10、裝載累加器低位并清累加器高位指令LACL(2)LACL*-, AR4;(ARP=0, AR0=0301h, (0301h)=2)將數(shù)據(jù)存儲器;單元0301h的內(nèi)容裝入ACC(3)LACL10h;(SXM=1)將0010h裝入ACC執(zhí)行前執(zhí)行后ARP0ARP4AR00301hAR00300h數(shù)據(jù)存儲器301h2h數(shù)據(jù)存儲器301h2hACCx012345678hACCx2hCC執(zhí)行前執(zhí)行后ACCx012345678hACCx10hCC 3.3 典型指令說明11、修改寄存器指

26、令MAR和裝載寄存器指令LAR MAR指令用來修改輔助寄存器ARP的值,該指令在直接尋址方式下相當于NOP指令。LAR指令用來將數(shù)據(jù)存儲器的值裝入輔助寄存器。LAR和SAR指令可在子程序調(diào)用或中斷處理時裝載和存儲輔助寄存器,從而實現(xiàn)在中斷或子程序調(diào)用時上下文的保存。 3.3 典型指令說明11、修改寄存器指令MAR和裝載寄存器指令LAR舉例:(1)MAR *, AR1;指定當前AR為AR1(2)MAR*+, AR5;將當前AR(AR1)增1并將ARP指向下一AR(AR5)執(zhí)行前執(zhí)行后ARP0ARP1ARB7AR00執(zhí)行前執(zhí)行后AR134hAR135hARP1ARP5ARB7AR00 3.3 典型

27、指令說明11、修改寄存器指令MAR和裝載寄存器指令LAR(3)LARAR1, 5h;(DP=4:0200h027Fh)將數(shù)據(jù)存儲器地址0205h的;內(nèi)容裝入AR1寄存器(4)LAR AR1, 50h;將短立即數(shù)50h裝入AR1(5)LARAR1, 1234h;將長立即數(shù)1234h裝入AR1執(zhí)行前執(zhí)行后AR10FF09hAR150h執(zhí)行前執(zhí)行后AR10hAR11234h執(zhí)行前執(zhí)行后數(shù)據(jù)存儲器205h18h數(shù)據(jù)存儲器205h18hAR16hAR118h 3.3 典型指令說明12、裝載數(shù)據(jù)頁指針指令LDP 該指令被數(shù)據(jù)存儲器單元的9位最低有效位或9位立即數(shù)送入狀態(tài)寄存器ST0的數(shù)據(jù)頁指針DP。DP也

28、可由LST指令裝入。舉例:(1)LDP5;(DP=5:0280h02FFh)(2)LDP*, AR5;(ARP=4, AR4=300h, (300h)=06h)執(zhí)行前執(zhí)行后數(shù)據(jù)存儲器285hFEDCh數(shù)據(jù)存儲器285hFEDChDP5hDP0DCh執(zhí)行前執(zhí)行后ARP4ARP5AR4300hAR4300h數(shù)據(jù)存儲器300h06h數(shù)據(jù)存儲器300h06hDP1FFhDP06h 3.3 典型指令說明13、裝載狀態(tài)寄存器指令LST 該指令被尋址數(shù)據(jù)存儲器單元中的值裝入指定的狀態(tài)寄存器,用于子程序調(diào)用和中斷后恢復(fù)狀態(tài)寄存器。需要注意的幾點:LST #0 操作不影響ST1寄存器中的ARB字段;LST #1

29、 操作中,送入ARB的值也被送入ARP;在間接尋址方式下用一操作數(shù)來指定下一AR值,則將被尋址數(shù)據(jù)存儲器單元所含的3位最高有效位送入ARP;狀態(tài)寄存器中的保留位讀出總為1,寫入對其無影響。LST 狀態(tài)寄存器裝載 語法:說明:指定的數(shù)據(jù)存儲單元的內(nèi)容裝載到指定的狀態(tài)寄存器,m=0時,裝做到ST0,m=1時,裝載到ST1。使用該指令時需要注意:在間接尋址中,如果操作數(shù)中指定下一個AR,這個AR被忽略。ARP用指定數(shù)據(jù)存儲單元中的內(nèi)容的高3位裝入。例如: 3.3 典型指令說明13、裝載狀態(tài)寄存器指令LST舉例:(1)MAR*, AR0 LST#0, *, AR1;由輔助寄存器AR0的內(nèi)容尋址的數(shù)據(jù)存

30、儲器中的字加載到狀態(tài)寄存器;ST0,但INTM位除外應(yīng)注意,即使指定了下一個ARP的值,該值也;要被忽略。另外,原來的ARP值并不加載到ARB執(zhí)行前執(zhí)行后ARP0ARP1AR0300hAR0300hARB0ARB0數(shù)據(jù)存儲器300h2404h數(shù)據(jù)存儲器300h2404hST06E00hST02604hST105EChST105ECh 3.3 典型指令說明14、裝載TREG寄存器指令LTD 該指令將指定數(shù)據(jù)存儲單元的內(nèi)容加載到TREG。按照PM狀態(tài)位指定的方式對乘積寄存器的內(nèi)容進行移位,再與ACC的內(nèi)容相加,結(jié)果存放在ACC中。指定數(shù)據(jù)存儲單元的內(nèi)容復(fù)制到地址加1的數(shù)據(jù)存儲單元。注:若將該指令用

31、于外部數(shù)據(jù)存儲器,其作用同LTA指令,即累加先前的乘積,并從外部數(shù)據(jù)存儲器加載TREG,但不作數(shù)據(jù)移動。LTD TREG寄存器裝載、累加前一次乘積并移位。 語法:說明:指定的數(shù)據(jù)存儲單元的內(nèi)容裝載到TREG中,乘積寄存器中的值根據(jù)PM狀態(tài)移位后加到ACC中。指定的數(shù)據(jù)存儲單元的內(nèi)容同時復(fù)制到下一個存儲單元。 3.3 典型指令說明14、裝載TREG寄存器指令LTD舉例:(1) LTD126;DP=7:0380h03FFh,PM=0:乘積不移位執(zhí)行前執(zhí)行后數(shù)據(jù)存儲器3FEh62h數(shù)據(jù)存儲器3FEh62h3FFh0h3FFh62hTREG3hTREG62hPREG0FhPREG0FhACCx5hAC

32、C014hCC 3.3 典型指令說明15、乘且累加并帶數(shù)據(jù)移動指令MACD 該指令可完成以下功能:按PM狀態(tài)位指定的方式把先前的乘積移位,再與ACC的內(nèi)容相加;把指定的數(shù)據(jù)存儲器單元的內(nèi)容加載到TREG;將存放在TREG寄存器中的數(shù)據(jù)存儲器單元值乘以指定的程序存儲器地址中的內(nèi)容;將指定的數(shù)據(jù)存儲器地址中的內(nèi)容復(fù)制到下一個數(shù)據(jù)存儲器。 3.3 典型指令說明15、乘且累加并帶數(shù)據(jù)移動指令MACD舉例:(1) MACD0FF00h, 08h;DP=6:0300h037Fh,PM=0:乘積不移;位,CF=1:RAM B0配置為程序寄存器執(zhí)行前執(zhí)行后數(shù)據(jù)存儲器308h23h數(shù)據(jù)存儲器308h23h309

33、h18h309h23h程序存儲器FF00h4h程序存儲器FF00h4hTREG45hTREG23hPREG458972hPREG8ChACCx723EC41hACC076975B3hCC 3.3 典型指令說明15、乘且累加并帶數(shù)據(jù)移動指令MACD(2) MACD0FF00h, *, AR6;PM=0,CF=1執(zhí)行前執(zhí)行后ARP5ARP6AR5308hAR5308h數(shù)據(jù)存儲器308h23h數(shù)據(jù)存儲器308h23h309h18h309h23h程序存儲器FF00h4h程序存儲器FF00h4hTREG45hTREG23hPREG458972hPREG8ChACCx723EC41hACC076975B3

34、hCC 3.3 典型指令說明16、乘指令MPY T寄存器內(nèi)容和被尋址數(shù)據(jù)存儲器單元的內(nèi)容相乘,其結(jié)果轉(zhuǎn)入P寄存器中。若使用短立即數(shù)尋址,則T寄存器和帶符號的13位常數(shù)相乘,無論SXM為何值,短立即數(shù)總是靠右對齊并在相乘之前進行符號擴展。舉例:(1)MPY5;(DP=4:0200h027Fh)將數(shù)據(jù)存儲單元0205h的內(nèi)容和;TREG中的內(nèi)容相乘,結(jié)果保存在PREG執(zhí)行前執(zhí)行后數(shù)據(jù)存儲器205h7h數(shù)據(jù)存儲器205h7hTREG6hTREG6hPREG36hPREG2Ah 3.3 典型指令說明16、乘指令MPY(2)MPY*, AR2;(ARP=1,AR1=040Dh)將數(shù)據(jù)存儲器單元040Dh

35、的內(nèi)容和;TREG中的內(nèi)容相乘,結(jié)果保存在PREG(3)MPY#031h;立即數(shù)0031h和TREG中的內(nèi)容相乘,結(jié)果保存在PREG執(zhí)行前執(zhí)行后TREG2hTREG2hPREG36hPREG62h執(zhí)行前執(zhí)行后ARP1ARP2AR140DhAR140Dh數(shù)據(jù)存儲器40Dh7h數(shù)據(jù)存儲器40Dh7hTREG6hTREG6hPREG36hPREG2Ah 3.3 典型指令說明17、重復(fù)執(zhí)行下一條指令RPT 若使用直接或間接尋址,則被尋址的數(shù)據(jù)存儲器單元中的值送入重復(fù)計數(shù)器RPTC;使用短立即數(shù)尋址,則8位立即數(shù)送入RPTC。緊接RPT后的那條指令被執(zhí)行n次,n為RPTC初值加1。由于在上下文切換時不能

36、保存RPTC的值,所以重復(fù)循環(huán)被認為是多周期指令,不能被中斷。舉例:RPT#20;執(zhí)行NOP指令21次NOP 3.3 典型指令說明18、移位并存儲累加器高位指令SACH 該指令將整個累加器復(fù)制到輸出移位寄存器中,然后全部32位數(shù)左移07位,再將移位后數(shù)值的高16位復(fù)制到數(shù)據(jù)存儲器、在移位時,低位填0,高位丟失,累加器內(nèi)容不變。舉例:(1)SACH10, 1;(DP=4:00200h0027Fh)將ACC左移1位,高16;位存至數(shù)據(jù)存儲單元020Ah執(zhí)行前執(zhí)行后ACCx4208001hACCx4208001hCC數(shù)據(jù)存儲器20Ah0h數(shù)據(jù)存儲器20Ah0841h 3.3 典型指令說明18、移位并

37、存儲累加器高位指令SACH(2)SACH*+,0, AR2;(ARP=1)將ACC高16位存至AR1指向的;數(shù)據(jù)存儲單元執(zhí)行前執(zhí)行后ARP1ARP2AR1300hAR1301hACCx4208001hACCx4208001hCC數(shù)據(jù)存儲器300h0h數(shù)據(jù)存儲器300h0420h 3.3 典型指令說明19、移位并存儲累加器低位指令SACL 該指令將整個累加器復(fù)制到輸出移位寄存器中,然后全部32位數(shù)左移07位,再將移位后數(shù)值的低16位復(fù)制到數(shù)據(jù)存儲器、在移位時,低位填0,高位丟失,累加器內(nèi)容不變。舉例:(1)SACL10, 1;(DP=4:00200h0027Fh)將ACC左移1位,低16;位存至

38、數(shù)據(jù)存儲單元020Ah執(zhí)行前執(zhí)行后ACCx4208001hACCx4208001hCC數(shù)據(jù)存儲器20Ah0h數(shù)據(jù)存儲器20Ah0002h 3.3 典型指令說明19、移位并存儲累加器低位指令SACL(2)SACL*, AR2;(ARP=1)將ACC低16位存至AR1指向的數(shù)據(jù)存;儲單元執(zhí)行前執(zhí)行后ARP1ARP2AR1300hAR1300hACCx4208001hACCx4208001hCC數(shù)據(jù)存儲器300h0h數(shù)據(jù)存儲器300h8001h 3.3 典型指令說明20、存儲輔助寄存器指令SAR 該指令將指定輔助寄存器ARx內(nèi)容存入指定的數(shù)據(jù)存儲器單元,在間接尋址方式中,當SAR指令同時也要對當前A

39、R內(nèi)容進行修改時,SAR將在增、減輔助寄存器內(nèi)容前將輔助寄存器值存至數(shù)據(jù)存儲器。 3.3 典型指令說明20、存儲輔助寄存器指令SAR舉例:(1)SARAR0, 30h;(DP=6:0300h037Fh)將AR0的值存至數(shù)據(jù)存儲;單元0330h(2)SARAR0, *+執(zhí)行前執(zhí)行后AR037hAR037h數(shù)據(jù)存儲器330h18h數(shù)據(jù)存儲器330h37h執(zhí)行前執(zhí)行后ARP0ARP0AR0401hAR0402h數(shù)據(jù)存儲器401h18h數(shù)據(jù)存儲器401h401h 3.3 典型指令說明21、從當前AR中減去立即數(shù)指令SBRK 該指令從指定輔助寄存器中減去8位立即數(shù)值,其結(jié)果替換原有的AR中的內(nèi)容。減去在輔助寄存器算術(shù)單元(ARAU)中進行,立即數(shù)值被作為8位正數(shù)處理。因此,輔助寄存器的算術(shù)運算都是無符號的。舉例:SBRK#0FFh執(zhí)行前執(zhí)行后

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論