匯編語言編程舉例

匯編語言編程舉例

ID:5642094

大小:987.00 KB

頁數(shù):115頁

時(shí)間:2017-11-15

匯編語言編程舉例_第1頁
匯編語言編程舉例_第2頁
匯編語言編程舉例_第3頁
匯編語言編程舉例_第4頁
匯編語言編程舉例_第5頁
資源描述:

《匯編語言編程舉例》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、匯編語言編程舉例匯編語言編程的基本方法DSP在信號(hào)發(fā)生器上的應(yīng)用用DSP實(shí)現(xiàn)FIR濾波器匯編語言編程舉例匯編語言編程的基本方法匯編語言編程的基本方法1.堆棧的使用1.壓入數(shù)據(jù)時(shí),堆棧從高地址向低地址增長(zhǎng)。2.壓棧時(shí)指針先減,SP-1,再壓入數(shù)據(jù);3.出棧時(shí),先彈出數(shù)據(jù)后,再SP+1。4.如要用堆棧,必須先設(shè)置,后使用。要點(diǎn)例設(shè)計(jì)一存儲(chǔ)空間為100個(gè)單元的堆棧。size.set100;設(shè)置堆??臻g的;大小為100stack.usect“STK”,size;設(shè)置堆棧段的首地址;和堆??臻gSTM#stack+size,SP;將棧底地址指針?biāo)?;SP,完成初始化1.堆棧的使用匯編語言編程的基本方法例編

2、寫求解加、減法的程序,計(jì)算z=x+y-w。SUM1:LD@x,A;將x地址的內(nèi)容送AADD@y,A;將y地址的內(nèi)容與A中x值相加SUB@w,A;將A中的內(nèi)容與w相減,得zSTLA,@z;將A的的計(jì)算值存入z地址中2.加、減法和乘法運(yùn)算匯編語言編程的基本方法例寫求解直線方程的程序,計(jì)算y=mx+b。SUM2:LD@m,T;將m地址的內(nèi)容送TMPY@x,A;將x地址的內(nèi)容與;T中的m相乘,結(jié)果送AADD@b,A;將A中的mx與b地址的內(nèi)容;相加,結(jié)果送ASTLA,@y;將A的的計(jì)算結(jié)果;存入y地址中2.加、減法和乘法運(yùn)算匯編語言編程的基本方法傳送速度比加載和存儲(chǔ)指令要快;傳送數(shù)據(jù)不需要通過累加器

3、;可以尋址程序存儲(chǔ)器;與RPT指令相結(jié)合(重復(fù)時(shí),這些指令都變成單周期指令),可以實(shí)現(xiàn)數(shù)據(jù)塊傳送。3.?dāng)?shù)據(jù)塊傳送特點(diǎn)匯編語言編程的基本方法(1)數(shù)據(jù)存儲(chǔ)器←→數(shù)據(jù)存儲(chǔ)器這類指令有:MVDKSmem,dmad指令的字?jǐn)?shù)/執(zhí)行周期2/2MVKDdmad,Smem;Smem=dmad2/2MVDDXmem,Ymem;Ymem=Xmem1/1(2)程序存儲(chǔ)器←→數(shù)據(jù)存儲(chǔ)器這類指令有:MVPDpmad,Smem;Smem=pmad2/3MVDPSmem,pmad;pmad=Smem2/4pmad為16位立即數(shù)程序存儲(chǔ)器地址;dmad為16位立即數(shù)數(shù)據(jù)存儲(chǔ)器地址;Smem為數(shù)據(jù)存儲(chǔ)器地址;Xmem、Ym

4、em為雙操作數(shù)數(shù)據(jù)存儲(chǔ)器地址,Xmem從DB數(shù)據(jù)總線上讀出。Ymem從CB數(shù)據(jù)總線上讀出。3.?dāng)?shù)據(jù)塊傳送匯編語言編程的基本方法(3)數(shù)據(jù)存儲(chǔ)器←→MMR這類指令有:MVDMdmad,MMR;指令的字?jǐn)?shù)/執(zhí)行周期2/2MVMDMMR,dmad;dmad=MMR2/2MVMMmmrx,mmry;mmry=mmrx1/1(4)程序存儲(chǔ)器(Acc)←→數(shù)據(jù)存儲(chǔ)器包括:READASmem;Smem=prog(A)1/5WRITASmem;prog(A)=Smem1/5mmrx,mmry為AR0~AR7或SP;MMR為任何一個(gè)存儲(chǔ)器映象寄存器;3.?dāng)?shù)據(jù)塊傳送匯編語言編程的基本方法例將數(shù)組x[5]初始化為

5、{1,2,3,4,5}。.data;定義初始化數(shù)據(jù)段起始地址TBL:.word1,2,3,4,5;為標(biāo)號(hào)地址TBL;開始的5個(gè)單元賦初值.sect“.vectors”;定義自定義段,并獲;得該段起始地址BSTART;無條件轉(zhuǎn)移到標(biāo)號(hào)為START的地址.bssx,5;為數(shù)組x分配5個(gè)存儲(chǔ)單元.text;定義代碼段起始地址START:STM#x,AR5;將x的首地址存入AR5RPT#4;設(shè)置重復(fù)執(zhí)行5次下條指令MVPDTBL,*AR5+;將TBL開始的5個(gè)值傳給x(1)程序存儲(chǔ)器→數(shù)據(jù)存儲(chǔ)器3.?dāng)?shù)據(jù)塊傳送匯編語言編程的基本方法例將數(shù)據(jù)存儲(chǔ)器中的數(shù)組x[10]復(fù)制到數(shù)組y[10]。.title“c

6、jy1.asm”;為匯編源程序取名.mmregs;定義存儲(chǔ)器映象寄存器STACK.usect“STACK”,30H;設(shè)置堆棧.bssx,10;為數(shù)組x分配10個(gè)存儲(chǔ)單元.bssy,10;為數(shù)組y分配10個(gè)存儲(chǔ)單元.datatable:.word1,2,3,4,5,6,7,8,9,10.defstart;定義標(biāo)號(hào)start.text(2)數(shù)據(jù)存儲(chǔ)器→數(shù)據(jù)存儲(chǔ)器3.?dāng)?shù)據(jù)塊傳送匯編語言編程的基本方法start:STM#0,SWWSR;復(fù)位SWWSRSTM#STACK+30H,SP;初始化堆指針STM#x,AR1;將目的地首地址賦給AR1RPT#19;設(shè)定重復(fù)傳送的次數(shù)為20次MVPDtable,*

7、AR1+;程序存儲(chǔ)器傳送到數(shù);據(jù)存儲(chǔ)器STM#x,AR2;將x的首地址存入AR2STM#y,AR3;將y的首地址存入AR3RPT#19;設(shè)置重復(fù)執(zhí)行20次下條指令MVDD*AR2+,*AR3+;將地址x開始的20個(gè)值;復(fù)制到地址y開始的20個(gè)單元end:Bend.end3.?dāng)?shù)據(jù)塊傳送匯編語言編程的基本方法用間接尋址方式獲得操作數(shù),且輔助寄存器只用AR2~AR5;占用程序空間??;運(yùn)行速度快。4.雙操作數(shù)乘法特點(diǎn)

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。