版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
在DSP應(yīng)用中,雖然可以使用C/C++高級(jí)語言編程,降低了對(duì)編程者的要求,但在一些實(shí)時(shí)性要求高的場合仍然需要采用匯編編程,以充分利用DSP豐富的硬件資源,發(fā)揮它的實(shí)時(shí)運(yùn)算能力。用匯編語言編程,要求編程者對(duì)DSP的低層有充分的了解,包括硬件結(jié)構(gòu)、存儲(chǔ)器空間模型和I/O口的組織等。同時(shí)又要求編程者對(duì)指令系統(tǒng)有深刻的了解。第3章匯編語言指令系統(tǒng)
目錄:
3.1C54x匯編語言指令集介紹
3.2尋址方式
3.3C54x系列DSP的指令系統(tǒng)
第3章匯編語言指令系統(tǒng)
C54x指令集包括:本章介紹C54xDSP的匯編語言指令系統(tǒng)。與其它CPU的指令集相同,匯編語言指令又稱為硬指令,它們?cè)趨R編和連接后形成可執(zhí)行的機(jī)器碼,供DSP進(jìn)行運(yùn)算和其它操作。匯編語言指令匯編偽指令宏指令第3章匯編語言指令系統(tǒng)3.1C54x匯編語言指令集介紹
第3章匯編語言指令系統(tǒng)3.1.1指令系統(tǒng)中的符號(hào)、縮寫及操作符
指令系統(tǒng)中采用的符號(hào)和縮寫如下列表中所示序號(hào)符號(hào)含
義1A累加器A2ALU算術(shù)邏輯運(yùn)算單元3AR泛指通用輔助寄存器4ARx指定某一輔助寄存器AR0~AR75ARP
ST0中的3位輔助寄存器指針6ASM
ST1中的5位累加器移位方式位-16~157B累加器B8BRAF
ST1中的塊重復(fù)操作標(biāo)志9BRC塊重復(fù)操作寄存器10BITC或bit_code用于測試指令,指定數(shù)據(jù)存儲(chǔ)器單元中的哪一位被測試,取指范圍:0~15第3章匯編語言指令系統(tǒng)序號(hào)符號(hào)含
義11C16
ST1中的雙16位/雙精度算術(shù)運(yùn)算方式位12C
ST0中的進(jìn)位位13CC
2位條件碼(0CC3)14CMPT
ST1中的ARP修正方式位15CPL
ST1中的直接尋址編輯標(biāo)志位16cond表示一種條件的操作數(shù),用于條件執(zhí)行指令17[d],[D]延時(shí)選項(xiàng)18DAB
D地址總線19DAR
DAB地址寄存器20dmad
16位立即數(shù)數(shù)據(jù)存儲(chǔ)器地址(0~65535)3.1.1指令系統(tǒng)中的符號(hào)、縮寫及操作符
第3章匯編語言指令系統(tǒng)序號(hào)符號(hào)含
義21Dmem數(shù)據(jù)存儲(chǔ)器操作數(shù)22DP
ST0中的數(shù)據(jù)存儲(chǔ)器頁指針(0DP511)23Dst目的累加器(A和B)24dst_與dst相反的目的累加器25EAB
E地址總線26EAR
EAB地址總線27extpmad
23位立即程序存儲(chǔ)器地址28FRCT
ST1中的小數(shù)方式位29hi(A)累加器的高階位(AH或BH)30HM
ST1中的保持方式位3.1.1指令系統(tǒng)中的符號(hào)、縮寫及操作符
第3章匯編語言指令系統(tǒng)序號(hào)符號(hào)含
義31IFR中斷標(biāo)志寄存器32INTM
ST1中的中斷屏蔽位33K少于9位的短立即數(shù)34k3
3位立即數(shù)(0k37)35k5
5位立即數(shù)(-16k515)36k9
9位立即數(shù)(0k9511)37lk
16位長立即數(shù)38Lmem利用長字尋址的32位單數(shù)據(jù)存儲(chǔ)器操作數(shù)39Mmr,MMR存儲(chǔ)器映像寄存器40MMRx,MMRy存儲(chǔ)器映像寄存器,AR0~AR7或SP3.1.1指令系統(tǒng)中的符號(hào)、縮寫及操作符
第3章匯編語言指令系統(tǒng)序號(hào)符號(hào)含
義41n
XC指令后面的字?jǐn)?shù),取1或242N指定狀態(tài)寄存器,N=0為ST0,N=1為ST143OVA
ST0中的累加器A溢出標(biāo)志44OVB
ST0中的累加器B溢出標(biāo)志45OVdst指定目的累加器(A或B)的溢出標(biāo)志46OVdst_指定與Ovdst相反的目的累加器的溢出標(biāo)志47OVsrc指定源累加器(A或B)的溢出標(biāo)志48OVM
ST1中的溢出方式位49PA
16位立即端口地址(0PA65535)50PAR程序存儲(chǔ)器地址寄存器3.1.1指令系統(tǒng)中的符號(hào)、縮寫及操作符
第3章匯編語言指令系統(tǒng)序號(hào)符號(hào)含
義51PC程序計(jì)數(shù)器52pmad
16位立即程序存儲(chǔ)器地址(0pmad65535)53pmem程序存儲(chǔ)器操作數(shù)54PMST處理器工作方式狀態(tài)寄存器55prog程序存儲(chǔ)器操作數(shù)56[R]舍入選項(xiàng)57rnd循環(huán)尋址58RC重復(fù)計(jì)數(shù)器59RTN快速返回寄存器60REA塊重復(fù)結(jié)束地址寄存器3.1.1指令系統(tǒng)中的符號(hào)、縮寫及操作符
第3章匯編語言指令系統(tǒng)序號(hào)符號(hào)含
義61RSA塊重復(fù)起始地址寄存器62SBIT用于指定狀態(tài)寄存器位的4位地址(0~15)63SHFT
4位移位值(0~15)64SHIFT
5位移位值(-16~15)65Sind間接尋址的單數(shù)據(jù)存儲(chǔ)器操作數(shù)66Smem
16位單數(shù)據(jù)存儲(chǔ)器操作數(shù)67SP堆棧指針寄存器68src源累加器(A或B)69ST0,ST1狀態(tài)寄存器0,狀態(tài)寄存器170SXM
ST1中的符號(hào)擴(kuò)展方式位3.1.1指令系統(tǒng)中的符號(hào)、縮寫及操作符
第3章匯編語言指令系統(tǒng)序號(hào)符號(hào)含
義71T暫存器72TC
ST0中的測試/控制標(biāo)志73TOS堆棧頂部74TRN狀態(tài)轉(zhuǎn)移寄存器75TS由T寄存器的5~0位所規(guī)定的移位數(shù)(-16~31)76uns無符號(hào)數(shù)77XF
ST1中的外部標(biāo)志狀態(tài)位78XPC程序計(jì)數(shù)器擴(kuò)展寄存器79Xmem
16位雙數(shù)據(jù)存儲(chǔ)器操作數(shù),用于雙數(shù)據(jù)操作數(shù)指令80Ymem
16位雙數(shù)據(jù)存儲(chǔ)器操作數(shù),用于雙數(shù)據(jù)操作數(shù)指令和單數(shù)據(jù)操作指令3.1.1指令系統(tǒng)中的符號(hào)、縮寫及操作符
第3章匯編語言指令系統(tǒng)序號(hào)符號(hào)含
義81--SP堆棧指針值減182++SP堆棧指針值加183++PC程序計(jì)數(shù)器值加13.1.1指令系統(tǒng)中的符號(hào)、縮寫及操作符
第3章匯編語言指令系統(tǒng)3.1.1指令系統(tǒng)中的符號(hào)、縮寫及操作符
指令系統(tǒng)中的運(yùn)算符號(hào)及優(yōu)先級(jí)如下列表中所示序號(hào)符號(hào)運(yùn)算功能求值順序1+-~!取正、取負(fù)、按位求補(bǔ)、邏輯負(fù)
從右至左2*/%乘法、除法、求模從左至右3+-加法、減法從左至右4^指數(shù)
從左到右
5<<>>左移、右移從左至右6<小于、小于等于從左至右7>大于、大于等于從左至右8!=不等于從左至右第3章匯編語言指令系統(tǒng)序號(hào)符號(hào)運(yùn)算功能求值順序8=等于從左至右9&按位與運(yùn)算(AND)從左至右10∧
按位異或運(yùn)算(exclusiveOR)從左至右11|按位或運(yùn)算(OR)從左至右3.1.1指令系統(tǒng)中的符號(hào)、縮寫及操作符
本節(jié)以LD裝載指令為例,說明指令的格式和其它一些有用信息。
匯編語法操作數(shù)指令代碼執(zhí)行狀態(tài)位說明指令字長周期數(shù)
第3章匯編語言指令系統(tǒng)3.1.2匯編語言指令舉例(P61)第3章匯編語言指令系統(tǒng)3.2尋址方式
C54x的尋址方式共有下列7種:立即尋址絕對(duì)尋址累加器尋址直接尋址間接尋址存儲(chǔ)器映像寄存器尋址堆棧尋址
立即尋址是指指令中的操作數(shù)是一個(gè)立即數(shù),用#表示??墒褂昧⒓磳ぶ返闹噶罴傲⒓磾?shù)的位數(shù)如下表所示:第3章匯編語言指令系統(tǒng)3.2.1立即尋址3位或5位立即數(shù)
8位立即數(shù)
9位立即數(shù)
16位立即數(shù)
LD
FRAMELDRPT
LD
ADDBITFORSTADDMCMPMORMSTMANDLDRPTSUBANDMMACRPTZXORXORM例:LD#4,DP;4->DP指令代碼:EA04h第3章匯編語言指令系統(tǒng)3.2.2絕對(duì)尋址第3章匯編語言指令系統(tǒng)絕對(duì)尋址是指指令中包含著操作數(shù)的地址。
絕對(duì)尋址有下列4種類型:數(shù)據(jù)存儲(chǔ)器(dmad)尋址程序存儲(chǔ)器(pmad)尋址
I/O端口(PA)尋址
*(lk)尋址相關(guān)指令如下表所示:第3章匯編語言指令系統(tǒng)3.2.2絕對(duì)尋址絕對(duì)尋址方式相關(guān)指令數(shù)據(jù)存儲(chǔ)器(dmad)尋址
MVDKSmem,dmad
MVDMdmad,MMR
MVKDdmad,Smem
MVMDMMR,dmad
程序存儲(chǔ)器(pmad)尋址
FIRSXmem,Ymem,pmad
MACDSmem,pmad,src絕對(duì)尋址的地址,通常用一個(gè)在程序的初始化中指定的地址標(biāo)號(hào)或符號(hào)來指明該數(shù)據(jù)存儲(chǔ)器地址絕對(duì)尋址的地址,通常用一個(gè)在程序的初始化中指定的地址標(biāo)號(hào)或符號(hào)來指明該程序存儲(chǔ)器地址第3章匯編語言指令系統(tǒng)絕對(duì)尋址方式相關(guān)指令程序存儲(chǔ)器(pmad)尋址
MACPSmem,pmad,src
MVDPSmem,pmad
MVPDpmad,SmemI/O端口(PA)尋址
PORTRPA,Smem
PORTWSmem,PA
*(lk)尋址
可用于所有支持單數(shù)據(jù)操作數(shù)(Smem)
的指令,通過*(lk)可以尋址數(shù)據(jù)空間的任意地址
3.2.2絕對(duì)尋址絕對(duì)尋址的地址,通常用一個(gè)在程序的初始化中指定的地址標(biāo)號(hào)或符號(hào)來指明該IO口地址LD*AR3,ALD*(BUFFER),B該指令的功能是指將標(biāo)號(hào)為BUFFER的數(shù)據(jù)存儲(chǔ)器單元的內(nèi)容送入累加器B.累加器尋址是將累加器A中的內(nèi)容(低16位)作為程序存儲(chǔ)器的地址,完成程序空間和數(shù)據(jù)空間的數(shù)據(jù)訪問的一種方式。
有兩條指令采用這種尋址方式
:第3章匯編語言指令系統(tǒng)3.2.3累加器尋址
累加器尋址指令解釋READASmem
A中內(nèi)容為程序存儲(chǔ)器地址,將該地址中的數(shù)據(jù)送入Smem指定的數(shù)據(jù)存儲(chǔ)器中WRITASmem
將Smem指定的數(shù)據(jù)存儲(chǔ)器中的內(nèi)
容送入A所指出的程序存儲(chǔ)器中
直接尋址是指利用指令中的地址偏移量dma與數(shù)據(jù)頁指針DP或堆棧指針SP組合,找到數(shù)據(jù)空間中的一個(gè)16位地址的方式。直接尋址的表示方法是在符號(hào)或偏移量前加@。如LD@60h,A
指令代碼格式如下所示:第3章匯編語言指令系統(tǒng)3.2.4直接尋址15~8
7
6~0
操作碼
I=0
數(shù)據(jù)存儲(chǔ)器地址(dmad)
7位直接尋址有兩種產(chǎn)生地址的方法,由ST1中的位CPL來控制CPL=0時(shí)
第3章匯編語言指令系統(tǒng)3.2.4直接尋址(基地址+偏移量)直接尋址指令15~876~0操作碼I=0dmad頁指針DP(位于ST0中)9位數(shù)據(jù)頁指針DP高9位低7位16位數(shù)據(jù)存儲(chǔ)器地址9位數(shù)據(jù)頁指針DPdmad0~5110~127可以訪問64K的數(shù)據(jù)空間CPL=1時(shí)
第3章匯編語言指令系統(tǒng)3.2.4直接尋址dmad低7位16位數(shù)據(jù)存儲(chǔ)器地址16位堆棧指針SP堆棧指針SPSP+dmad16位SP+dmad直接尋址指令15~876~0操作碼I=0dmad
間接尋址是指通過兩個(gè)輔助算術(shù)邏輯單元ARAU0、ARAU1及8個(gè)輔助寄存器AR0~AR7,間接獲得數(shù)據(jù)存儲(chǔ)器地址的方式。在這種方式下,輔助寄存器的內(nèi)容就是數(shù)據(jù)空間操作數(shù)的地址。
按照尋址目的可將間接尋址分為:單操作數(shù)尋址雙操作數(shù)尋址第3章匯編語言指令系統(tǒng)3.2.5間接尋址單操作數(shù)尋址
單操作數(shù)間接尋址可以使用所有8個(gè)輔助寄存器AR0~AR7存放數(shù)據(jù)空間的Smem地址,并具有16種不同的地址調(diào)整功能。第3章匯編語言指令系統(tǒng)3.2.5間接尋址單操作數(shù)尋址結(jié)構(gòu)圖如下所示:第3章匯編語言指令系統(tǒng)3.2.5間接尋址CAB、DAB、EAB負(fù)責(zé)傳送數(shù)據(jù)存儲(chǔ)器地址CB、DB、EB負(fù)責(zé)傳送讀/寫數(shù)據(jù)循環(huán)緩沖區(qū)長度寄存器相對(duì)位置輔助寄存器指針輔助算術(shù)邏輯運(yùn)算單元第3章匯編語言指令系統(tǒng)3.2.5間接尋址單操作數(shù)尋址
地址存放情況及地址調(diào)整功能共16種:(P68)
操作句法功
能說
明*
ARx
地址=ARx
ARx的內(nèi)容為數(shù)據(jù)存儲(chǔ)器地址*
+ARx
ARx=ARx+1
地址=ARx
ARx中的地址加1后,再尋址
*
ARx-
地址=ARx
ARx=ARx-1尋址結(jié)束后,ARx地址減1*
ARx+
地址=ARx
ARx=ARx+1尋址結(jié)束后,ARx地址加1*
ARx-0
地址=ARx
ARx=ARx-AR0
尋址結(jié)束后,從ARx中減去AR0的值第3章匯編語言指令系統(tǒng)3.2.5間接尋址單操作數(shù)尋址操作句法功
能說
明*
ARx+0
地址
=ARx
ARx=ARx+AR0
尋址結(jié)束后,把AR0加到ARx
中*
ARx-0B
地址=ARx
ARx=B(ARx-AR0)尋址結(jié)束后,用位倒序進(jìn)位的方法從ARx中減去AR0的值
*
ARx+0B
地址=ARx
ARx=B(ARx+AR0)尋址結(jié)束后,用位倒序進(jìn)位的方法將
AR0加到ARx中*
ARx-%
地址=ARx
ARx=Circ(ARx-1)尋址結(jié)束后,ARx中的地址值按循環(huán)減的方法減1*
ARx+%
地址=ARx
ARx=Circ(ARx+1)尋址結(jié)束后,ARx中的地址值按循環(huán)加的方法加1第3章匯編語言指令系統(tǒng)3.2.5間接尋址單操作數(shù)尋址操作句法功
能說
明*
ARx-0%
地址=ARx
ARx=Circ(ARx-AR0)
尋址結(jié)束后,按循環(huán)減的方法從
ARx中減去AR0中的值
*
ARx+0%
地址=ARx
ARx=Circ(ARx+AR0)
尋址結(jié)束后,按循環(huán)加的方法將AR0中的值加到ARx
*
ARx(lk)
地址=ARx+lk
ARx=ARx以ARx與16位數(shù)之和作為地址,尋址結(jié)束后,ARx中的值不變
*
+ARx(lk)
地址=ARx+lk
ARx=ARx+lk將一個(gè)16位帶符號(hào)數(shù)加到ARx,然后尋址*
ARx(lk)%
地址=Circ(ARx+lk)
ARx=Circ(ARx+lk)將一個(gè)16位帶符號(hào)數(shù)按循環(huán)加的方法加至ARx,然后再尋址*
(lk)
地址=(lk)利用16位無符號(hào)數(shù)作為地址,尋址數(shù)據(jù)存儲(chǔ)器位反向?qū)ぶ肺环聪驅(qū)ぶ肥菍iT為快速傅立葉變換FFT而設(shè)計(jì)的。4位二進(jìn)制數(shù)的原始地址與位反向地址的對(duì)應(yīng)關(guān)系如下表所示:
詳見P69表3-5第3章匯編語言指令系統(tǒng)3.2.5間接尋址(二個(gè)關(guān)鍵問題)第3章匯編語言指令系統(tǒng)3.2.5間接尋址正常順序原始地址位反向地址位反向順序00000000001000110008200100100430011110012401000010250101101010601100110670111111014位反向?qū)ぶ?/p>
第3章匯編語言指令系統(tǒng)3.2.5間接尋址正常順序原始地址位反向地址位反向順序81000000119100110019101010010151110111101131211000011313110110111114111001117151111111115位反向?qū)ぶ?/p>
第3章匯編語言指令系統(tǒng)3.2.5間接尋址循環(huán)尋址目的:提高運(yùn)算速度算法如下:
循環(huán)尋址的算法:If0偏移量+步長<
BK;
偏移量=偏移量+步長;Else
if偏移量+步長
BK;偏移量=偏移量+步長-BK;Else
if偏移量+步長
<0;偏移量=偏移量+步長+BK。①地址指針可由低向高增值變化,當(dāng)增至最高地址時(shí),能夠自動(dòng)返回最低地址;②或由高減量變化,當(dāng)減至最低地址時(shí),可自動(dòng)返回最高地址。第3章匯編語言指令系統(tǒng)3.2.5間接尋址循環(huán)尋址(P70幾個(gè)關(guān)鍵參量)
循環(huán)尋址示意圖如下所示:
循環(huán)緩沖區(qū)長度寄存器②雙操作數(shù)尋址
雙操作數(shù)尋址結(jié)構(gòu)圖如下所示:
第3章匯編語言指令系統(tǒng)3.2.5間接尋址第3章匯編語言指令系統(tǒng)3.2.5間接尋址②雙操作數(shù)尋址
雙操作數(shù)尋址有4種地址存放情況和地址調(diào)整功能:操作碼語法功能
說明
*
ARx地址=ARxARx中的內(nèi)容是數(shù)據(jù)存儲(chǔ)器地址
*
ARx-地址=ARxARx=ARx-1尋址后,ARx的地址減1
*
ARx+地址=ARxARx=ARx+1尋址后,ARx的地址加1
*
ARx+0%地址=ARxARx=circ(ARx+AR0)尋址后,AR0以循環(huán)尋址方式加到ARx中去
存儲(chǔ)器映像寄存器尋址是一種直接訪問存儲(chǔ)器映像寄存器MMR的方式,可以用來修改MMR的值。
有8條指令可以使用存儲(chǔ)器映像寄存器尋址:
第3章匯編語言指令系統(tǒng)3.2.6存儲(chǔ)器映像寄存器尋址第3章匯編語言指令系統(tǒng)3.2.6存儲(chǔ)器映像寄存器尋址存儲(chǔ)器映像寄存器尋址
LDMMMR,dstMVDMdmad,MMRMVMDMMR,dmadMVMMMMRx,MMRy
POPMMMR(出棧)PSHMMMR(入棧)STLMsrc,MMRSTM#lk,MMR
堆棧尋址用于進(jìn)行數(shù)據(jù)或者M(jìn)MR的入棧和出棧操作。C54X堆棧是下拉式堆棧,即入棧時(shí)地址值減小,而出棧時(shí)地址值增加。堆棧指針是16位的存儲(chǔ)器映像寄存器SP,它總是指向棧頂位置。下列4條指令使用堆棧尋址:
第3章匯編語言指令系統(tǒng)3.2.7堆棧尋址堆棧尋址
PSHDSmem
PSHMMMRPOPDSmemPOPMMMR
C54x的匯編語言指令集共有129條基本指令,按完成的功能可以分為6類:第3章匯編語言指令系統(tǒng)3.3C54x系列DSP的指令系統(tǒng)
數(shù)據(jù)存取指令算術(shù)運(yùn)算指令邏輯運(yùn)算指令
控制程序轉(zhuǎn)移指令重復(fù)操作指令并行操作指令本節(jié)只介紹非并行的數(shù)據(jù)存取指令,包括:第3章匯編語言指令系統(tǒng)3.3.1數(shù)據(jù)存取指令
加載指令存儲(chǔ)指令
32位長操作數(shù)的加載、存儲(chǔ)指令混合加載和存儲(chǔ)指令以累加器A或B為目標(biāo)操作數(shù)的LD指令
第3章匯編語言指令系統(tǒng)
加載指令
(LD)以累加器A或B為目標(biāo)操作數(shù)的LD指令
LDSmem,dstLDSmem,TS,dstLDSmem,16,dstLDSmem[,SHIFT],dstLDXmem,SHFT,dstLD#K,dstLD#lk[,SHFT],dstLD#lk,16,dstLDsrc,ASM[,dst]LDsrc[,SHIFT],dst例3.11LD*AR3,A1)當(dāng)SXM=0時(shí),進(jìn)行無符號(hào)數(shù)的加載第3章匯編語言指令系統(tǒng)
加載指令
指令執(zhí)行前
A0000000000SXM0AR30200數(shù)據(jù)存儲(chǔ)器
0200H95A6指令執(zhí)行后
A00000095A6SXM0AR30200數(shù)據(jù)存儲(chǔ)器
0200H95A6例3.11LD*AR3,A2)當(dāng)SXM=1時(shí),進(jìn)行有符號(hào)數(shù)的加載第3章匯編語言指令系統(tǒng)
加載指令
指令執(zhí)行前
A0000000000SXM1AR30200數(shù)據(jù)存儲(chǔ)器
0200H95A6指令執(zhí)行后
AFFFFFF95A6SXM1AR30200數(shù)據(jù)存儲(chǔ)器
0200H95A6例3.11LDA,4,B1)當(dāng)OVM=0時(shí),對(duì)溢出不進(jìn)行處理,僅通過OVB=1反映溢出第3章匯編語言指令系統(tǒng)
加載指令
指令執(zhí)行前A007FFF8000B000000FFFFOVB0OVM0指令執(zhí)行后A007FFF8000B07FFF80000OVB1OVM0例3.11LDA,4,B2)當(dāng)OVM=1時(shí),對(duì)溢出進(jìn)行處理(置32位最大的正數(shù))第3章匯編語言指令系統(tǒng)
加載指令
指令執(zhí)行前A007FFF8000B000000FFFFOVB0OVM0指令執(zhí)行后A007FFF8000B007FFFFFFFOVB1OVM1以暫存器T或ST0、ST1的DP、ASM及ARP字段為目標(biāo)操作數(shù)的LD指令
第3章匯編語言指令系統(tǒng)
加載指令
以暫存器T或ST0、ST1的DP、ASM及ARP字段為目標(biāo)操作數(shù)的LD指令
LDSmem,TLDSmem,DPLD#k9,DPLD#k5,ASMLD#k3,ARPLDSmem,ASM例3.13LD0,ASM第3章匯編語言指令系統(tǒng)
加載指令
ASM00DP3
數(shù)據(jù)存儲(chǔ)器
0180H1234指令執(zhí)行前指令執(zhí)行后
ASM14DP003
數(shù)據(jù)存儲(chǔ)器
0180H1234為MMR賦值的指令
第3章匯編語言指令系統(tǒng)②存儲(chǔ)指令(ST)
為MMR賦值的指令STLMsrc,MMR;
MMR=src(15-0),將累加器的低16位送入MMR,是1字1周期指令。STM#lk,MMR;
MMR=#lk,將長立即數(shù)送入
MMR,是2字2周期指令。例3.14
STLMA,*AR2(P77)第3章匯編語言指令系統(tǒng)②存儲(chǔ)指令
指令執(zhí)行前
A0012345678AR27315AR5(15h)3F69
指令執(zhí)行后
A0012345678AR20015AR55678
例3.15
STM#1357H,*AR4+
第3章匯編語言指令系統(tǒng)②存儲(chǔ)指令
指令執(zhí)行前
AR00000AR48010指令執(zhí)行后
AR01357AR40011
例3.16
STM#2468H,60H
第3章匯編語言指令系統(tǒng)②存儲(chǔ)指令
指令執(zhí)行前
0060H0000指令執(zhí)行后
0060H2468
STH和STL指令(H表高16位L表低16位)
第3章匯編語言指令系統(tǒng)②存儲(chǔ)指令
STH和
STL指令
STHsrc,Smem將AH或BH內(nèi)容送入SmemSTHsrc,ASM,SmemSTHsrc,SHFT,XmemSTHsrc[,SHIFT],SmemSTLsrc,SmemSTLsrc,ASM,SmemSTLsrc,SHFT,Xmem
STLsrc[,SHIFT],Smem
例3.17設(shè)累加器(A)=FF98765432HSTL A,8,da
第3章匯編語言指令系統(tǒng)②存儲(chǔ)指令
(da)=3200H
STL A,-8,da
STH A,8,da
STH A,-16,da
STH A,-8,da
(da)=7654H
(da)=7654H
(da)=FF98H
(da)=00FFH(SXM=0)
STH A,-16,da
(da)=FFFFH(SXM=1)
第3章匯編語言指令系統(tǒng)③
32位長操作數(shù)的加載、存儲(chǔ)指令及數(shù)據(jù)存放格式
32位長操作數(shù)的加載、存儲(chǔ)指令及數(shù)據(jù)存放格式DLDLmem,dst
在單周期內(nèi)同時(shí)利用CAB、CB和DAB、DB總線將32位Lmem
讀入累加器。是1字1周期指令。DSTsrc,Lmem
兩次使用EAB、EB總線將累加器的內(nèi)容分別寫入高16位和低16位數(shù)據(jù)存儲(chǔ)器。是1字2周期指令。
例3-18存放格式對(duì)數(shù)據(jù)存儲(chǔ)的影響(P78)
DSTB,*AR3+1)偶地址存放第3章匯編語言指令系統(tǒng)③
32位長操作數(shù)的加載、存儲(chǔ)指令及數(shù)據(jù)存放格式指令執(zhí)行前
B006CACBD90AR30100數(shù)據(jù)存儲(chǔ)器
0100H00000101H0000指令執(zhí)行后
B006CACBD90AR30102數(shù)據(jù)存儲(chǔ)器
0100H6CAC
0101HBD90第3章匯編語言指令系統(tǒng)③
32位長操作數(shù)的加載、存儲(chǔ)指令及數(shù)據(jù)存放格式
2)奇地址存放指令執(zhí)行前
B006CACBD90AR30101數(shù)據(jù)存儲(chǔ)器
0100H00000101H0000指令執(zhí)行后
B006CACBD90AR30103數(shù)據(jù)存儲(chǔ)器
0100HBD90
0101H6CAC例3-19存放格式對(duì)數(shù)據(jù)存儲(chǔ)的影響
DLD*AR3+,B1)偶地址存放第3章匯編語言指令系統(tǒng)③
32位長操作數(shù)的加載、存儲(chǔ)指令及數(shù)據(jù)存放格式指令執(zhí)行前
B0000000000AR30100數(shù)據(jù)存儲(chǔ)器
0100H6CAC0101HBD90指令執(zhí)行后
B006CACBD90AR30102數(shù)據(jù)存儲(chǔ)器
0100H6CAC
0101HBD90第3章匯編語言指令系統(tǒng)③
32位長操作數(shù)的加載、存儲(chǔ)指令及數(shù)據(jù)存放格式
2)奇地址存放指令執(zhí)行前
B0000000000AR30101數(shù)據(jù)存儲(chǔ)器
0100H6CAC0101HBD90指令執(zhí)行后
B00BD906CACAR30103數(shù)據(jù)存儲(chǔ)器
0100H6CAC
0101HBD90
C54x的算術(shù)運(yùn)算指令包括:第3章匯編語言指令系統(tǒng)3.3.2算術(shù)運(yùn)算指令基本算術(shù)運(yùn)算指令特殊運(yùn)算指令雙字(32位)算術(shù)運(yùn)算指令乘累加和乘累減指令
第3章匯編語言指令系統(tǒng)基本算術(shù)運(yùn)算指令加法指令操作字?jǐn)?shù)周期數(shù)
ADDSmem
,src
src=src+Smem
1
1
ADDSmem
,TS,src
src=src+Smem<<TS
1
1
ADDSmem
,16
,src[,dst]
dst=src+Smem<<16
1
1
ADDSmem,[,SHIFT],src[,dst]
dst=src+Smem<<SHIFT
2
2
ADDXmem
,SHFT
,src
src=src+Xmem<<SHFT
1
1
ADDXmem
,Ymem
,dst
dst=Xmem<<16+Ymem<<16
1
1
ADD#lk,[,SHFT],src[,dst]
dst=src+#lk<<SHFT
2
2ADD#lk,16,src[,dst]
dst=src+#lk<<16
2
2
ADDsrc,[,SHIFT][,dst]
dst=dst+src<<SHIFT
1
2
ADDsrc,ASM[,dst]
dst=dst+src<<ASM11
ADDCSmem
,src
src=src+Smem+C
1
1
ADDM#lk,Smem
Smem=Smem+#lk
2
2
ADDSSmem
,src
src=src+uns(Smem)
1
1第3章匯編語言指令系統(tǒng)減法指令操作字?jǐn)?shù)周期數(shù)
SUBSmem
,src
src=src-Smem
1
1
SUBSmem
,TS,src
src=src-Smem<<TS
1
1
SUBSmem
,16
,src[,dst]
dst=src-Smem<<16
1
1
SUBSmem,[,SHIFT],src[,dst]
dst=src-Smem<<SHIFT
2
2
SUBXmem
,SHFT
,src
src=src-Xmem<<SHFT
1
1
SUBXmem
,Ymem
,dst
dst=Xmem<<16-Ymem<<16
1
1
SUB#lk,[,SHFT],src[,dst]
dst=src-#lk<<SHFT
2
2SUB#lk,16,src[,dst]
dst=src-#lk<<16
2
2
SUBsrc,[,SHIFT][,dst]
dst=dst-src<<SHIFT
1
1
SUBsrc,ASM[,dst]
dst=dst-src<<ASM11
SUBBSmem
,src
src=src-Smem-C
1
1
SUBCSmem
,src
If(src-Smem<<15)>0,
src=(src-Smem<<15)<<1+1Elsesrc=src<<1
1
1
SUBSSmem
,src
src=src-uns(Smem)
1
1基本算術(shù)運(yùn)算指令第3章匯編語言指令系統(tǒng)乘法指令操作字?jǐn)?shù)周期數(shù)
MPYSmem
,dst
dst=T*Smem
1
1
MPYRSmem
,dst
dst=rnd(T*Smem)
1
1
MPYXmem
,Ymem
,dst
dst=Xmem
*Ymem,T=Xmem
1
1
MPYSmem
,#lk
,dst
dst=Smem
*#lk
,T=Smem
2
2
MPY#lk
,dst
dst=T*#lk
2
2
MPYA
dst
dst=T*A(32-16)
1
1
MPYASmem
B=Smem*A(32-16),T=Smem
1
1
MPYUSmem
,dst
dst=uns(T)*uns(Smem)
1
1
SQURSmem
,dst
dst=Smem
*Smem,T=Smem
1
1
SQURA,dst
dst=A(32-16)*A(32-16)
1
1基本算術(shù)運(yùn)算指令第3章匯編語言指令系統(tǒng)②
特殊運(yùn)算指令特殊運(yùn)算指令操作字?jǐn)?shù)周期數(shù)
ABDSTXmem
,Ymem
B
=B
+|A(32-16)|,A=(Xmem-Ymem)<<16
1
1
ABSsrc
[,dst
]
dst
=|src
|11
CMPLsrc
[,dst
]
dst
=src
1
1
DELAYSmem
(Smem
+1)=Smem
1
1
EXPsrc
T=帶符號(hào)數(shù)(src)-8
1
1
FIRSXmem
,Ymem
,
Pmad
B=B
–A*Pmad,A=(Xmem+Ymem)<<1623
LMSXmem
,Ymem
B=B+
Xmem
*Ymem,A=(A
+Xmem<<16)+215
1
1第3章匯編語言指令系統(tǒng)②
特殊運(yùn)算指令特殊運(yùn)算指令功能字?jǐn)?shù)周期數(shù)
MAXdst
dst
=max(A,B)
1
1
MINdst
dst
=min(A,B)11
NEGsrc
[,dst
]
dst
=-src
1
1
NORMsrc
[,dst
]
dst
=src<<TS,
dst
=norm(src,T)
1
1
POLYSmem
B=Smem<<16,A=rnd(A
*T
+B
)
1
1
RNDsrc
[,dst
]
dst
=src
+21511
SATsrc
Saturate(src)
1
1
SQDSTXmem
,Ymem
B=B+
A(32-16)*A(32-16)A=(Xmem-Ymem)<<16
1
1第3章匯編語言指令系統(tǒng)③
雙字(32位)算術(shù)運(yùn)算指令雙字指令操作字?jǐn)?shù)周期數(shù)C16=0C16=1DADDLmem,src[,dst]dst=
Lmem+srcdst(39~16)=Lmem(31~16)+src(31~16)dst(15~0)=Lmem(15~0)+src(15~0)1
1DADSTLmem,dstdst=
Lmem+(T<<16+T)dst(39~16)=Lmem(31~16)+Tdst(15~0)=Lmem(15~0)–T11DRSUBLmem,srcsrc=
Lmem–srcsrc(39~16)=Lmem(31~16)–src(31~16)src(15~0)=Lmem(15~0)–src(15~0)
1
1第3章匯編語言指令系統(tǒng)③
雙字(32位)算術(shù)運(yùn)算指令雙字指令操作字?jǐn)?shù)周期數(shù)C16=0C16=1DSADTLmem,dstdst=
Lmem–(T<<16+T)dst(39~16)=Lmem(31~16)–Tdst(15~0)=Lmem(15~0)+T1
1DSUBLmem,srcsrc=
src–Lmemsrc(39~16)=src(31~16)–mem(31~16)src(15~0)=src(15~0)–mem(15~0)
1
1DSUBTLmem,dstdst=
Lmem–(T<<16+T)dst(39~16)=Lmem(31~16)–Tdst(15~0)=Lmem(15~0)–T
1
1對(duì)常用的乘累加指令的分析:
第3章匯編語言指令系統(tǒng)④
乘累加和乘累減指令MAC[R]MACA[R]MACP和MACDMACSUXmem,Ymem,src
指令MACDSmem,pmad,src
的操作框圖如下圖所示:第3章匯編語言指令系統(tǒng)④
乘累加和乘累減指令第3章匯編語言指令系統(tǒng)④
乘累加和乘累減指令指令操作字?jǐn)?shù)周期數(shù)MACSmem,srcsrc=src+T*Smem
11MACRSmem,srcsrc=rnd(src+T*Smem)11MAC#lk,src[,dst]dst=src+T*#lk
22MACSmem,#lk,src[,dst]dst=src+Smem*#lk,T=Smem22MACXmem,Ymem,src[,dst]dst=src+Xmem*Ymem,T=Xmem11MACRXmem,Ymem,src[,dst]dst=rnd(src+Xmem*Ymem),T=Xmem11MACASmem[,B]B=B+Smem*A(32~16),T=Smem11MACARSmem[,B]B=B+rnd(Smem*A(32~16)),T=Smem11第3章匯編語言指令系統(tǒng)④
乘累加和乘累減指令指令操作字?jǐn)?shù)周期數(shù)MACAT,src[,dst]
dst=src+T*A(32~16)11MACART,src[,dst]
dst=rnd(src+T*A(32~16))11MACDSmem,pmad,src
src=src+Smem*pmad,T=Smem,(Smem+1)=Smem23MACPSmem,pmad,srcsrc=src+Smem*pmad,T=Smem
23MACSUXmem,Ymem,src
src=src+uns(Xmem)*Ymem,T=Xmem11MASSmem,src
src=src–T*Smem
11MASRSmem,src
src=rnd(src–T*Smem)
11第3章匯編語言指令系統(tǒng)④
乘累加和乘累減指令指令操作字?jǐn)?shù)周期數(shù)MASXmem,Ymem,src[,dst]dst=src–Xmem*Ymem,T=Xmem
11MASRXmem,Ymem,src[,dst]dst=rnd(src–Xmem*Ymem),T=Xmem
11MASASmem[,B]B=B–Smem*A(32~16),T=Smem
11MASAT,src[,dst]dst=src–T*A(32~16)11MASART,src[,dst]dst=rnd(src–T*A(32~16))11SQURASmem,src
src=src+Smem*Smem,T=Smem
11SQURSSmem,src
src=src–Smem*Smem,T=Smem
11邏輯運(yùn)算指令包括:第3章匯編語言指令系統(tǒng)3.3.3邏輯運(yùn)算指令布爾型指令移位指令測試指令
第3章匯編語言指令系統(tǒng)布爾型指令與指令操作字?jǐn)?shù)周期數(shù)
ANDSmem
,src
src
=src&Smem
1
1
AND#lk[,SHFT],src[,dst]
dst
=srclk<<SHFT
2
2AND#lk,16,src[,dst]
dst
=srclk<<16
2
2
ANDsrc[,SHIFT][,dst]
dst=dst&src<<SHIFT
1
1
ANDM#lk,Smem
Smem
=Smemlk
2
2第3章匯編語言指令系統(tǒng)或指令操作字?jǐn)?shù)周期數(shù)
ORSmem
,src
src
=src
|
Smem
1
1
OR#lk[,SHFT],src[,dst]
dst
=src
|#lk<<SHFT
2
2OR#lk,16,src[,dst]
dst
=src
|#lk<<16
2
2
ORsrc[,SHIFT][,dst]
dst=dst
|
src<<SHIFT
1
1
ORM#lk,Smem
Smem
=Smem
|#lk
2
2布爾型指令第3章匯編語言指令系統(tǒng)異或指令操作字?jǐn)?shù)周期數(shù)
XORSmem
,src
src
=src
Smem
1
1
XOR#lk[,SHFT],src[,dst]
dst
=src
#lk<<SHFT
2
2XOR#lk,16,src[,dst]
dst
=src
#lk<<16
2
2
XORsrc[,SHIFT][,dst]
dst=dst
src<<SHIFT
1
1
XORM#lk,Smem
Smem
=Smem
#lk
2
2布爾型指令
移位指令共6條,都是單字單周期指令。第3章匯編語言指令系統(tǒng)②
移位指令指令操作ROLsrc帶進(jìn)位位C的循環(huán)左移ROLTCsrc帶測試位TC的循環(huán)左移RORsrc帶進(jìn)位位C的循環(huán)右移SFTAsrc,SHIFT[,dst]
dst=src<<SHIFT{算術(shù)移位}SFTCsrc若
src(31)=src(30)則
src=src<<1{條件移位}SFTLsrc,SHIFT[,dst]
dst=src<<SHIFT{邏輯移位}
帶進(jìn)位位C的循環(huán)左移ROL移位示意圖如下:
39~32310累加器src保護(hù)位第3章匯編語言指令系統(tǒng)②
移位指令C0
帶進(jìn)位位C的循環(huán)右移ROR移位示意圖如下:
39~32310累加器src保護(hù)位第3章匯編語言指令系統(tǒng)②
移位指令C0
帶測試位TC的循環(huán)左移ROLTC移位示意圖如下:
39~32310累加器src保護(hù)位第3章匯編語言指令系統(tǒng)②
移位指令TC0
C邏輯移位指令SFTLsrc,SHIFT的操作示意圖:
0﹤SHIFT≤15時(shí)
39~32310累加器src保護(hù)位第3章匯編語言指令系統(tǒng)②
移位指令0
C0
邏輯移位指令SFTLsrc,SHIFT的操作示意圖:
-16≤
SHIFT≤0時(shí)
39~32310累加器src保護(hù)位第3章匯編語言指令系統(tǒng)②
移位指令0
C0
第3章匯編語言指令系統(tǒng)②
移位指令邏輯移位指令SFTLsrc,SHIFT的操作示意圖:
SHIFT=0時(shí)C0
算術(shù)移位指令SFTAsrc,SHIFT的操作示意圖:
0﹤SHIFT≤15時(shí)
39
0累加器src第3章匯編語言指令系統(tǒng)②
移位指令C0
算術(shù)移位指令SFTAsrc,SHIFT的操作示意圖:
-16≤SHIFT≤0,且SXM=039
0累加器src第3章匯編語言指令系統(tǒng)②
移位指令0
C算術(shù)移位指令SFTAsrc,SHIFT的操作示意圖:
-16≤SHIFT≤0,且SXM=1
39累加器src0第3章匯編語言指令系統(tǒng)②
移位指令C
測試指令通常和條件轉(zhuǎn)移等指令結(jié)合,實(shí)現(xiàn)程序轉(zhuǎn)移,或用于檢測數(shù)據(jù)的正、負(fù)極性,數(shù)據(jù)的位狀態(tài)等。第3章匯編語言指令系統(tǒng)③
測試指令
測試指令操作字?jǐn)?shù)周期數(shù)BITXmem,BITCTC=Xmem(15–BITC)測試Xmem中指定的某位11BITFSmem,#lkTC=(Smem&lk)測試Smem中指定的某些位22BITTSmemTC=Smem(15–T(3~0))測試由T指定的位11CMPMSmem,#lkTC=(Smem==#lk)比較Smem與長立即數(shù)是否相等22CMPRCC,ARxARx與AR0進(jìn)行比較11
控制程序轉(zhuǎn)移類指令的功能是改變程序執(zhí)行的順序,可劃分為6類:
第3章匯編語言指令系統(tǒng)3.3.4控制程序轉(zhuǎn)移指令(P89)跳轉(zhuǎn)指令調(diào)用和返回指令中斷指令堆棧操作指令重復(fù)指令其它程序控制指令第3章匯編語言指令系統(tǒng)①跳轉(zhuǎn)指令跳轉(zhuǎn)指令分類指令操作字?jǐn)?shù)周期數(shù)近程無條件轉(zhuǎn)移B[D]pmadPC=pmad(15~0)24/[2]BACC[D]srcPC=src(15~0)16/[4]遠(yuǎn)程無條件轉(zhuǎn)移FB[D]extpmadPC=pmad(15~0),XPC=pmad(22~16)24/[2]FBACC[D]srcPC=src(15~0),XPC=src(22~16)16/[4]近程條件轉(zhuǎn)移BC[D]pmad,cond[,cond[,cond]]若條件(cond(s))滿足,則PC=pmad(15~0)25/3//[3]BANZ[D]pmad,Sind若(Sind≠0)則PC=pmad(15~0)24/2/
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《合伙人合同協(xié)議書補(bǔ)充協(xié)議》
- 雙方調(diào)解協(xié)議模板大全
- 公司股份合作協(xié)議書范本10篇
- 全國賽課一等獎(jiǎng)初中統(tǒng)編版七年級(jí)道德與法治上冊(cè)《樹立正確的人生目標(biāo)》課件
- (2024)商業(yè)街建設(shè)項(xiàng)目可行性研究報(bào)告建議書(一)
- 2023年胺類項(xiàng)目融資計(jì)劃書
- 《基本透視原理》課件
- 山東省棗莊市薛城區(qū)2022-2023學(xué)年八年級(jí)上學(xué)期期末考試數(shù)學(xué)試卷(含答案)
- 養(yǎng)老院老人生活設(shè)施維護(hù)制度
- 養(yǎng)老院老人財(cái)務(wù)管理制度
- 電力機(jī)車運(yùn)用與操縱 課件 項(xiàng)目5、6 電力機(jī)車乘務(wù)員一次標(biāo)準(zhǔn)化、非正常行車
- 教育信息化2.0時(shí)代教師新技能進(jìn)階智慧樹知到期末考試答案2024年
- 信創(chuàng)安全培訓(xùn)
- 突發(fā)環(huán)境污染事故應(yīng)急預(yù)案編制(非常實(shí)用)課件
- 醫(yī)療機(jī)構(gòu)執(zhí)業(yè)管理
- 基于STM32的智能風(fēng)扇
- 2023年人教版初一數(shù)學(xué)上冊(cè)期末測試題及答案
- 夜市一條街建設(shè)方案
- 美食城計(jì)劃書
- 電池制造中的超聲波焊接與連接技術(shù)
- 2024年新版消防設(shè)施操作員初級(jí)考試題庫(含答案)
評(píng)論
0/150
提交評(píng)論