




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
會(huì)計(jì)學(xué)1DSP戴明幀主編匯編語(yǔ)言程序設(shè)計(jì)2分類指令說(shuō)明無(wú)條件分支轉(zhuǎn)移
B[D]
用該指令指定的地址加載PC
BACC[D]
用累加器的低16位指定的地址加載PC條件分支轉(zhuǎn)移
BC[D]
若滿足指令給定條件,用該指令指定的地址加載PC5.1程序的控制與轉(zhuǎn)移第1頁(yè)/共34頁(yè)3分類指令說(shuō)明無(wú)條件調(diào)用
CALL[D]
將返回的地址壓入堆棧,并用該指令指定的地址加載PC
CALA[D]
將返回的地址壓入堆棧,用累加器A或B指定的地址加載PC條件調(diào)用
CC[D]
如果滿足指令給定條件,將返回的地址壓入堆棧,并用該指令指定的地址加載PC分類
指令
說(shuō)明
無(wú)條件返回
RET[D]
將堆棧頂部的返回地址加載到PC。條件返回
RC[D]
如果滿足指令給定條件,將堆棧頂部的返回地址加載到PC。5.1程序的控制與轉(zhuǎn)移第2頁(yè)/共34頁(yè)4操作符號(hào)條件說(shuō)明操作符號(hào)條件說(shuō)明AEQA=0累加器A等于0AOVAOV=1累加器A溢出BEQB=0累加器B等于0BOVBOV=1累加器B溢出ANEQA≠0累加器A不等于0ANOVAOV=0累加器A不溢出BNEQB≠0累加器B不等于0BNOVBOV=0累加器B不溢出ALTA<0累加器A小于0CC=1ALU進(jìn)位位置1BLTB<0累加器B小于0NCC=0ALU進(jìn)位位置0ALEQA≤0累加器A小于等于0TCTC=1測(cè)試/控制標(biāo)志位置1BLEQB≤0累加器B小于等于0NTCTC=0測(cè)試/控制標(biāo)志位置0AGTA>0累加器A大于0BIO
低
信號(hào)電平為低BGTB>0累加器B大于0NBIO
高
信號(hào)電平為高AGEQA≥0累加器A大于等于0UNC無(wú)無(wú)條件操作BGEQB≥0累加器B大于等于05.1程序的控制與轉(zhuǎn)移第3頁(yè)/共34頁(yè)第1組第2組A類B類A類B類C類EQ,NEQ,LTLEQ,GT,GEQOVNOVTCNTCCNCBIONBIO組間條件只能“或”第一組兩類條件可以“與”/“或”,但累加器必須是同一個(gè)第二組三類條件可以各選一個(gè)條件“與”/“或”同組同類條件不能選擇兩個(gè)5.1程序的控制與轉(zhuǎn)移第4頁(yè)/共34頁(yè)例5-1條件分支轉(zhuǎn)移
RCTCCCsub,BNEQ
BCnew,AGT,AOV
;TC=1返回,TC=0繼續(xù);B≠0,調(diào)用sub,B=0繼續(xù);A>0且溢出(“與”的關(guān)系),轉(zhuǎn)至new,否則繼續(xù)5.1程序的控制與轉(zhuǎn)移
BCnew,AGT
BCnew,AOV
;A>0,轉(zhuǎn)至new,否則繼續(xù);A溢出,轉(zhuǎn)至new,否則繼續(xù)若例1中兩個(gè)條件相“或”怎么辦?第5頁(yè)/共34頁(yè)7循環(huán)操作5.1程序的控制與轉(zhuǎn)移
.bss x,5;為變量x分配5個(gè)存儲(chǔ)單元 .bss y,1;為變量y分配1個(gè)存儲(chǔ)單元
STM #x,AR1;AR1指向x的首地址 STM #4,AR2;將操作數(shù)#4賦給AR2 LD #0,A;將累加器A清0loop:
ADD *AR1+,A;執(zhí)行加法運(yùn)算,結(jié)果存入累加器A中 BANZ loop,*AR2-;AR2不為0轉(zhuǎn)移,重復(fù)執(zhí)行5次 STL A,@y;將結(jié)果(A的低16位)送往變量y存儲(chǔ)單元 .title "Ex534.asm";為匯編語(yǔ)言源文件取名 .mmregs;定義存儲(chǔ)器映像寄存器stack .usect "STACK",10h;為堆??臻g分配16個(gè)存儲(chǔ)單元
.bss x,5;為變量x分配5個(gè)存儲(chǔ)單元 .bss y,1;為變量y分配1個(gè)存儲(chǔ)單元.defstart;定義標(biāo)號(hào)start.data;定義數(shù)據(jù)代碼table:
.word 1,2,3,4,5;為標(biāo)號(hào)table開始的5個(gè)存儲(chǔ)單元賦值.text;定義文本代碼段start:
STM #0,SWWSR;SWWSR置0,不插等待周期 STM #stack+10h,SP;設(shè)置堆棧指針
CALL init;調(diào)用子程序init
STM #x,AR1;將變量x的首地址賦給AR1 STM #4,AR2;將操作數(shù)#4賦給AR2 LD #0,A;將累加器A清0loop:
ADD *AR1+,A;執(zhí)行加法運(yùn)算,結(jié)果存入累加器A中 BANZ loop,*AR2-;AR2不為0轉(zhuǎn)移,重復(fù)執(zhí)行5次 STL A,@y;將結(jié)果(A的低16位)送往變量y存儲(chǔ)單元init:STM #x,AR1;AR1指向x的首地址 RPT #4;重復(fù)執(zhí)行下條指令5次 MVPD table,*AR1+;重復(fù)傳遞共5個(gè)數(shù)據(jù)
RET;子程序返回.end;源程序結(jié)束第6頁(yè)/共34頁(yè)利用CMPR指令進(jìn)行比較操作指定的ARx寄存器(x=1~7)與AR0比較,測(cè)試條件成立TC置1。例:5-3比較操作后條件分支轉(zhuǎn)移5.1程序的控制與轉(zhuǎn)移STM#5,AR1;(AR1)=5
STM#10,AR0;(AR0)=10loop:……MAR*AR1+;AR1=AR1+1……CMPRLT,AR1;若AR1-AR0<0,則TC=1,否則為0
BCloop,TC;若AR1-AR0<0,則循環(huán)
若AR1=AR0,則順序執(zhí)行第7頁(yè)/共34頁(yè)5.2堆棧的使用方法特點(diǎn):16位堆棧指針SP向堆棧中壓入數(shù)據(jù)時(shí),堆棧指針從高地址向低地址移動(dòng)壓入堆棧時(shí),先SP-1,再壓入數(shù)據(jù);彈出操作數(shù)時(shí),先彈出數(shù)據(jù),后SP+1
9設(shè)置好堆棧后,就可以使用堆棧了,如:CALLpmad;(SP)-1→SP,(PC)+2→TOS,pmad→PCRET;(TOS)→PC,(SP)+1→SP
第8頁(yè)/共34頁(yè)5.3加、減法和乘法運(yùn)算例5-4計(jì)算z=x+y-w使用:加法指令A(yù)DD,減法指令SUB10LD@x,AADD@y,ASUB@w,ASTLA,@z;取x值,A=x;完成x+y運(yùn)算,A=x+y;完成x+y-w運(yùn)算,A=x+y-w;計(jì)算結(jié)果(A的低16位)存入變量z中第9頁(yè)/共34頁(yè)5.3加、減法和乘法運(yùn)算例5-5計(jì)算y=mx+b使用:乘法指令MPY,加法指令A(yù)DD11LD@m,TMPY@x,AADD@b,ASTLA,@y;取系數(shù)m值,T=m;完成mx乘積,A=mx;完成mx+b運(yùn)算,A=mx+b;計(jì)算結(jié)果B的低16位存入y中第10頁(yè)/共34頁(yè)5.3加、減法和乘法運(yùn)算例5-6計(jì)算y=x1*a1+x2*a2使用:乘法指令MPY,乘法累加指令MAC12LD@x1,TMPY@a1,ALD@x2,TMAC@a2,ASTLA,@ySTHA,@y+1;取變量值x1,T=x1;完成乘法x1a1運(yùn)算,A=x1a1;取變量值x2,T=x2;乘法累加,A=x1a1+x2a2;計(jì)算結(jié)果的低字AL存入y中;計(jì)算結(jié)果的高字AH存入y+1中第11頁(yè)/共34頁(yè)5.3加、減法和乘法運(yùn)算例5-7計(jì)算使用:乘法累加指令MAC,重復(fù)執(zhí)行下條指令RPT13第12頁(yè)/共34頁(yè)14加法/減法指定堆??臻g為變量預(yù)留空間初值序列初始化變量設(shè)置堆棧指針利用MAC和RPT求乘累加和第13頁(yè)/共34頁(yè)15
.title"Ex_543.asm“;為匯編語(yǔ)言源文件取名 .mmregs;定義存儲(chǔ)器映像寄存器stack .usect "STACK",10H;為堆棧空間分配16個(gè)存儲(chǔ)單元 .bss
a,4;為系數(shù)a分配4個(gè)存儲(chǔ)單元 .bss x,4;為變量x分配4個(gè)存儲(chǔ)單元 .bss y,1;為變量y分配1個(gè)存儲(chǔ)單元 .def start;定義標(biāo)號(hào)start .data;定義數(shù)據(jù)代碼table: .word 1,2,3,4;為標(biāo)號(hào)table開始的 .word 8,6,4,2;8個(gè)存儲(chǔ)單元賦值 .text;定義文本代碼段start: STM #0,SWWSR;SWWSR置0,不插等待周期 STM #stack+10H,SP;設(shè)置堆棧指針 STM #a,AR1;AR1指向a的首地址 RPT #7;重復(fù)執(zhí)行下條指令8次 MVPD table,*AR1+;從程序存儲(chǔ)器向數(shù)據(jù)存儲(chǔ)器,重復(fù)傳遞共8個(gè)數(shù)據(jù)
CALL SUM;調(diào)用子程序SUMend: B end;循環(huán)等待SUM: STM #a,AR3;將系數(shù)a的首地址賦給AR3 STM #x,AR4;將變量x的首地址賦給AR4 RPTZ A,#3;將累加器清0,重復(fù)執(zhí)行下條指令4次 MAC *AR3+,*AR4+,A;執(zhí)行乘法累加運(yùn)算,結(jié)果存入累計(jì)器A中 STL A,@y;將結(jié)果(A的低16位)送往變量y存儲(chǔ)單元 RET;子程序返回 .end;源程序結(jié)束第14頁(yè)/共34頁(yè)【例5-8】在例5-7的4項(xiàng)乘積aixi(i=1,2,3,4)中找出最大值,并存放累加器A中。
程序:
STM#a,AR1STM#x,AR2STM#2,AR3LD*AR1+,TMPY*AR2+,Aloop1:LD*AR1+,TMPY*AR2+,BMAXABANZloop1,*AR3-;系數(shù)a的首地址賦給AR1;變量x的首地址賦給AR2;設(shè)置計(jì)數(shù)器AR3=2;取系數(shù)T=a1,并修改AR1;乘法運(yùn)算A=a1x1,并修改AR2
;取系數(shù)T=ai,并修改AR1;乘法運(yùn)算B=aixi,并修改AR2
;求A和B中的最大值,結(jié)果存入A;若AR3≠0,則循環(huán),并修改AR3
若AR3=0,則順序執(zhí)行5.3加、減法和乘法運(yùn)算第15頁(yè)/共34頁(yè)175.4重復(fù)操作例5-9對(duì)一個(gè)數(shù)組進(jìn)行初始化X[5]={0,0,0,0,0}第16頁(yè)/共34頁(yè)【例5-9】對(duì)數(shù)組進(jìn)行初始化,使x[5]={0,0,0,0,0}。.bssx,5STM#x,AR1LD#0,ARPT#4STLA,*AR1+
.bssx,5STM#x,AR1
RPTZA,#4STLA,*AR1+注意:
①對(duì)x[5]中的5個(gè)元素置0,重復(fù)次數(shù)為4,即執(zhí)行1次STLA,AR1+指令后,再重復(fù)執(zhí)行4次;②RPTZ指令設(shè)定重復(fù)次數(shù)后,再對(duì)累加器清零。
5.4重復(fù)操作第17頁(yè)/共34頁(yè)19塊重復(fù)操作例5-10對(duì)數(shù)組X[5]中每個(gè)元素加1第18頁(yè)/共34頁(yè)例5-10對(duì)數(shù)組x[5]中的每一元素加1。
.bssx,5begin:LD#1,BSTM#4,BRCSTM#x,AR4RPTBnext-1ADD*AR4,B,ASTLA,*AR4+next:LD#0,B…;設(shè)置數(shù)組空間;立即數(shù)1送入B;設(shè)置重復(fù)次數(shù),BRC=4,循環(huán)5次;數(shù)組首地址x送入AR4;設(shè)置循環(huán)結(jié)束地址;數(shù)組數(shù)據(jù)與B相加,結(jié)果存入A中;存儲(chǔ)數(shù)組結(jié)果,并修改地址;B清0塊重復(fù)操作第19頁(yè)/共34頁(yè)215.5數(shù)據(jù)塊傳送數(shù)據(jù)傳送指令的特點(diǎn):①
傳送速度比加載和存儲(chǔ)指令要快;②數(shù)據(jù)傳送不通過(guò)累加器;③
可尋址程序存儲(chǔ)器;④與RPT結(jié)合,可實(shí)現(xiàn)數(shù)據(jù)塊傳送。
第20頁(yè)/共34頁(yè)225.5數(shù)據(jù)塊傳送第21頁(yè)/共34頁(yè)例5-11數(shù)組X[5]={1,2,3,4,5}初始化(程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器之間的數(shù)據(jù)傳送)23
.data
TBL:.word1,2,3,4,5.bssx,5 .textSTART:STM#x,AR5
RPT#4 MVPDTBL,*AR5+ …;定義數(shù)據(jù)代碼段;為標(biāo)號(hào)TBL開始的5個(gè)存儲(chǔ)單元賦初值;為變量x分配5個(gè)存儲(chǔ)單元;定義文本代碼段;將變量x的首地址賦給AR5;將下條指令重復(fù)執(zhí)行5次;將數(shù)據(jù)送入X對(duì)應(yīng)地址單元中5.5數(shù)據(jù)塊傳送第22頁(yè)/共34頁(yè)例5-12編寫一段程序?qū)?shù)據(jù)存儲(chǔ)器中的數(shù)組x[20]復(fù)制到數(shù)組y[20]。(數(shù)據(jù)存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器之間的數(shù)據(jù)傳送)24
.bssx,20 .bssy,20 .text LD#x,AR2 LD#y,AR3 RPT#19 MVDD*AR2+,*AR3+…..;為變量x分配20個(gè)存儲(chǔ)單元;為變量y分配20個(gè)存儲(chǔ)單元;定義文本代碼段;將變量x的首地址賦給AR2;將變量y的首地址賦給AR3;將下條指令重復(fù)執(zhí)行20次;將((AR2))((AR3))5.5數(shù)據(jù)塊傳送第23頁(yè)/共34頁(yè)用雙操作數(shù)指令編程的特點(diǎn):①單周期內(nèi)通過(guò)C總線和D總線尋址兩個(gè)數(shù)據(jù)②用間接尋址方式獲得操作數(shù),且只能用AR2~AR5③占用的程序空間?、苓\(yùn)行的速度快255.6雙操作數(shù)乘法指令功能MPYXmem,Ymem,dst
dst=Xmem*YmemMACXmem,Ymem,scr[dst]
dst=scr+Xmem*YmemMASXmem,Ymem,scr[dst]
dst=scr-Xmem*YmemMACPSmem,Pmad,scr[dst]
dst=scr+Smem*Pmad表5-3MAC型雙操作數(shù)指令尋址方式:*ARn、*ARn+、*ARn-、*ARn+0%第24頁(yè)/共34頁(yè)編制求解的程序段。265.6雙操作數(shù)乘法
單操作數(shù)指令方案雙操作數(shù)指令方案LD#0,BLD#0,B STM#a,AR2STM#a,AR2 STM#x,AR3STM#x,AR3 STM#19,BRCSTM#19,BRC RPTBdone-1RPTBdone-1 LD*AR2+,TMPY*AR2+,*AR3+,A3TMPY*AR3+,A2TADDA,B ADDA,Bdone:STHB,@ydone:STHB,@y STLB,@y+1STLB,@y+1
節(jié)省的總機(jī)器周期數(shù)=1T*N(迭代次數(shù))=NT。第25頁(yè)/共34頁(yè)進(jìn)一步優(yōu)化的程序段。利用雙操作數(shù)指令進(jìn)行乘法累加運(yùn)算,完成N項(xiàng)乘積求和需2N個(gè)機(jī)器周期。如果將乘法累加器單元、多總線以及硬件循環(huán)操作結(jié)合在一起,可以形成一個(gè)優(yōu)化的乘法累加程序。完成一個(gè)N項(xiàng)乘積求和的操作,只需要N+2個(gè)機(jī)器周期。程序如下:275.6雙操作數(shù)乘法
STM#x,AR2STM#a,AR3RPTZA,#19;2個(gè)機(jī)器周期MAC*AR2+,*AR3+,A;1個(gè)機(jī)器周期STHA,@ySTLA,@y+1第26頁(yè)/共34頁(yè)28作業(yè)1、編寫的程序,并注釋2、編寫對(duì)數(shù)組X[8]={1,2,3,4,5,6,7,8}的初始化程序,并注釋第27頁(yè)/共34頁(yè)長(zhǎng)字運(yùn)算C54x可以利用長(zhǎng)操作數(shù)(32位)進(jìn)行長(zhǎng)字運(yùn)算。295.7長(zhǎng)字運(yùn)算和并行運(yùn)算
長(zhǎng)字指令
DLDLmem,dstDSTsrc,LmemDADDLmem,src[,dst]DSUBLmem,src[,dst]DRSUBLmem,src[,dst];dst=Lmem單周期;Lmem=src雙周期;dst=src+Lmem單周期;dst=src-Lmem單周期;dst=Lmem-src單周期第28頁(yè)/共34頁(yè)長(zhǎng)操作數(shù)在存儲(chǔ)器的排列方法
偶地址排列法
?指令中給出的地址為偶地址?存儲(chǔ)器中低地址存放高16位?存儲(chǔ)器中高地址存放底16位奇地址排列法
?指令中給出的地址為奇地址?存儲(chǔ)器中低地址存放低16位?存儲(chǔ)器中高地址存放高16位305.7長(zhǎng)字運(yùn)算和并行運(yùn)算第29頁(yè)/共34頁(yè)315.7長(zhǎng)字運(yùn)算和并行運(yùn)算
偶地址排列法舉例?DLD*AR3+,A
執(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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO/TS 20428:2024 EN Genomics Informatics - Data elements and their metadata for describing structured clinical genomic sequence information in electronic health records
- 【正版授權(quán)】 ISO 6900:2025 EN Dried red jujubes - Specification and test methods
- 2025年度大型企事業(yè)單位公務(wù)車輛租賃服務(wù)協(xié)議合同范本
- 2025年變配電保護(hù)自動(dòng)化項(xiàng)目合作計(jì)劃書
- 離職管理與退出面談流程計(jì)劃
- 秋季信息化教學(xué)推進(jìn)計(jì)劃
- 2025年酸堿平衡調(diào)節(jié)藥合作協(xié)議書
- 智研咨詢發(fā)布-2025年中國(guó)智慧環(huán)保行業(yè)產(chǎn)業(yè)鏈全景分析及發(fā)展趨勢(shì)預(yù)測(cè)報(bào)告
- 2025年特異性植物源農(nóng)藥項(xiàng)目合作計(jì)劃書
- 2025年醫(yī)用氧化亞氮系統(tǒng)合作協(xié)議書
- 2025年南通科技職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 人工智能與機(jī)器學(xué)習(xí)在風(fēng)險(xiǎn)管理中的應(yīng)用-深度研究
- 河南省洛陽(yáng)市伊川縣2024-2025學(xué)年上學(xué)期期末八年級(jí)生物試題
- 2025年?yáng)|營(yíng)科技職業(yè)學(xué)院高職單招職業(yè)技能測(cè)試近5年常考版參考題庫(kù)含答案解析
- 2025年汽車零部件項(xiàng)目可行性研究報(bào)告
- 福建省廈門市2024-2025學(xué)年八年級(jí)上學(xué)期1月期末英語(yǔ)試題(含筆試答案無(wú)聽力答案、原文及音頻)
- (一診)畢節(jié)市2025屆高三第一次診斷性考試 英語(yǔ)試卷(含答案)
- 油氣長(zhǎng)輸管道檢查標(biāo)準(zhǔn)清單
- 《酸棗營(yíng)銷戰(zhàn)略》課件
- 小學(xué)二年級(jí)100以內(nèi)連加連減豎式計(jì)算練習(xí)題
- 圖像敘事的跨學(xué)科視野-洞察分析
評(píng)論
0/150
提交評(píng)論