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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

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

8、裝載AR;ADRK、SBRK從AR中加上、減去一個(gè)立即數(shù);MAR使AR值增加/減少1或增加/減少一個(gè)索引量。 3.1 尋址方式3、間接尋址例: 不加也不減的間接尋址指令A(yù)DD *,8;將當(dāng)前AR指定的DM單元的值向左移8位后;加到ACC中間接尋址時(shí)指令寄存器的內(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=對(duì)當(dāng)前AR無(wú)操作NAR=任意值 3.1 尋址方式3、間接尋址例: 加1的間接尋址指令A(yù)DD *,8,AR4;將當(dāng)前AR指定的DM單元的值向左移8位

9、后;加到ACC中,當(dāng)前AR加1,且AR4變?yōu)橄乱籄R間接尋址時(shí)指令寄存器的內(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=對(duì)當(dāng)前AR加1操作NAR=4 3.1 尋址方式3、間接尋址(4)間接尋址操作碼格式指令寄存器的內(nèi)容:位158:指定指令類型及與數(shù)據(jù)移位相關(guān)的信息。位7:直接/間接指示。1為間接尋址方式,0為直接尋址方式。位64:AR更新代碼ARU,確定是否對(duì)AR進(jìn)行更新以及將其增加還是減少,將ACC的低16位存于AR所指向的地址。位3:下一AR指示符

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

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

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

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

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

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

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

17、0ARP0AR05hAR04h執(zhí)行前執(zhí)行后ARP0ARP0AR00hAR0FFFFh 3.3 典型指令說(shuō)明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 典型指令說(shuō)明4、條件轉(zhuǎn)移指令BCND 當(dāng)所規(guī)定的條件符合時(shí),控制轉(zhuǎn)移到指定的程序存儲(chǔ)器地址。舉例:BCNDP1, LEQ;若ACC的內(nèi)容0時(shí),程序轉(zhuǎn)到P1處開(kāi)始執(zhí)行條件說(shuō)明條件說(shuō)明EQACC=0CC

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

34、hCC 3.3 典型指令說(shuō)明16、乘指令MPY T寄存器內(nèi)容和被尋址數(shù)據(jù)存儲(chǔ)器單元的內(nèi)容相乘,其結(jié)果轉(zhuǎn)入P寄存器中。若使用短立即數(shù)尋址,則T寄存器和帶符號(hào)的13位常數(shù)相乘,無(wú)論SXM為何值,短立即數(shù)總是靠右對(duì)齊并在相乘之前進(jìn)行符號(hào)擴(kuò)展。舉例:(1)MPY5;(DP=4:0200h027Fh)將數(shù)據(jù)存儲(chǔ)單元0205h的內(nèi)容和;TREG中的內(nèi)容相乘,結(jié)果保存在PREG執(zhí)行前執(zhí)行后數(shù)據(jù)存儲(chǔ)器205h7h數(shù)據(jù)存儲(chǔ)器205h7hTREG6hTREG6hPREG36hPREG2Ah 3.3 典型指令說(shuō)明16、乘指令MPY(2)MPY*, AR2;(ARP=1,AR1=040Dh)將數(shù)據(jù)存儲(chǔ)器單元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ù)存儲(chǔ)器40Dh7h數(shù)據(jù)存儲(chǔ)器40Dh7hTREG6hTREG6hPREG36hPREG2Ah 3.3 典型指令說(shuō)明17、重復(fù)執(zhí)行下一條指令RPT 若使用直接或間接尋址,則被尋址的數(shù)據(jù)存儲(chǔ)器單元中的值送入重復(fù)計(jì)數(shù)器RPTC;使用短立即數(shù)尋址,則8位立即數(shù)送入RPTC。緊接RPT后的那條指令被執(zhí)行n次,n為RPTC初值加1。由于在上下文切換時(shí)不能

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

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

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

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

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論