freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

dsp技術(shù)及應(yīng)用實驗指導(dǎo)書(編輯修改稿)

2025-07-04 07:14 本頁面
 

【文章內(nèi)容簡介】 點的位置在次高的后面,所以必須左移一位,才能得到正確的結(jié)果。C54X中提供了一個狀態(tài)位FRCT,將其設(shè)置為1時,系統(tǒng)自動將乘積結(jié)果左移移位。但注意整數(shù)乘法時不能這樣處理,所以上面的實驗中一開始便將FRCT清除。兩個小數(shù)(16位)相乘后結(jié)果為32位,如果精度允許的話,可以只存高16位,將低16位丟棄,這樣仍可得到16位的結(jié)果。在本實驗中,我們使用下列代碼來說明小數(shù)乘法運算: ssbx FRCT ;FRCT=1,準備小數(shù)乘法 ld temp1,16,a ;將變量temp1裝入寄存器A的高16位 mpya temp2 ;完成temp2乘寄存器A的高16位,結(jié)果在B中,同時 ;將temp2裝入T寄存器 sth b,mpy_f ;將乘積結(jié)果的高16位存入變量mpy_f例如,temp1=temp2=4000H(),兩數(shù)相乘后結(jié)果為20000000(十進制的=)。再如,temp1=0ccdH(),temp2=0599aH(),兩數(shù)相乘后B寄存器的內(nèi)容為08f5f0a4H()。如果僅保存結(jié)果的高16位08f5H()。有時為了提高精度,可以使用RND或使用MPYR指令對低16位做四舍五入的處理。(5) 實現(xiàn)16定點整數(shù)除法 在C54X中沒有提供專門的除法指令,一般有兩種方法來完成除法。一種是用乘法來代替,除以某個數(shù)相當(dāng)于乘以其倒數(shù),所以先求出其倒數(shù),然后相乘。這種方法對于除以常數(shù)特別適用。另一種方法是使用SUBC指令,重復(fù)16次減法完成除法運算。下面我們以temp1/temp2為例,說明如何使用SUBC指令實現(xiàn)整數(shù)除法。其中變量temp1為被除數(shù),temp2為除數(shù),結(jié)果即商存放在變量temp3中。在完成整數(shù)除法時,先判斷結(jié)果的符號。方法是將兩數(shù)相乘,保存A或B的高16位以便判斷結(jié)果的符號。然后只做兩個正數(shù)的除法,最后修正結(jié)果的符號。為了實現(xiàn)兩個數(shù)相除,先將被除數(shù)裝入A或B的低16位,接著重復(fù)執(zhí)行SUBC指令,用除數(shù)重復(fù)減16次后,除法運算的商在累加器的低16位,余數(shù)在高16位。詳細代碼如下: ld temp1,T ;將被除數(shù)裝入T寄存器 mpy temp2,A ;除數(shù)與被除數(shù)相乘,結(jié)果放入A寄存器 ld temp2,B ;將除數(shù)temp2裝入B寄存器的低16位 abs B ;求絕對值 stl B,temp2 ;將B寄存器的低16位存回temp2 ld temp1,B ;將被除數(shù)temp1裝入B寄存器的低16位 abs B ;求絕對值 rpt 15 ;重復(fù)SUBC指令16次 subc temp2,b ;使用SUBC指令完成除法運算 bcd div_end,agt ;延時跳轉(zhuǎn),先執(zhí)行下面兩條指令,然后判斷A,若A0,則;跳轉(zhuǎn)到標號div_end,結(jié)束除法運算 stl B,quot_i ;將商(B寄存器的低16位)存入變量quot_i sth B,remain_i ;將余數(shù)(B寄存器的高16位)存入變量remain_i xor B ;若兩數(shù)相乘的結(jié)果為負,則商也應(yīng)為負。先將B寄存器清0 sub quot_i,B ;將商反號 stl B,quot_i ;存回變量quot_i中div_end: 上面給出的是整數(shù)除法的通用程序,在實際應(yīng)用中可以根據(jù)具體情況做簡化。如正數(shù)除法可以直接將被除數(shù)temp1裝入B寄存器的低16位,然后用SUBC指令循環(huán)減除數(shù)temp2,減完后B寄存器中低16位為商,高16位為余數(shù),不用判斷符號,從而節(jié)省時間。例如temp1=10H(十進制的16),temp2=5,兩數(shù)相除后商為3(在B寄存器的低16位),余數(shù)為1(在B寄存器的高16位)。(6) 實現(xiàn)16定點小數(shù)除法 在C54X中實現(xiàn)16位的小數(shù)除法與前面的整數(shù)除法基本一致,也是使用循環(huán)的SUBC指令來完成。但有兩點需要注意:第一,小數(shù)除法的結(jié)果一定是小數(shù)(小于1),所以被除數(shù)一定小于除數(shù)。這與整數(shù)除法正好相反。所以在執(zhí)行SUBC指令前,應(yīng)將被除數(shù)裝入A或B寄存器的高16位,而不是低16位。其結(jié)果的格式與整數(shù)除法一樣,A或B寄存器的高16位為余數(shù),低16位為商。第二,與小數(shù)乘法一樣,應(yīng)考慮符號位對結(jié)果小數(shù)點的影響。所以應(yīng)對商右移一位,得到正確的有符號數(shù)。其詳細代碼如下: ld temp1,T ;將被除數(shù)裝入T寄存器 mpy temp2,A ;除數(shù)與被除數(shù)相乘,結(jié)果放入A寄存器 ld temp2,B ;將除數(shù)temp2裝入B寄存器的低16位 abs B ;求絕對值 stl B,temp2 ;將B寄存器的低16位存回temp2 ld temp1,16,B ;將被除數(shù)temp1裝入B寄存器的高16位 abs B ;求絕對值 rpt 15 ;重復(fù)SUBC指令16次 subc temp2,b ;使用SUBC指令完成除法運算 and 0ffffh,B ;將B寄存器的高16位清為0。這時余數(shù)被丟棄,僅保留商 bcd div_end,agt ;延時跳轉(zhuǎn),先執(zhí)行下面兩條指令,然后判斷A,若A0,則;跳轉(zhuǎn)到標號div_end,結(jié)束除法運算 stl B,1,quot_f ;將商右移一位后存入變量quot_f,右移是為了修正符號位 xor B ;若兩數(shù)相乘的結(jié)果為負,則商也應(yīng)為負。先將B寄存器清0sub quot_f,B ;將商反號 stl B,quot_f ;存回變量quot_f中div_end: 注意,上面的C54X的16位定點有符號小數(shù)除法通用程序沒有保留余數(shù),商保存在變量temp3中。舉一個例子,當(dāng)temp1=2cccH(),temp2=55c2H(),兩數(shù)相除的結(jié)果為temp3=42dcH()。3.實驗內(nèi)容 本實驗需要使用C54X匯編語言實現(xiàn)加、減、乘、除的基本運算,并通過DES的存貯器顯示窗口觀察結(jié)果。實驗分兩步完成:(1).編寫實驗程序代碼本實驗的匯編源程序代碼主要分為六個部分:加法、減法、整數(shù)乘法、小數(shù)乘法、整數(shù)除法和小數(shù)除法。每個部分后面都有一條需要加斷點的標志語句: nop當(dāng)執(zhí)行到這條加了斷點的語句時,程序?qū)⒆詣訒和!_@時你可以通過“存貯器窗口”檢查計算結(jié)果。當(dāng)然你看到的結(jié)果都是十六進制的數(shù)。實驗源程序請參見第5部分。 (2).在simulator上調(diào)試運行,并觀察結(jié)果 在完成實驗程序代碼的輸入,就可以在simulator上調(diào)試運行。步驟如下: a. 。b. 在調(diào)試界面的左下腳命令行欄輸入load ,或單擊菜單欄下面的“Load”選項,并在彈出的File ,這時應(yīng)能在“反匯編”窗口看到程序代碼。c. 用鼠標選中“Memory”窗口,并在其中選擇要查看的存貯器地址段:0x080-0x08e。d. 在反匯編窗口中在每個“nop”指令處都設(shè)一個斷點,方法有兩種:?!癇reak”224。”Add”,然后在彈出的對話框中鍵入欲加斷點的地址即可。e. 單擊菜單欄下的“Run=F5”按鈕,啟動執(zhí)行基本算術(shù)運算程序,程序在執(zhí)行完加法運算后自動暫停。通過“CPU”窗口可以看到寄存器AHL的內(nèi)容為0x46,這正是加法運算的結(jié)果。同樣,在“Memory”窗口中,可以看到0x81,0x82,0x88的內(nèi)容為分別為0012,0034,0x46。執(zhí)行加法運算后,將0x81和0x82的內(nèi)容相加,結(jié)果放在0x88單元。f. 在“Memory”窗口中用鼠標左鍵雙擊0x81單元,這時可以修改該內(nèi)存單元的內(nèi)容。輸入新的數(shù)據(jù)0x0ffee(十進制的18),編輯內(nèi)容時請直接輸入FFEE(十六進制),然后回車確認,便完成對0x81單元的修改。 g. 在“CPU” 窗口中修改PC值,方法也是鼠標左鍵雙擊PC寄存器的內(nèi)容,輸入新的PC值0x1805(編輯內(nèi)容時直接輸入1805),并用回車鍵確認。h. 單擊菜單欄下的“Run=F5”按鈕,程序從當(dāng)前PC繼續(xù)運行,重新計算0x81和0x82的和,結(jié)果在0x88中。當(dāng)程序再次暫停時,可以看到AHL寄存器和0x88的內(nèi)容為0x22(十進制的34),這正是我們希望的結(jié)果:18+52=34。 i. 單擊“Run=F5”按鈕,程序從當(dāng)前PC繼續(xù)運行,完成減法運算。當(dāng)程序再次暫時(斷點位于0x1813),可以看到0x83和0x84單元的內(nèi)容分別為FFEE和0012,B寄存器的內(nèi)容為ffdc0000,而0x89的內(nèi)容為ffdc(十進制36),這正是我們希望的結(jié)果:。注意,該減法操作使用了輔助寄存器尋址,所以計算結(jié)果在B寄存器的高16位。 j. 單擊“Run=F5”按鈕,程序從當(dāng)前PC繼續(xù)運行,完成整數(shù)乘法運算。當(dāng)程序再次暫時(斷點位于0x181d),可以看到0x81和0x82單元的內(nèi)容分別為0012和0034,A寄存器的內(nèi)容為000003A8,這正是我們希望的結(jié)果:18*52=936(0x3a8)。這時我們可以用1個16位的內(nèi)容單元來保存結(jié)果,如將A寄存器的低16位存入0x8b單元。但如果將0x81的內(nèi)容修改為0x2000(十進制的8192),在“CPU窗口”中將PC修改為1818,然后繼續(xù)運行,重新計算乘法。當(dāng)程序完成乘法暫停時,可以看到A寄存器的內(nèi)容為00068000,這也是一個正確的結(jié)果:8192*52=425984(0x68000)。此時將無法用一個16位的存貯單元來保存A寄存器中的結(jié)果。 k. 單擊“Run=F5”按鈕,程序從當(dāng)前PC繼續(xù)運行,完成小數(shù)乘法運算。當(dāng)程序再次暫停時(斷點位于0x1826),可以看到0x83和0x84單元的內(nèi)容分別為4000和b548,A寄存器的內(nèi)容為40000000,乘法的結(jié)果在B寄存器中為daa40000,這正是我們希望的結(jié)果:*()=(0x0daa4)。對于小數(shù)乘法,一般情況都可以用1個16位的內(nèi)容單元將B寄存器的高16保存(如存入0x8c單元)。 l. 單擊“Run=F5”按鈕,程序從當(dāng)前PC繼續(xù)運行,完成整數(shù)除法運算。當(dāng)程序再次暫時(斷點位于0x183b),可以看到0x81,0x82,0x8d和0x8e單元的內(nèi)容分別為0034,0012,FFFE和0010,這正是我們希望的結(jié)果:52除以18,商為2(0xfffe) ,余數(shù)為16(0x10)。 m. 單擊“Run=F5”按鈕,程序從當(dāng)前PC繼續(xù)運行,完成小數(shù)除法運算。當(dāng)程序再次暫停時(斷點位于0x1852),可以看到0x81,0x82和0x8f單元的內(nèi)容分別為4000,4ab8和6da3,這正是我們希望的結(jié)果:(0x6da3)。 n. 如果以上程序運行不正確,請檢查代碼是否輸入正確,還可以在源代碼中插入斷點調(diào)試,注意對中間結(jié)果的觀察。4 思考題: (1)在減法操作中使用了輔助寄存器ar2,ar3,請說明在執(zhí)行完減法計算后輔助寄存器ar2和ar3的值為多少? (2)在小數(shù)乘法中使用了置FRCT標志為1的指令。如果將該語句取消,那么B寄存器的結(jié)果是多少?想想什么時候應(yīng)該設(shè)置FRCT標志? (3)如何實現(xiàn)無符號數(shù)的乘法? (4)請利用本實驗程序計算以下算式的結(jié)果? *=?4653/345 =?0. 789687/ =?附程序清單:。 USER Program Demo !。 It Start At 0x1800,and interrupt vector don39。t changed,。 At 100h !。 Please Don39。t modify PMST !。 Some data put in 80h DP=1 。 SP may use system stack,so user needn39。t setup SP ! 。 .title for test ADD,SUB,MPY... program ... .mmregs .global mainstart .include VAL1 .set 012h 。 18VAL2 .set 034h 。 52VAL3 .set 04000h 。 VAL4 .set 02000h 。 (fraction) amp。 8192 (i
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1