C5402 DSP自舉引導方法的分析與研究
.title ″example.asm″ ;源程序取名為example.asm
STACK .usect ″STACK″,10h ;為名為STACK的堆棧預留16個(gè)單元
.bss x, 4 ;在數據存儲器中為未初始
.bss a, 4 化變量(續) x, a, y分別
.bss y, 1 預留4,4,1個(gè)單元
.def start ;
.data ;以下為數據段
table:.word 1, 2, 3, 4 ;在以標號table開(kāi)始的8個(gè)
.word 8, 6, 4, 2 程序存儲單元中存放8個(gè)已初始化數據
.text ;以下為程序段
start: STM # STACK+10,SP ;設置堆棧指針
STM # table, AR1 ;AR1指向table的首地址
STM # x, AR2 ;AR2指向存放變量x的首地址
STM # 7, AR0 ;AR0=7
LD # 0, A ;A=0
loop: LD *AR1+, A ;(AR1)→A, AR1=AR1+1
STL A, *AR2+ ;A→(AR2) , AR2=AR2+1
BANZ loop,*AR0- ;若AR0≠0,循環(huán),AR0=AR0-1
CALL sum ;若AR0=0,調用sum子程序
end: B end ;
sum: LD #0, A ;A=0
STM #a, AR3 ;AR3指向存放變量a的首地址
STM #x, AR4 ;AR4指向存放變量x的首地址
RPT #3 ;
MAC *AR3+,*AR4+,A ;完成三次乘法累加運算
STL A,@y ;將結果存入預留的數據存儲器中
RET ;返回主程序
.end ;結束匯編命令
則生成的example.hex文件的內容如表2所示。
如果將example.hex的內容燒寫(xiě)至16位EPROM中,則其數據存儲器內部組織結構如表3所示。
由表3 的EPROM數據組織結構可看出,在0FFFFh地址處存放的是自舉表首地址8000h。從8000h處開(kāi)始是16位自舉表的內容。自舉表的第一個(gè)字是16位自舉標記10AA,第二、三個(gè)字分別為寄存器SWWSR及BSCR的內容。從第四個(gè)字開(kāi)始分別是程序入口地址、各代碼段長(cháng)度、存放各代碼段的目標地址及各段代碼(本例含有程序段及數據段),最后為塊結束標志0000h。這樣, 一個(gè)正確的自舉表就建立起來(lái)了。
’C5402 DSP芯片為用戶(hù)提供了豐富靈活的自舉引導方式,用戶(hù)可根據各自的需求選擇不同的引導方式,其中并行自舉是最常用的引導方式之一。正確建立自舉表是充分利用自舉引導功能的前提及關(guān)鍵。

評論