DSP C2000汇编语言,DSPC2000汇编指令
值。XT寄存器的低16位部分是TL寄存器。該寄存器能裝載一個16位有符號數,能自動對該數進行符號擴展,然后將其送人32位XT寄存器。XT寄存器的高16位部分是T寄存器。該寄存器主要用來存儲16位乘法操作之前的16位整數值。T寄存器也可以為一些移位操作設定移位值,在這種情況下,根據指令,只可以使用T寄存器的一部分。具體的操作說明看表6-19. 助記符 ADDUL P,loc32 MAXCUL P,loc32 MINCUL P,loc32 MOV PH,loc16 MOV PL,loc16 MOV loc16,P MOV T,loc16 MOV loc16,T MOV TL,#0 MOVA T,loc16 MOVH loc16,P MOVL P,loc16 MOVL loc16,P MOVL loc32,P MOVL P,loc32 MOVL XT,loc32 MOVL loc32,XT MOVP T,loc16 MOVS T,loc16 MOVX TL,loc16 SUBUL P,loc32 說明 無符號數[loc32]加到寄存器P 有條件地求無符號數[loc32]和P的最大值,存儲到P 有條件地求無符號數[loc32]和P的最小值,存儲到P [loc16]加載PH [loc16]加載PL 存儲移位后的P寄存器的低16位 [loc16]加載到T 存儲T寄存器到loc16 清除TL [loc16]加載到T寄存器并與先前的乘積相加 保存PH到loc16 [loc16]加載到P寄存器 寄存器P加載到[loc16] 寄存器P加載到[loc32] [loc32]加載到P寄存器 [loc32]加載到XT寄存器 存儲寄存器XT到loc32 [loc16]加載到T寄存器并將寄存器的內容保存到ACC [loc16]加載到T寄存器并從ACC中減去P寄存器的內容 [loc16]符號擴展后加載到TL P減去[loc32] MOVDL XT,loc32 存儲XT寄存器并加載新XT寄存器 表6-19 P或XT的操作的說明
6.對中斷控制寄存器的操作(IFR、IER、DBGIER)
C28x有3個寄存器用于控制中斷:中斷標志寄存器(IFR)、中斷使能寄存器(IER)和調試中斷使能寄存器(DBGIER)。IFR包含的標志位用于可屏蔽中斷(可以用軟件進行屏蔽)。當通過硬件或軟件設定了其中某位時,則相應的中斷就被使能。可以用IER中的相應位屏蔽和使能中斷。當DSP工作在實時仿真模式并且CPU被掛起時,DBGIER表明可以使用時間臨近中斷(如果被使能)。具體操作看表6-20。 助記符 AND IER,#16bit AND IFR,#16bit IACK #16bit 說明 按位進行“與”操作來禁止指定的CPU中斷 按位進行“與”操作來清除掛起的CPU中斷 中斷確認 INTR INT1/.../INT14、NMI、EMUINT、 仿真硬件中斷 DLOGINT、RTOSINT、 MOV IER,loc16 加載中斷允許寄存器 MOV loc16,IER OR IER,#16bit OR IFR,#16bit TRAT #0...31 存儲中斷允許寄存器 按位相“或” 按位相“或” 軟件陷阱 表6-20中斷寄存器的操作說明
7.對狀態寄存器(ST0、ST1)的操作 C28x有兩個狀態寄存器ST0和STl,其中包含著不同的標志位和控制位。這些寄存器可以和數據寄存器交換數據,也可以保存機器的狀態和為子程序恢復狀態。狀態位根據流水線中位值的改變而改變,ST0的位在流水線的執行階段中改變,STl的位在流水線的譯碼2階段中改變。狀態寄存器ST0的各位,所有這些位都可以在流水線執行的過程中進行更改。狀態寄存器ST0的位分布如圖6-4所示,ST1的位分布如圖6-5所示。具體的寄存器操作說明看表6-21
D15~D10OVC/OVCUD9~D7PMD6VD5ND4ZD3CD2TCD1OVMD0SXM
圖6-4狀態寄存器ST0的位分布
D15~D13ARPD6EALLOW助記符 CLRC mode CLRC XF CLRC AMODE C28ADDR D12XFD5LOOPD11D10D9D8D7M0M1MAP保留OBJMODEAMODEIDLESTATD4SPAD3VMAPD2PAGE0說明 清除各狀態位 清除狀態位XF并輸出信號 清除AMODE位 清除AMODE狀態位 清除OBJMODE位 清除M0M1MAP位 清除OVC位 清除OVC位 禁止屏蔽中斷(置INTM位) 允許可屏蔽中斷(清除INTM) 令乘積移位方式位PM=AX(2:0) 用指定單元高6位數加載溢出計數器 存儲溢出計數器 置各狀態位 D1BGMD0INTM
圖6-5狀態寄存器ST1的位分布
CLRC OBJMODE C27MAP CLRC OVC ZAP OVC DINT EINT MOV PM,AX MOV OVC,loc16 MOV loc16,OVC SETC Mode MOVU OVC,loc16 用指定單元低6位數加載溢出計數器 MOVU loc16,OVC 存儲溢出計數器到指定單元的低6位并且高10位清0 SETC XF SETC M0M1MAP C28MAP SETC OBJMODE SETC AMODE LPADDR SPM PM 置XF位并輸出信號 置M0M1MAP位 置M0M1MAP位 置OBJMODE位 置AMODE位 置AMODE位 設置乘積移位方式 表6-21狀態寄存器操作說明
8.對16*16乘法操作的說明(見表6-22 16*16乘法操作說明) 助記符 MAC P,loc16,0:pma MAC P,loc16,*XAR7/++ MAY P,T,loc16 MPY ACC,loc16,#16bit MPYA P,loc16,#16bit MPYA P,T,loc16 MPYB P,T,#8bit MPYS P,T,loc16 MPYB ACC,T,#8bit MPYU ACC,T,loc16 MPYU P,T,loc16 MPYXU P,T,loc16 MPYXU ACC,T,loc16 SQRA loc16 SQRS loc16 XMAC P,loc16,*(pma) XMACD P,loc16,*(pma) 相乘且累加 相乘且累加 16位*16位乘法 16位*16位乘法 16位*16位乘法并加上先前乘積 16位*16位乘法并加上先前乘積 有符號數與8位無符號立即數相乘 16位*16位乘法并做減法 與8位立即數相乘 16位*16位無符號乘法 16位*16位無符號乘法 有符號數與無符號數相乘 有符號數與無符號數相乘 求平方值并講P寄存器的內容加到ACC 求平方值并且ACC做減法 與C2xLP兼容性的相乘且累加 帶有數據移動的、與C2xLP兼容性的相乘且累加 說明 DMAC ACC:P,loc32,*XAR7/++ 雙16*16乘法且累加 表6-22 16*16乘法操作說明
9.對32*32乘法操作的說明(見表6-23 32*32乘法操作說明) 助記符 IMPYAL P,XT,loc32 IMPYL P,XT,loc32 IMPYL ACC,XT,loc32 IMPYSL P,XT,loc32 IMPXUL P,XT,loc32 QMACL P,XT,loc32 QMPYAL P,XT,loc32 QMPYL P,XT,loc32 QMPYL ACC,XT,loc32 說明 有符號32位數乘法(低半段)且加上先前P的內容 有符號32位數*有符號32位數(低半段) 有符號32位數*有符號32位數(低半段) 有符號32位數乘法(低半段)且減去先前P的內容 有符號32位數*無符號32位數(低半段) 有符號32位數*有符號32位數且累加(高半段) 有符號32位數乘法(高半段)且加上先前P的內容 有符號32位數*有符號32位數(高半段) 有符號32位數*有符號32位數(高半段) IMACL P,loc32,*XAR7/++ 有符號32位數*有符號32位數且累加(低半段) QMPYSL P,XT,loc32 QMPXUL P,XT,loc32 有符號32位數乘法(高半段)且減去先前P的內容 有符號32位數*無符號32位數(高半段) 表6-23 32*32乘法操作說明
10.直接寄存器操作(見表6-24) 助記符 ADD loc16,#16bit AND loc16,#16bit CMP loc16,#16bit DEC loc16 DMOV loc16 INC loc16 MOV loc16,*(0:16bit) MOV loc16,16bit MOV loc16,#0 OR loc16,#16bit TBIT loc16,#bit TBIT loc16,T TCLR loc16,#bit TSET loc16,#bit XOR loc16,#16bit 說明 有符號16位立即數與[loc16]相加,結果保存到loc16 有符號16位立即數與[loc16]按位“與”,結果保存到loc16 有符號16位立即數與[loc16]比較 [loc16] 減1 [loc16-1]=[loc16] [loc16]加1 16位地址指向存儲單元的內容加載到loc16 存儲16位立即數到loc16 清除[loc16] [loc16]和16位立即數按位“或”,結果保存到loc16 測試[loc16]中的指定位 測試[loc16]中由T寄存器指定的內容 測試并清除[loc16]中的指定位 測試并置[loc16]中的指定位為1 [loc16]和16位立即數按位“異或” MOVB loc16,#8bit,COND 有條件存儲8位立即數(零擴展)到loc16 表6-24對直接存儲器操作的說明
11.對I/O空間操作的說明(看表6-25) 助記符 IN loc16,*(PA) OUT *(PA),loc16 說明 從端口輸入數據 從端口輸出數據 UOUT *(PA),loc16 想I/O端口輸出不受保護的數據 表6-25 I/O空間操作的說明
12.程序空間的操作說明(看表6-26)
助記符 PREAD loc16,*XAR7 PWRITE *XAR7,loc16 XPREAD loc16,*AL XPWRITE *AL,loc16 說明 將XAR7指向的程序空間的16位數據放到loc16 將[loc16]放到XAR7指向的程序空間的一個存儲單元 與C2xLP兼容性的讀程序操作 與C2xLP兼容性的寫程序操作 XPREAD loc16,*(pma) 與C2xLP兼容性的讀程序操作 表6-26程序空間操作的說明
13.跳轉/調用/返回操作(看表6-27) 助記符 B 16bitoff,COND 說明 有條件跳轉,PC=PC+16位偏移地址(-32768~+32767)
總結
以上是生活随笔為你收集整理的DSP C2000汇编语言,DSPC2000汇编指令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 子进程会继承父进程的哪些内容_【学习教程
- 下一篇: html的课设作业6,第七节课html标