版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、,1,第三章TMS320C54x匯編語言程序設計,光電學院 樂燕芬 le_,2,內容提要,匯編語言源程序的概述,堆棧的使用方法,控制程序,算術運算,1,2,3,4,3,3-1 匯編語言源程序概述,.asm為擴展名 助記符指令語法格式 標號: 助記符 操作數(shù) ; 注釋,4,3-1 匯編語言源程序概述,標號 冒號可選;由字母、數(shù)字、下劃線等組成;分大小寫 供本程序或其它程序調用,標號的值是段程序計數(shù)器SPC的當前值(局部的符號地址)。 例如,若使用.word偽指令初始化幾個字,則標號將指到第一個字。,標號也可獨立成行,5,3-1 匯編語言源程序概述,可作為.global,.ref,.def或.bs
2、s等匯編偽指令的操作數(shù) 如:,.def:在當前模塊中定義,并可在別的模塊中使用的符號。 .ref:在當前模塊中使用,但在別的模塊中定義的符號。 .global:可以是上面的任何一種情況。,6,3-1 匯編語言源程序概述,操作數(shù) 指令中參與操作的數(shù)值或匯編偽指令定義的內容,緊跟在助記符的后面,由一個或多個空格分開。 操作數(shù)前綴 “#”:作為立即數(shù) 例如:Label: ADD # 99, B “*” :間接地址,即把操作數(shù)的內容作為地址 例如: Label: LD * AR3, B “”:作為直接地址,即操作數(shù)由直接地址碼賦值。 例如: Label: LD x, A,7,3-1 匯編語言源程序概述
3、,匯編語言中的數(shù)據(jù)類型,8,3-1 匯編語言源程序概述,匯編時間常數(shù) .set 使用.set偽指令給一個符號賦值,該符號就成為一個匯編時間常數(shù),等效于一個常數(shù)。 將符號常數(shù)賦給寄存器名。此時,該符號變成了寄存器的替代名。,9,3-1 匯編語言源程序概述,局部標號 局部標號是一種特殊的標號,使用的范圍和影響是臨時性的 定義方式: 用$n來定義。n是09的十進制數(shù),10,3-1 匯編語言源程序概述,局部標號舉例:,假設符號ADDRA,ADDRB,ADDRC已經(jīng)在前面作了定義。,11,3-1 匯編語言源程序概述,符號: 由AZ,az,09,_和$組成;第一位不能為數(shù)字;不能含空格; 符號也可被設置成
4、常數(shù)值。為了提高程序的可讀性,可以用有意義的名稱來代表一些重要的常數(shù)值。 如:,12,3-1 匯編語言源程序概述,匯編源程序中的表達式,13,3-2 堆棧的使用,當程序調用中斷服務程序或子程序時,需要將程序計數(shù)器PC的值和一些重要的寄存器值進行壓棧保護,以便程序返回時能從間斷處繼續(xù)執(zhí)行。 C54x提供一個用16位堆棧指針SP尋址的軟件堆棧。 當向堆棧中壓入數(shù)據(jù)時,堆棧是從高地址向低地址方向填入,堆棧指針SP先減1,然后將數(shù)據(jù)壓入堆棧。 當從堆棧中彈出數(shù)據(jù)時。數(shù)據(jù)先從堆棧中彈出,然后堆棧指針SP加1。,14,3-2 堆棧的使用方法,堆棧的設置 使用堆棧 如: CALL pmad ;(SP)-1S
5、P,(PC)+2TOS,pmadPC RET ;(TOS)PC,(SP)+1SP,15,3-2 堆棧的使用方法,堆棧大小的確定 先開辟一個較大的堆棧區(qū),用已知數(shù)填充 如: LD # -9224,B STM # length,AR1 MVMM SP,AR4 loop: STL B,*AR4- BANZ loop,*AR1-,;堆棧區(qū)要充填的數(shù)0DBF8h加載B ;設置循環(huán)次數(shù) ;設置數(shù)據(jù)指針AR4,SPAR4 ;循環(huán),填充數(shù)據(jù),運行程序,執(zhí)行所有堆棧操作 檢查堆棧中的數(shù)值 用過的堆棧區(qū)就是實際需要的堆??臻g。,6B14,0013,SP,7AB3,用過的棧區(qū),16,3-3 控制程序,C54x具有豐
6、富的程序控制指令,利用這些指令可以執(zhí)行分支轉移、子程序調用、子程序返回,條件執(zhí)行以及循環(huán)等控制操作 分支操作: 分支轉移程序 子程序調用 子程序返回 條件操作程序 比較轉移 循環(huán)操作,17,3-3 控制程序,分支操作分支轉移程序 改寫PC值,使程序改變流向 分支轉移指令,18,3-3 控制程序,例: STM #88H,AR0 LD #1000H,A Loop1: ADD AR0,A BC Loop1,AGT,AOV,;若累加器A0且溢出則轉至 Loop1,否則往下執(zhí)行,例:,19,3-3 控制程序,BC Loop1,AGT,AOV,20,3-3 控制程序,分支操作子程序調用 當子程序被調用時,
7、緊跟在調用后的下一條指令的地址保存在堆棧中。該地址用于返回時能繼續(xù)執(zhí)行調用前的程序,21,3-3 控制程序,分支操作子程序返回 子程序返回可使程序重新在被中斷的連續(xù)指令處繼續(xù)執(zhí)行。 返回指令通過將彈出堆棧的值(包含將要執(zhí)行的下一條指令的地址),送到程序計數(shù)器PC來實現(xiàn)返回功能。,22,3-3 控制程序,例: STM #123H,AR0 LD #456H,AR1 CALL new LD AR1,16,A new: MPY AR0,AR1,A RET,;將操作數(shù)#123H裝入AR0 ;將操作數(shù)#456H裝入AR1 ;調子程序new ;將AR1的內容左移16位后裝入A ;AR0與AR1的內容相乘,結
8、果放入A中 ;子程序返回,例:,23,3-3 控制程序,分支操作比較轉移 指令: CMPR CC,ARx 指令功能: 輔助寄存器ARx與AR0進行比較,若比較結果使所給定的測試條件成立,則TC位置1。 實現(xiàn)方法: 通過CMPR的比較結果得TC值; 根據(jù)TC值,由條件轉移指令實現(xiàn)分支轉移。,24,3-3 控制程序,例如:比較操作后條件分支轉移 STM #5,AR1 ; AR1=5 STM #10,AR0 ; AR0=10 loop: *AR1+ ; AR1=AR1+1 CMPR LT,AR1 ;若AR1 AR0,則TC=1,否則為0 BC loop, TC ;若AR1 AR0,則循環(huán) ;若AR1
9、AR0,則順序執(zhí)行,25,3-3 控制程序,循環(huán)操作 指令: BANZ 轉移地址,*ARx 指令功能: 當輔助寄存器不為0時,則轉至轉移地址,否則順序執(zhí)行。,26,3-3 控制程序,例:,.bss x,10 ;給x保留10個空間 .bss y,1 ;給y保留1個空間 STM #x,AR1 ;設置數(shù)據(jù)段的首地址 STM #9,AR2 ;設置循環(huán)計數(shù)值 LD #0,A ;累加器清0 loop: ADD *AR1+,A ;累加運算,并修改地址 BANZ loop,*AR2- ;若計數(shù)值不為0,則循環(huán),并計數(shù)值減1 ;若計數(shù)值為0,則結束循環(huán) STL A, y ;累加和存入y中,注意: BANZ lo
10、op, *AR2- ;先判斷,再修正AR2=AR2-1,用AR2作為循環(huán)計數(shù)器,由BANZ實現(xiàn)程序的循環(huán)控制。,27,3-4 算術運算,加減法和乘法運算 在數(shù)字信號處理中,加法和乘法運算是最常見的算術運算。 例:計算 y = a x + b,LD a, T ;取a值,T=a MPY x, B ;完成ax乘積,B=ax ADD b, B ;完成ax+b運算,B=ax+b STL B, y ;計算結果存入y中,28,;T=x1 ;B=x1a1 ;T=x2 ;乘法累加,B=x1a1+x2a2 ;計算結果的低字BL存入y中 ;計算結果的高字BH存入y+1中,3-4 算術運算,例:計算 y = xl a
11、l + x2 a2,LD x1, T MPY a1, B LD x2, T MAC a2, B STL B, y STH B, y+1,29,例:計算 y =,3-4 算術運算,Test1.asm,30,3-4 算術運算,例: 求4項乘積aixi(i=1,2,3,4,5)中的最大值,并存放累加器A中。,STM #a, AR1 STM #x, AR2 STM #2, AR3 LD *AR1+,T MPY *AR2+,A loop1: LD *AR1+,T MPY *AR2+,B MAX A BANZ loop1,*AR3-,;乘法運算A=aixi,并修改AR2 ;乘法運算B=aixi,并修改AR
12、2 ;求A和B中的最大值 ;若AR30,則循環(huán),并修改AR3,31,35 重復操作,指令 RPT: 重復下條指令 RPTZ: 累加器清0,并重復下條指令 RPTB: 塊重復,.bss x, 8 STM #x, AR1 LD #0, A RPT #7 STL A,*AR1+,.bss x, 8 STM #x, AR1 RPTZ A,#7 STL A,*AR1+,【例】對數(shù)組進行初始化,使x8=0,0,0,0,0,0,0,0,32,35 重復操作,【例】對數(shù)組x8中的每一元素加1。,.bss x, 8 begin: LD #1,16,B STM #7,BRC STM #x,AR4 RPTB nex
13、t-1 ADD *AR4,16,B,A STH A,*AR4+ next: LD #0,B ,;設置重復次數(shù),BRC=7,循環(huán)8次 ;設置循環(huán)結束地址 ;數(shù)組數(shù)據(jù)左移16位與BH相加 ;存入數(shù)組結果,并修改地址,注 意 塊結束地址REA 重復次數(shù) RPTB指令可以響應中斷,33,36 數(shù)據(jù)塊傳送,指令 數(shù)據(jù)存儲器之間 MVDK Smem,dmad MVKD dmad,Smem MVDD Xmem,Ymem,數(shù)據(jù)存儲器與MMR之間,MVDM dmad,MMR MVMD MMR,dmad MVMM MMRx,MMRy,程序存儲器和數(shù)據(jù)存儲器之間,MVPD pmad,Smem MVDP Smem,p
14、mad READA Smem WRITA Smem,從PA口讀/寫數(shù)據(jù),PORTR PA,Smem PORTW Smem,PA,34,36 數(shù)據(jù)塊傳送,35,36 數(shù)據(jù)塊傳送,【例】初始化數(shù)組x8=0,1,2,3,4,5,6,7 。,. bss x,8 . data TBL: . word 0,1,2,3,4,5,6,7 . text START: STM #x,AR5 RPT #7 MVPD TBL,*AR5+ ,36,37 雙操作數(shù)乘法,課后自習 雙操作數(shù)乘法的編程方法、特點,37,38 小數(shù)運算,定標 設定小數(shù)點在16位中的位置。 位置不同,可以表示不同大小和不同精度的小數(shù)。 Q表示法
15、如Q0,Q1,Q15。Q越大,可以表示的數(shù)的范圍越小,但精度越高。 小數(shù)表示方法 基于2的補碼小數(shù)(Q15格式),其位權值: MSB LSB -1. 2-1 2-2 2-3 2-15 00000010.1010000021+2-1+2-3 = 2.625,38,0.5 4000H 0.25 2000H 0 0000H -0.25 E000H -0.5 C000H -1 8000H,0.532768=4000H 0.2532768=2000H 032768=0000H (0.2532768)補=E000H (0.532768)補=C000H (132768)補=8000H,注意:匯編時,不能直接
16、寫成十進制小數(shù) 如:0.907 .word 32 768*907/1000,38 小數(shù)運算,2的補碼小數(shù): 正數(shù):乘以32768(215),整數(shù)轉換成16進制數(shù)(Q15格式) 負數(shù):其絕對值乘以32768,整數(shù)取反加1 (Q15格式),39,38 小數(shù)運算,小數(shù)乘法與冗余符號位 小數(shù)乘法實例 0.5(-0.375) = -0.1875 假設字長4位,累加器8位(Q3格式),0 1 0 0 (0.5),1 1 0 1 (-0.375),0 1 0 0,0 0 0 0,0 1 0 0,1 1 0 0 (-0100),1 1 1 0 1 0 0,(-0.1875),40,38 小數(shù)運算,乘積: -0
17、.1875 = 1110100 7位二進制,擴展8位后,乘積:11110100 = -0.09375,出錯原因:兩帶符號數(shù)相乘,其結果帶有2個符號位。,解決辦法:運算結果左移一位,消去多余符號位??赏ㄟ^對 FRCT位置1,乘法器自動將乘積結果左移一位,自動消去冗余 符號位,41,38 小數(shù)運算,【例】 編制程序段計算 a1=0.3 a2=0.2 a3=-0.4 a4=0.1 x1=0.6 x2=0.5 x3=-0.1 x4=-0.2,floatMAC.asm,42,39 FIR濾波器的設計,FIR濾波器的差分方程: FIR濾波器的傳遞函數(shù): FIR濾波器的結構,43,39 FIR濾波器的設計,
18、FIR濾波器的輸出表達式 y(n)=b0 x(n)+b1x(n-1)+ +bn-1x(n-N+1) bi為濾波器系數(shù),x(n)為濾波器在n時刻的輸入,y(n)為n時刻的輸出。 基本算法: 采用乘法累加運算。即不斷輸入樣本x(n),經(jīng)過z-1延時后,再進行乘法-累加,最后輸出濾波結果y(n)。 z-1算法的實現(xiàn) 線性緩沖區(qū)法 循環(huán)緩沖區(qū)法,44,39 FIR濾波器的設計,線性緩沖區(qū)法 在數(shù)據(jù)存儲器中開辟一個N單元的緩沖區(qū)(滑窗),用來存放最新的N個輸入樣本; 從最老樣本開始取數(shù),每取一個數(shù)后,樣本向下移位; 讀完最后一個樣本后,輸入最新樣本并存入緩沖區(qū)的頂部。,緩沖區(qū): 頂部為低地址單元,存放最
19、新樣本; 底部為高地址單元,存放最老樣本; 指針ARx指向緩沖區(qū)底部。,45,39 FIR濾波器的設計,求y(n)的過程: 算法,取數(shù)、移位和運算:, 以ARx為指針,按x(n-7)x(n)的順序取數(shù),每取一次數(shù)后,數(shù)據(jù)向下移一位,并完成一次乘法累加運算;, 當經(jīng)過8次取數(shù)、移位和運算后,得y(n);, 求得y(n)后,輸入新樣本x(n+1),存入緩沖區(qū)頂部單元;, 修改指針ARx,指向緩沖區(qū)的底部。,46,39 FIR濾波器的設計,求y(n)的過程: 算法,ARx,x(n-7),ARx,x(n-6),y(n)=y7=b7x(n-7)+0,x(n-6),ARx,x(n-5),y(n)=y6=b
20、6x(n-6)+y7,x(n-5),ARx,x(n-4),y(n)=y5=b5x(n-5)+y6,x(n-4),ARx,x(n-3),y(n)=y4=b4x(n-4)+y5,x(n-3),ARx,x(n-2),y(n)=y3=b3x(n-3)+y4,x(n-2),ARx,x(n-1),y(n)=y2=b2x(n-2)+y3,x(n-1),ARx,x(n),y(n)=y1=b1x(n-1)+y2,x(n),y(n)=b0 x(n)+y1,PORTR,x(n+1),ARx,47,39 FIR濾波器的設計,求y(n1)的過程: 算法,結果:, y(n),取數(shù)順序:,x(n-6)x(n+1),x(n-
21、5),x(n-4),x(n-3),x(n-2),x(n-1),x(n),x(n+1),最新樣本:,x(n+2),x(n+2), y(n+1), y(n+6), y(n+7),ARx,48,39 FIR濾波器的設計,Z-1的運算是通過執(zhí)行存儲器延時指令來實現(xiàn)的。即將數(shù)據(jù)存儲器中的數(shù)據(jù)向較高地址單元移位來進行延時。,注意:用線性緩沖區(qū)實現(xiàn)z-1運算時,緩沖區(qū)的數(shù)據(jù)需要移動,這樣 在一個機器周期內需要一次讀和一次寫操作。因此,線性緩 沖區(qū)只能定位在DARAM中。,49,39 FIR濾波器的設計,可與其他指令結合,可在同樣的機器周期內完成這些操作。如: LD + DELAY LTD MAC + DEL
22、AY MACD 例:雙操作數(shù)尋址指令:MACD *AR1-,b,A 功能: A=A+(AR1)(b), AR1-1AR1, (AR1)(AR1+1),50,39 FIR濾波器的設計,FIR濾波器的實現(xiàn),設N=7,F(xiàn)IR濾波器的算法:,y(n)=b0 x(n)+b1x(n-1)+b5x(n-5) +b6x(n-6),使用線性緩沖區(qū)的FIR1.asm,MACD *AR1-,b,A,51,39 FIR濾波器的設計,Z-1的另外一種實現(xiàn):循環(huán)緩沖區(qū)法 特點: 在數(shù)據(jù)存儲器中開辟一個N個單元的緩沖區(qū)(滑窗),用來存放最新的N個輸入樣本; 從最新樣本開始取數(shù); 讀完最老樣本后,輸入最新樣本來代替最老樣本,而其他數(shù)據(jù)位置不變; 用BK寄存器對緩沖區(qū)進行間接尋址,使緩沖區(qū)地址首尾相鄰。,52,39 FIR濾波器的設計,求y(n)的過程:,ARx,ARx,計算過程: 以ARx為指針,按順序取數(shù),并修改指針; 每取1次數(shù)后,完成1次乘法累加計算; 求得y(n)后,輸入新樣本替代最老樣本; 修改指針ARx,指向最新樣
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版消防分包合同范本
- 靜女(說課稿)-2024-2025學年高一語文必修上冊同步備課系列(統(tǒng)編版2019)001
- 專題23 封建時代的歐洲、亞洲國家(解析版)
- 2024年永州市第二中醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 2024年武岡市人民醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 第一單元第一課《圖像及圖像處理軟件》說課稿-2023-2024學年粵教版(2019)初中信息技術八年級上冊
- 2024版砌墻合同范本共
- 2024版生物醫(yī)藥制品研發(fā)生產(chǎn)合同
- 第二章 城鎮(zhèn)和鄉(xiāng)村-學習主題02-地域文化與城鄉(xiāng)景觀-高一地理湘教版2019必修第二冊學習方案(說課稿+導學案)001
- 第八單元《習作:這樣想象真有趣》說課稿-2023-2024學年語文三年級下冊統(tǒng)編版
- 上海市浦東新區(qū)部分學校聯(lián)考2023-2024學年七年級上學期期末考試數(shù)學試題
- 物資到貨驗收流程與規(guī)范培訓課件
- 南京理工大學物理化學課程考試8套卷(含答案)
- dcm法加固水下軟基施工過程監(jiān)控與質量控制
- 2024屆河北省石家莊二中數(shù)學高一第二學期期末學業(yè)水平測試試題含解析
- 談美談美書簡
- 無人機低空遙感網(wǎng)服務平臺建設需求
- 2023年人民日報社招聘應屆高校畢業(yè)生85人筆試參考題庫(共500題)答案詳解版
- 延繳人員繼續(xù)繳費申請表
- 家長會課件:六年級上學期家長會課件
- 安全帽的正確使用培訓
評論
0/150
提交評論