




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
在DSP應用中,雖然可以使用C/C++高級語言編程,降低了對編程者的要求,但在一些實時性要求高的場合仍然需要采用匯編編程,以充分利用DSP豐富的硬件資源,發揮它的實時運算能力。用匯編語言編程,要求編程者對DSP的低層有充分的了解,包括硬件結構、存儲器空間模型和I/O口的組織等。同時又要求編程者對指令系統有深刻的了解。第3章匯編語言指令系統
目錄:
3.1C54x匯編語言指令集介紹
3.2尋址方式
3.3C54x系列DSP的指令系統
第3章匯編語言指令系統
C54x指令集包括:本章介紹C54xDSP的匯編語言指令系統。與其它CPU的指令集相同,匯編語言指令又稱為硬指令,它們在匯編和連接后形成可執行的機器碼,供DSP進行運算和其它操作。匯編語言指令匯編偽指令宏指令第3章匯編語言指令系統3.1C54x匯編語言指令集介紹
第3章匯編語言指令系統3.1.1指令系統中的符號、縮寫及操作符
指令系統中采用的符號和縮寫如下列表中所示序號符號含
義1A累加器A2ALU算術邏輯運算單元3AR泛指通用輔助寄存器4ARx指定某一輔助寄存器AR0~AR75ARP
ST0中的3位輔助寄存器指針6ASM
ST1中的5位累加器移位方式位-16~157B累加器B8BRAF
ST1中的塊重復操作標志9BRC塊重復操作寄存器10BITC或bit_code用于測試指令,指定數據存儲器單元中的哪一位被測試,取指范圍:0~15第3章匯編語言指令系統序號符號含
義11C16
ST1中的雙16位/雙精度算術運算方式位12C
ST0中的進位位13CC
2位條件碼(0CC3)14CMPT
ST1中的ARP修正方式位15CPL
ST1中的直接尋址編輯標志位16cond表示一種條件的操作數,用于條件執行指令17[d],[D]延時選項18DAB
D地址總線19DAR
DAB地址寄存器20dmad
16位立即數數據存儲器地址(0~65535)3.1.1指令系統中的符號、縮寫及操作符
第3章匯編語言指令系統序號符號含
義21Dmem數據存儲器操作數22DP
ST0中的數據存儲器頁指針(0DP511)23Dst目的累加器(A和B)24dst_與dst相反的目的累加器25EAB
E地址總線26EAR
EAB地址總線27extpmad
23位立即程序存儲器地址28FRCT
ST1中的小數方式位29hi(A)累加器的高階位(AH或BH)30HM
ST1中的保持方式位3.1.1指令系統中的符號、縮寫及操作符
第3章匯編語言指令系統序號符號含
義31IFR中斷標志寄存器32INTM
ST1中的中斷屏蔽位33K少于9位的短立即數34k3
3位立即數(0k37)35k5
5位立即數(-16k515)36k9
9位立即數(0k9511)37lk
16位長立即數38Lmem利用長字尋址的32位單數據存儲器操作數39Mmr,MMR存儲器映像寄存器40MMRx,MMRy存儲器映像寄存器,AR0~AR7或SP3.1.1指令系統中的符號、縮寫及操作符
第3章匯編語言指令系統序號符號含
義41n
XC指令后面的字數,取1或242N指定狀態寄存器,N=0為ST0,N=1為ST143OVA
ST0中的累加器A溢出標志44OVB
ST0中的累加器B溢出標志45OVdst指定目的累加器(A或B)的溢出標志46OVdst_指定與Ovdst相反的目的累加器的溢出標志47OVsrc指定源累加器(A或B)的溢出標志48OVM
ST1中的溢出方式位49PA
16位立即端口地址(0PA65535)50PAR程序存儲器地址寄存器3.1.1指令系統中的符號、縮寫及操作符
第3章匯編語言指令系統序號符號含
義51PC程序計數器52pmad
16位立即程序存儲器地址(0pmad65535)53pmem程序存儲器操作數54PMST處理器工作方式狀態寄存器55prog程序存儲器操作數56[R]舍入選項57rnd循環尋址58RC重復計數器59RTN快速返回寄存器60REA塊重復結束地址寄存器3.1.1指令系統中的符號、縮寫及操作符
第3章匯編語言指令系統序號符號含
義61RSA塊重復起始地址寄存器62SBIT用于指定狀態寄存器位的4位地址(0~15)63SHFT
4位移位值(0~15)64SHIFT
5位移位值(-16~15)65Sind間接尋址的單數據存儲器操作數66Smem
16位單數據存儲器操作數67SP堆棧指針寄存器68src源累加器(A或B)69ST0,ST1狀態寄存器0,狀態寄存器170SXM
ST1中的符號擴展方式位3.1.1指令系統中的符號、縮寫及操作符
第3章匯編語言指令系統序號符號含
義71T暫存器72TC
ST0中的測試/控制標志73TOS堆棧頂部74TRN狀態轉移寄存器75TS由T寄存器的5~0位所規定的移位數(-16~31)76uns無符號數77XF
ST1中的外部標志狀態位78XPC程序計數器擴展寄存器79Xmem
16位雙數據存儲器操作數,用于雙數據操作數指令80Ymem
16位雙數據存儲器操作數,用于雙數據操作數指令和單數據操作指令3.1.1指令系統中的符號、縮寫及操作符
第3章匯編語言指令系統序號符號含
義81--SP堆棧指針值減182++SP堆棧指針值加183++PC程序計數器值加13.1.1指令系統中的符號、縮寫及操作符
第3章匯編語言指令系統3.1.1指令系統中的符號、縮寫及操作符
指令系統中的運算符號及優先級如下列表中所示序號符號運算功能求值順序1+-~!取正、取負、按位求補、邏輯負
從右至左2*/%乘法、除法、求模從左至右3+-加法、減法從左至右4^指數
從左到右
5<<>>左移、右移從左至右6<小于、小于等于從左至右7>大于、大于等于從左至右8!=不等于從左至右第3章匯編語言指令系統序號符號運算功能求值順序8=等于從左至右9&按位與運算(AND)從左至右10∧
按位異或運算(exclusiveOR)從左至右11|按位或運算(OR)從左至右3.1.1指令系統中的符號、縮寫及操作符
本節以LD裝載指令為例,說明指令的格式和其它一些有用信息。
匯編語法操作數指令代碼執行狀態位說明指令字長周期數
第3章匯編語言指令系統3.1.2匯編語言指令舉例(P61)第3章匯編語言指令系統3.2尋址方式
C54x的尋址方式共有下列7種:立即尋址絕對尋址累加器尋址直接尋址間接尋址存儲器映像寄存器尋址堆棧尋址
立即尋址是指指令中的操作數是一個立即數,用#表示。可使用立即尋址的指令及立即數的位數如下表所示:第3章匯編語言指令系統3.2.1立即尋址3位或5位立即數
8位立即數
9位立即數
16位立即數
LD
FRAMELDRPT
LD
ADDBITFORSTADDMCMPMORMSTMANDLDRPTSUBANDMMACRPTZXORXORM例:LD#4,DP;4->DP指令代碼:EA04h第3章匯編語言指令系統3.2.2絕對尋址第3章匯編語言指令系統絕對尋址是指指令中包含著操作數的地址。
絕對尋址有下列4種類型:數據存儲器(dmad)尋址程序存儲器(pmad)尋址
I/O端口(PA)尋址
*(lk)尋址相關指令如下表所示:第3章匯編語言指令系統3.2.2絕對尋址絕對尋址方式相關指令數據存儲器(dmad)尋址
MVDKSmem,dmad
MVDMdmad,MMR
MVKDdmad,Smem
MVMDMMR,dmad
程序存儲器(pmad)尋址
FIRSXmem,Ymem,pmad
MACDSmem,pmad,src絕對尋址的地址,通常用一個在程序的初始化中指定的地址標號或符號來指明該數據存儲器地址絕對尋址的地址,通常用一個在程序的初始化中指定的地址標號或符號來指明該程序存儲器地址第3章匯編語言指令系統絕對尋址方式相關指令程序存儲器(pmad)尋址
MACPSmem,pmad,src
MVDPSmem,pmad
MVPDpmad,SmemI/O端口(PA)尋址
PORTRPA,Smem
PORTWSmem,PA
*(lk)尋址
可用于所有支持單數據操作數(Smem)
的指令,通過*(lk)可以尋址數據空間的任意地址
3.2.2絕對尋址絕對尋址的地址,通常用一個在程序的初始化中指定的地址標號或符號來指明該IO口地址LD*AR3,ALD*(BUFFER),B該指令的功能是指將標號為BUFFER的數據存儲器單元的內容送入累加器B.累加器尋址是將累加器A中的內容(低16位)作為程序存儲器的地址,完成程序空間和數據空間的數據訪問的一種方式。
有兩條指令采用這種尋址方式
:第3章匯編語言指令系統3.2.3累加器尋址
累加器尋址指令解釋READASmem
A中內容為程序存儲器地址,將該地址中的數據送入Smem指定的數據存儲器中WRITASmem
將Smem指定的數據存儲器中的內
容送入A所指出的程序存儲器中
直接尋址是指利用指令中的地址偏移量dma與數據頁指針DP或堆棧指針SP組合,找到數據空間中的一個16位地址的方式。直接尋址的表示方法是在符號或偏移量前加@。如LD@60h,A
指令代碼格式如下所示:第3章匯編語言指令系統3.2.4直接尋址15~8
7
6~0
操作碼
I=0
數據存儲器地址(dmad)
7位直接尋址有兩種產生地址的方法,由ST1中的位CPL來控制CPL=0時
第3章匯編語言指令系統3.2.4直接尋址(基地址+偏移量)直接尋址指令15~876~0操作碼I=0dmad頁指針DP(位于ST0中)9位數據頁指針DP高9位低7位16位數據存儲器地址9位數據頁指針DPdmad0~5110~127可以訪問64K的數據空間CPL=1時
第3章匯編語言指令系統3.2.4直接尋址dmad低7位16位數據存儲器地址16位堆棧指針SP堆棧指針SPSP+dmad16位SP+dmad直接尋址指令15~876~0操作碼I=0dmad
間接尋址是指通過兩個輔助算術邏輯單元ARAU0、ARAU1及8個輔助寄存器AR0~AR7,間接獲得數據存儲器地址的方式。在這種方式下,輔助寄存器的內容就是數據空間操作數的地址。
按照尋址目的可將間接尋址分為:單操作數尋址雙操作數尋址第3章匯編語言指令系統3.2.5間接尋址單操作數尋址
單操作數間接尋址可以使用所有8個輔助寄存器AR0~AR7存放數據空間的Smem地址,并具有16種不同的地址調整功能。第3章匯編語言指令系統3.2.5間接尋址單操作數尋址結構圖如下所示:第3章匯編語言指令系統3.2.5間接尋址CAB、DAB、EAB負責傳送數據存儲器地址CB、DB、EB負責傳送讀/寫數據循環緩沖區長度寄存器相對位置輔助寄存器指針輔助算術邏輯運算單元第3章匯編語言指令系統3.2.5間接尋址單操作數尋址
地址存放情況及地址調整功能共16種:(P68)
操作句法功
能說
明*
ARx
地址=ARx
ARx的內容為數據存儲器地址*
+ARx
ARx=ARx+1
地址=ARx
ARx中的地址加1后,再尋址
*
ARx-
地址=ARx
ARx=ARx-1尋址結束后,ARx地址減1*
ARx+
地址=ARx
ARx=ARx+1尋址結束后,ARx地址加1*
ARx-0
地址=ARx
ARx=ARx-AR0
尋址結束后,從ARx中減去AR0的值第3章匯編語言指令系統3.2.5間接尋址單操作數尋址操作句法功
能說
明*
ARx+0
地址
=ARx
ARx=ARx+AR0
尋址結束后,把AR0加到ARx
中*
ARx-0B
地址=ARx
ARx=B(ARx-AR0)尋址結束后,用位倒序進位的方法從ARx中減去AR0的值
*
ARx+0B
地址=ARx
ARx=B(ARx+AR0)尋址結束后,用位倒序進位的方法將
AR0加到ARx中*
ARx-%
地址=ARx
ARx=Circ(ARx-1)尋址結束后,ARx中的地址值按循環減的方法減1*
ARx+%
地址=ARx
ARx=Circ(ARx+1)尋址結束后,ARx中的地址值按循環加的方法加1第3章匯編語言指令系統3.2.5間接尋址單操作數尋址操作句法功
能說
明*
ARx-0%
地址=ARx
ARx=Circ(ARx-AR0)
尋址結束后,按循環減的方法從
ARx中減去AR0中的值
*
ARx+0%
地址=ARx
ARx=Circ(ARx+AR0)
尋址結束后,按循環加的方法將AR0中的值加到ARx
*
ARx(lk)
地址=ARx+lk
ARx=ARx以ARx與16位數之和作為地址,尋址結束后,ARx中的值不變
*
+ARx(lk)
地址=ARx+lk
ARx=ARx+lk將一個16位帶符號數加到ARx,然后尋址*
ARx(lk)%
地址=Circ(ARx+lk)
ARx=Circ(ARx+lk)將一個16位帶符號數按循環加的方法加至ARx,然后再尋址*
(lk)
地址=(lk)利用16位無符號數作為地址,尋址數據存儲器位反向尋址位反向尋址是專門為快速傅立葉變換FFT而設計的。4位二進制數的原始地址與位反向地址的對應關系如下表所示:
詳見P69表3-5第3章匯編語言指令系統3.2.5間接尋址(二個關鍵問題)第3章匯編語言指令系統3.2.5間接尋址正常順序原始地址位反向地址位反向順序00000000001000110008200100100430011110012401000010250101101010601100110670111111014位反向尋址
第3章匯編語言指令系統3.2.5間接尋址正常順序原始地址位反向地址位反向順序81000000119100110019101010010151110111101131211000011313110110111114111001117151111111115位反向尋址
第3章匯編語言指令系統3.2.5間接尋址循環尋址目的:提高運算速度算法如下:
循環尋址的算法:If0偏移量+步長<
BK;
偏移量=偏移量+步長;Else
if偏移量+步長
BK;偏移量=偏移量+步長-BK;Else
if偏移量+步長
<0;偏移量=偏移量+步長+BK。①地址指針可由低向高增值變化,當增至最高地址時,能夠自動返回最低地址;②或由高減量變化,當減至最低地址時,可自動返回最高地址。第3章匯編語言指令系統3.2.5間接尋址循環尋址(P70幾個關鍵參量)
循環尋址示意圖如下所示:
循環緩沖區長度寄存器②雙操作數尋址
雙操作數尋址結構圖如下所示:
第3章匯編語言指令系統3.2.5間接尋址第3章匯編語言指令系統3.2.5間接尋址②雙操作數尋址
雙操作數尋址有4種地址存放情況和地址調整功能:操作碼語法功能
說明
*
ARx地址=ARxARx中的內容是數據存儲器地址
*
ARx-地址=ARxARx=ARx-1尋址后,ARx的地址減1
*
ARx+地址=ARxARx=ARx+1尋址后,ARx的地址加1
*
ARx+0%地址=ARxARx=circ(ARx+AR0)尋址后,AR0以循環尋址方式加到ARx中去
存儲器映像寄存器尋址是一種直接訪問存儲器映像寄存器MMR的方式,可以用來修改MMR的值。
有8條指令可以使用存儲器映像寄存器尋址:
第3章匯編語言指令系統3.2.6存儲器映像寄存器尋址第3章匯編語言指令系統3.2.6存儲器映像寄存器尋址存儲器映像寄存器尋址
LDMMMR,dstMVDMdmad,MMRMVMDMMR,dmadMVMMMMRx,MMRy
POPMMMR(出棧)PSHMMMR(入棧)STLMsrc,MMRSTM#lk,MMR
堆棧尋址用于進行數據或者MMR的入棧和出棧操作。C54X堆棧是下拉式堆棧,即入棧時地址值減小,而出棧時地址值增加。堆棧指針是16位的存儲器映像寄存器SP,它總是指向棧頂位置。下列4條指令使用堆棧尋址:
第3章匯編語言指令系統3.2.7堆棧尋址堆棧尋址
PSHDSmem
PSHMMMRPOPDSmemPOPMMMR
C54x的匯編語言指令集共有129條基本指令,按完成的功能可以分為6類:第3章匯編語言指令系統3.3C54x系列DSP的指令系統
數據存取指令算術運算指令邏輯運算指令
控制程序轉移指令重復操作指令并行操作指令本節只介紹非并行的數據存取指令,包括:第3章匯編語言指令系統3.3.1數據存取指令
加載指令存儲指令
32位長操作數的加載、存儲指令混合加載和存儲指令以累加器A或B為目標操作數的LD指令
第3章匯編語言指令系統
加載指令
(LD)以累加器A或B為目標操作數的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)當SXM=0時,進行無符號數的加載第3章匯編語言指令系統
加載指令
指令執行前
A0000000000SXM0AR30200數據存儲器
0200H95A6指令執行后
A00000095A6SXM0AR30200數據存儲器
0200H95A6例3.11LD*AR3,A2)當SXM=1時,進行有符號數的加載第3章匯編語言指令系統
加載指令
指令執行前
A0000000000SXM1AR30200數據存儲器
0200H95A6指令執行后
AFFFFFF95A6SXM1AR30200數據存儲器
0200H95A6例3.11LDA,4,B1)當OVM=0時,對溢出不進行處理,僅通過OVB=1反映溢出第3章匯編語言指令系統
加載指令
指令執行前A007FFF8000B000000FFFFOVB0OVM0指令執行后A007FFF8000B07FFF80000OVB1OVM0例3.11LDA,4,B2)當OVM=1時,對溢出進行處理(置32位最大的正數)第3章匯編語言指令系統
加載指令
指令執行前A007FFF8000B000000FFFFOVB0OVM0指令執行后A007FFF8000B007FFFFFFFOVB1OVM1以暫存器T或ST0、ST1的DP、ASM及ARP字段為目標操作數的LD指令
第3章匯編語言指令系統
加載指令
以暫存器T或ST0、ST1的DP、ASM及ARP字段為目標操作數的LD指令
LDSmem,TLDSmem,DPLD#k9,DPLD#k5,ASMLD#k3,ARPLDSmem,ASM例3.13LD0,ASM第3章匯編語言指令系統
加載指令
ASM00DP3
數據存儲器
0180H1234指令執行前指令執行后
ASM14DP003
數據存儲器
0180H1234為MMR賦值的指令
第3章匯編語言指令系統②存儲指令(ST)
為MMR賦值的指令STLMsrc,MMR;
MMR=src(15-0),將累加器的低16位送入MMR,是1字1周期指令。STM#lk,MMR;
MMR=#lk,將長立即數送入
MMR,是2字2周期指令。例3.14
STLMA,*AR2(P77)第3章匯編語言指令系統②存儲指令
指令執行前
A0012345678AR27315AR5(15h)3F69
指令執行后
A0012345678AR20015AR55678
例3.15
STM#1357H,*AR4+
第3章匯編語言指令系統②存儲指令
指令執行前
AR00000AR48010指令執行后
AR01357AR40011
例3.16
STM#2468H,60H
第3章匯編語言指令系統②存儲指令
指令執行前
0060H0000指令執行后
0060H2468
STH和STL指令(H表高16位L表低16位)
第3章匯編語言指令系統②存儲指令
STH和
STL指令
STHsrc,Smem將AH或BH內容送入SmemSTHsrc,ASM,SmemSTHsrc,SHFT,XmemSTHsrc[,SHIFT],SmemSTLsrc,SmemSTLsrc,ASM,SmemSTLsrc,SHFT,Xmem
STLsrc[,SHIFT],Smem
例3.17設累加器(A)=FF98765432HSTL A,8,da
第3章匯編語言指令系統②存儲指令
(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章匯編語言指令系統③
32位長操作數的加載、存儲指令及數據存放格式
32位長操作數的加載、存儲指令及數據存放格式DLDLmem,dst
在單周期內同時利用CAB、CB和DAB、DB總線將32位Lmem
讀入累加器。是1字1周期指令。DSTsrc,Lmem
兩次使用EAB、EB總線將累加器的內容分別寫入高16位和低16位數據存儲器。是1字2周期指令。
例3-18存放格式對數據存儲的影響(P78)
DSTB,*AR3+1)偶地址存放第3章匯編語言指令系統③
32位長操作數的加載、存儲指令及數據存放格式指令執行前
B006CACBD90AR30100數據存儲器
0100H00000101H0000指令執行后
B006CACBD90AR30102數據存儲器
0100H6CAC
0101HBD90第3章匯編語言指令系統③
32位長操作數的加載、存儲指令及數據存放格式
2)奇地址存放指令執行前
B006CACBD90AR30101數據存儲器
0100H00000101H0000指令執行后
B006CACBD90AR30103數據存儲器
0100HBD90
0101H6CAC例3-19存放格式對數據存儲的影響
DLD*AR3+,B1)偶地址存放第3章匯編語言指令系統③
32位長操作數的加載、存儲指令及數據存放格式指令執行前
B0000000000AR30100數據存儲器
0100H6CAC0101HBD90指令執行后
B006CACBD90AR30102數據存儲器
0100H6CAC
0101HBD90第3章匯編語言指令系統③
32位長操作數的加載、存儲指令及數據存放格式
2)奇地址存放指令執行前
B0000000000AR30101數據存儲器
0100H6CAC0101HBD90指令執行后
B00BD906CACAR30103數據存儲器
0100H6CAC
0101HBD90
C54x的算術運算指令包括:第3章匯編語言指令系統3.3.2算術運算指令基本算術運算指令特殊運算指令雙字(32位)算術運算指令乘累加和乘累減指令
第3章匯編語言指令系統基本算術運算指令加法指令操作字數周期數
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章匯編語言指令系統減法指令操作字數周期數
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基本算術運算指令第3章匯編語言指令系統乘法指令操作字數周期數
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基本算術運算指令第3章匯編語言指令系統②
特殊運算指令特殊運算指令操作字數周期數
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=帶符號數(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章匯編語言指令系統②
特殊運算指令特殊運算指令功能字數周期數
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章匯編語言指令系統③
雙字(32位)算術運算指令雙字指令操作字數周期數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章匯編語言指令系統③
雙字(32位)算術運算指令雙字指令操作字數周期數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對常用的乘累加指令的分析:
第3章匯編語言指令系統④
乘累加和乘累減指令MAC[R]MACA[R]MACP和MACDMACSUXmem,Ymem,src
指令MACDSmem,pmad,src
的操作框圖如下圖所示:第3章匯編語言指令系統④
乘累加和乘累減指令第3章匯編語言指令系統④
乘累加和乘累減指令指令操作字數周期數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章匯編語言指令系統④
乘累加和乘累減指令指令操作字數周期數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章匯編語言指令系統④
乘累加和乘累減指令指令操作字數周期數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邏輯運算指令包括:第3章匯編語言指令系統3.3.3邏輯運算指令布爾型指令移位指令測試指令
第3章匯編語言指令系統布爾型指令與指令操作字數周期數
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章匯編語言指令系統或指令操作字數周期數
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章匯編語言指令系統異或指令操作字數周期數
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章匯編語言指令系統②
移位指令指令操作ROLsrc帶進位位C的循環左移ROLTCsrc帶測試位TC的循環左移RORsrc帶進位位C的循環右移SFTAsrc,SHIFT[,dst]
dst=src<<SHIFT{算術移位}SFTCsrc若
src(31)=src(30)則
src=src<<1{條件移位}SFTLsrc,SHIFT[,dst]
dst=src<<SHIFT{邏輯移位}
帶進位位C的循環左移ROL移位示意圖如下:
39~32310累加器src保護位第3章匯編語言指令系統②
移位指令C0
帶進位位C的循環右移ROR移位示意圖如下:
39~32310累加器src保護位第3章匯編語言指令系統②
移位指令C0
帶測試位TC的循環左移ROLTC移位示意圖如下:
39~32310累加器src保護位第3章匯編語言指令系統②
移位指令TC0
C邏輯移位指令SFTLsrc,SHIFT的操作示意圖:
0﹤SHIFT≤15時
39~32310累加器src保護位第3章匯編語言指令系統②
移位指令0
C0
邏輯移位指令SFTLsrc,SHIFT的操作示意圖:
-16≤
SHIFT≤0時
39~32310累加器src保護位第3章匯編語言指令系統②
移位指令0
C0
第3章匯編語言指令系統②
移位指令邏輯移位指令SFTLsrc,SHIFT的操作示意圖:
SHIFT=0時C0
算術移位指令SFTAsrc,SHIFT的操作示意圖:
0﹤SHIFT≤15時
39
0累加器src第3章匯編語言指令系統②
移位指令C0
算術移位指令SFTAsrc,SHIFT的操作示意圖:
-16≤SHIFT≤0,且SXM=039
0累加器src第3章匯編語言指令系統②
移位指令0
C算術移位指令SFTAsrc,SHIFT的操作示意圖:
-16≤SHIFT≤0,且SXM=1
39累加器src0第3章匯編語言指令系統②
移位指令C
測試指令通常和條件轉移等指令結合,實現程序轉移,或用于檢測數據的正、負極性,數據的位狀態等。第3章匯編語言指令系統③
測試指令
測試指令操作字數周期數BITXmem,BITCTC=Xmem(15–BITC)測試Xmem中指定的某位11BITFSmem,#lkTC=(Smem&lk)測試Smem中指定的某些位22BITTSmemTC=Smem(15–T(3~0))測試由T指定的位11CMPMSmem,#lkTC=(Smem==#lk)比較Smem與長立即數是否相等22CMPRCC,ARxARx與AR0進行比較11
控制程序轉移類指令的功能是改變程序執行的順序,可劃分為6類:
第3章匯編語言指令系統3.3.4控制程序轉移指令(P89)跳轉指令調用和返回指令中斷指令堆棧操作指令重復指令其它程序控制指令第3章匯編語言指令系統①跳轉指令跳轉指令分類指令操作字數周期數近程無條件轉移B[D]pmadPC=pmad(15~0)24/[2]BACC[D]srcPC=src(15~0)16/[4]遠程無條件轉移FB[D]extpmadPC=pmad(15~0),XPC=pmad(22~16)24/[2]FBACC[D]srcPC=src(15~0),XPC=src(22~16)16/[4]近程條件轉移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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年美容霜項目投資價值分析報告
- 2025至2030年混酸脂高沸點強溶劑項目投資價值分析報告
- 2025年份四月份涉外離婚協議公證與認證流程細則
- 2025至2030年方提籃項目投資價值分析報告
- 2025至2030年寧夏煤炭工業投資分析及前景預測報告
- 輸液中護理風險管理分析
- 2025至2030年中國4A沸石行業競爭策略研究及未來前景展望報告
- 2025至2030年2芯模擬音頻電纜項目投資價值分析報告
- 2025年魚鱗型格柵卷閘項目可行性研究報告
- 2025年饋贈品項目可行性研究報告
- 新課標下如何上好音樂課
- 新媒體運營(用戶運營內容運營活動運營產品運營社群運營)PPT完整全套教學課件
- 住宅樓屋面工程策劃方案講解圖文豐富
- 專題人壽保險的九大法律優勢
- (完整版)浙江大學研究生復試體檢表
- 市政公用工程設計文件編制深度規定(2013年高清版)
- GB/T 3512-2001硫化橡膠或熱塑性橡膠熱空氣加速老化和耐熱試驗
- 甲供材料領料單
- 產品表面達克羅處理作業指導書
- 美國社會保障制度課件
- 紅木家具自媒體推廣方案
評論
0/150
提交評論