15第五章匯編語言編程_第1頁
15第五章匯編語言編程_第2頁
15第五章匯編語言編程_第3頁
15第五章匯編語言編程_第4頁
15第五章匯編語言編程_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、*5.8 64位加法與減法運(yùn)算例5-16:編寫計(jì)算 Z64=W64+X64-Y64 的程序段 W, X, Y和結(jié)果Z都是64位數(shù),它們都是由兩個(gè)32位的長字組成。利用長字指令可以完成64位數(shù)的加/減法。 算式如下: 由于沒有長字帶進(jìn)(借)位加/減法指令,上述程序中只能用16位帶進(jìn)(借)位指令A(yù)DDC和SUBB。代碼段如下:*5.9 32位乘法運(yùn)算例5-17:編寫計(jì)算 W64=X32*Y32的程序段32位的乘法運(yùn)算包含了:U*U、S*U 和 S*S 三種運(yùn)算程序中利用的三條乘法指令:代碼段:*5.10 小數(shù)運(yùn)算1、小數(shù)的表示方法C54x采用2的補(bǔ)碼小數(shù)* 高位為符號(hào)位* 數(shù)值范圍 從-1到+1(

2、1-2-15=0.999969482421875)* 16位2的補(bǔ)碼小數(shù)(Q15格式)每個(gè)的權(quán)值為: MSB LSB -1(0). 1/2 1/4 1/8 2-150100 = 符號(hào)位0 + 1*1/2+0*1/4+0*1/8 0.51101 = 符號(hào)位-1+1*1/2+ 0*1/4+1*1/8 - 1+0.625 -0.375Q15是純小數(shù)表示法2、十進(jìn)制小數(shù)到十六進(jìn)制小數(shù)的變換 一個(gè)十進(jìn)制小數(shù)乘以32768之后,再將其十進(jìn)制整數(shù)部分轉(zhuǎn)換成十六進(jìn)制數(shù),就能得到這個(gè)小數(shù)的16位2的補(bǔ)碼取Q15格式小數(shù)的絕對(duì)值*32768,再變換成16進(jìn)制數(shù)以后: 對(duì)于正數(shù)就是小數(shù)的十六進(jìn)制表示; 對(duì)于負(fù)數(shù),再

3、加上8000h(-1),就是負(fù)小數(shù)的十六進(jìn)制表示。3、匯編語言程序中小數(shù)的寫法在匯編語言程序中不能直接寫入十進(jìn)制的小數(shù)。舉例:如果定義一個(gè)系數(shù)0.707 .word32768*707/1000 ;是對(duì)的 .word 32768*0.707 ;是錯(cuò)的 4、小數(shù)乘法與冗余符號(hào)位符號(hào)位擴(kuò)展符號(hào)位相乘結(jié)果 7位乘積(-0.1875)送累加器時(shí),經(jīng)過符號(hào)位擴(kuò)展,得到11110100即(-0.09375),出現(xiàn)了錯(cuò)誤,原因是出現(xiàn)了冗余符號(hào)位。解決的方法是: 在運(yùn)行小數(shù)乘法之前,將ST1中FRCT(小數(shù)方式)位置1,C54x在把乘積傳送到累加器時(shí)會(huì)自動(dòng)地左移一位,消除冗余符號(hào)位。如: SSBX FRCT ;

4、 FRCT置1 MPY *AR2, *AR3, A ;(AR2)x (AR3) 結(jié)果送A累加器 STH A, z ; A累加器的高端字存到z存儲(chǔ)單元這樣,C54x就完成了Q15*Q15=Q15的小數(shù)乘法。5、小數(shù)乘法編程舉例例5-18:編寫計(jì)算 的程序段。其中數(shù)據(jù)均為小數(shù):已知:a1=0.1 a2=0.2 a3= -0.3 a4=0.4 x1=0.8 x2=0.6 x3= -0.4 x4= -0.2*5.11 除法運(yùn)算 在許多定點(diǎn)DSP芯片中,一般沒有硬件除法器(硬件代價(jià)很高),也沒有單周期的除法指令;而在實(shí)際應(yīng)用中,又常常要用到除法運(yùn)算,如何利用定點(diǎn)DSP芯片指令來實(shí)現(xiàn)除法是一個(gè)非常有意義的

5、問題。一、DSP實(shí)現(xiàn)除法的方法: 用乘法代替除法,除以某個(gè)數(shù)相當(dāng)于乘以這個(gè)數(shù)的倒 數(shù),所以先求出其倒數(shù)再相乘; 二進(jìn)制除法是乘法的逆運(yùn)算。乘法包括一系列的移位和加法,而除法可分解為一系列的減法和移位; 除法過程中,是以數(shù)的絕對(duì)值進(jìn)行運(yùn)算,最后再確定 商的符號(hào)。例5-19:用減-移位法計(jì)算10除以3的實(shí)現(xiàn)過程二進(jìn)制除法的分析例5-20:采用8位累加器計(jì)算12除以3的實(shí)現(xiàn)過程二、條件減法指令 1、C54x有一條SUBC指令,支持16位除法運(yùn)算 SUBC Smem, src 指令的含義: 計(jì)算 (src) - (Smem) 15 ALU輸出端 如果ALU輸出端0,則(ALU輸出端)1+1src, 否則(src)1+0 src 2、SUBC指令加上重復(fù)指令,實(shí)現(xiàn)無符號(hào)除法運(yùn)算 RPT #k5(注) SUBC Smem, src 注:當(dāng)|被除數(shù)|除數(shù)|時(shí),將|被除數(shù)|放在累加器的高16位,然后重復(fù) 15次SUBC指令; 當(dāng)|被除數(shù)|除數(shù)|時(shí),將|被除數(shù)|存在累加器的低16位,然后重復(fù) 16次SUBC指令。 例5-22:編寫0.4/-0.8的程序段運(yùn)算結(jié)果:- 0.5三、用SUBC指令計(jì)算除法的程序段 雖然除法可分解為一系列的減法和移位,但是編程時(shí)必須事先了解其可能的運(yùn)算數(shù)的特性,如其商是否可以用小數(shù)表示及商的精度是否可被計(jì)算出來。這里每一種考慮可影響如何

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論