資源描述:
《第六講 算術運算指令與邏輯運算指令111201》由會員上傳分享,免費在線閱讀,更多相關內容在教育資源-天天文庫。
1、第六講算術運算指令與邏輯運算指令TMS320C54X共有129條指令。按功能分為4大類:?算術運算指令;?邏輯運算指令;?程序控制指令;?存儲和裝入指令。1.算術運算指令(79條分為6小類)?加法指令(ADD);?減法指令(SUB);?乘法指令(MPY);?乘加指令(MAC)和乘減指令(MAS);?雙數/雙精度指令(DADD、DSUB);?特殊操作指令(ABDST、SQDST)。(1)加法指令(13條)《附錄ATMS320C54X指令集》說明:①不同的加法指令用途不同;ADD:不帶進位;ADD《:不帶進位
2、、移位;ADDC:帶進位;ADDM:專用于立即數;ADDS:無符號數;AddInstructions附錄A加法指令舉例【例1】ADD*AR3+,14,A;;指令受SXM和OVM狀態(tài)標志的影響,;指令執(zhí)行結果影響C和OVA/OVB;加法指令舉例【例1】ADD*AR3+,14,A;指令受SXM和OVM狀態(tài)標志的影響,;指令執(zhí)行結果影響C和OVA/OVB;(2)減法指令(13條)《附錄A》說明:SUBS用于無符號數的減法運算;SUBB用于帶借位的減法運算(如32位擴展精度的減法);SUBC為條件減法.減法指令舉
3、例【例2】SUBB*AR1+,B;;指令受C和OVM狀態(tài)標志的影響,;指令執(zhí)行結果影響C和OVsrc;減法指令舉例【例2】SUBB*AR1+,B;;指令受C和OVM狀態(tài)標志的影響,;指令執(zhí)行結果影響C和OVsrc;(3)乘法指令(10條)《附錄A》說明:①不同的乘法指令完成不同的功能MPY:普通乘指令;MPYR:帶四舍五入指令;MPYA:A累加器高端參與乘法;MPYU:無符號乘法;SQUR:平方;②小數乘法將FRCT設置為1,系統(tǒng)自動將乘積結果左移1位。乘法指令舉例【例3】MPY13,A;P164;指令受
4、FRCT和OVM狀態(tài)標志的影響,;指令執(zhí)行結果影響OVdst;(4)乘加和乘減指令(15條)《附錄A》【例4】MAC*AR5+,A;A+(AR5)*T→A,AR5=AR5+1(4)乘加和乘減指令(15條)《附錄A》【例4】MAC*AR5+,A;A+(AR5)*T→A,AR5=AR5+1MAC*AR3+,*AR4+,A;?Example5:MACR*AR5+,*AR6+,A,BExample5:MACR*AR5+,*AR6+,A,B問題?請用ADD和MPY指令代替MAC*AR5+,#1234h,AMPY*A
5、R5+,#1234h,BADDB,A?什么區(qū)別?(5)長操作數指令(6條)《附錄A》DADDLmem,src[,dst];P149例6:DADD*AR3–,A,B;ST1中的C16決定了指令的執(zhí)行方式。例6:DADD*AR3–,A,B;ST1中的C16決定了指令的執(zhí)行方式。(6)特殊應用指令(15條)《附錄A》?求絕對值?求累加器指數?求累加器的最大/小值?歸一化?求多項式的值?求兩點之間距離的平方?求最小均方值?對稱有限沖擊響應濾波器等FIRSXmem,Ymem,pmad;B=B+A(32~16)*pm
6、ad,A=(Xmem+Ymem)<<16MAXdstdst=max(A,B)MINdstdst=min(A,B)例7:FIRS*AR3+,*AR4+,COEFFS;P154;指令受FRCT,SXM和OVM狀態(tài)標志的影響,;指令執(zhí)行結果影響C和OVdst;例7:FIRS*AR3+,*AR4+,COEFFS;指令受FRCT,SXM和OVM狀態(tài)標志的影響,;指令執(zhí)行結果影響C和OVdst;2.邏輯指令(5小類)?與指令(AND);?或指令(OR);?異或指令(XOR);?移位指令(ROL);?測試指令(BITF
7、)。(1)與、或、異或指令(共15條)《附錄A》(2)移位指令和測試指令(共11條)《附錄A》與指令(AND)ANDSmem,srcAND#lk[,SHFT],src[,dst]AND#lk,16,src[,dst]ANDsrc[,SHIFT][,dst]ANDM#lk,Smem例8:ANDA,3,B例8:ANDA,3,B例9:BITT*AR7+0例9:BITT*AR7+0實例程序:建立項目工程文件example1,使之實現計算y=mx+b;.title"example1.asm".mmregsSTACK
8、.usect"STACK",10H;堆棧的設置.bssx,1;為變量分配4個字的存儲空間.bssm,1.bssb,1.bssy,1.def_c_int00.datatable.word15,3,20;x,m,b.text_c_int00:STM#0,SWWSR;插入0個等待狀態(tài)STM#STACK+10H,SP;設置堆棧指針STM#x,AR1;AR1指向xRPT#2MVPDtable,*AR1+;把程序存儲器中的數據移動到數據存