




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1DSP匯編語言程序的編寫(1) 匯編語言源程序以.asm為其擴展名。(2) 匯編語言源程序的每一行都可以由4個部分組成,句法如下: 標號 : 助記符 操作數(shù) ;注釋其中可用空格或TAB鍵隔開標號供本程序的其他部分或其他程序調用。標號是任選項,標號后面可以加也可以不加冒號“:”。標號必須從第一列寫起,標號最多可達到32個字符(AZ ,az ,09 ,_ ,以及$),但第1個字符不能以數(shù)字開頭。引用標號時,標號的大小寫必須一致。標號的值就是SP
2、C(段程序計數(shù)器)的值。如果不用標號,則第一個字符必須為空格、分號或星號(*)。助記符助記符指令、匯編指令、宏指令和宏調用。作為助記符指令,一般用大寫;匯編命令和宏指令,以英文句號“.”開始,且為小寫。匯編命令可以形成常數(shù)和變量,當用它控制匯編和連接過程時,可以不占用存儲空間。指令和匯編命令都不能寫在第1列。操作數(shù)指令中的操作數(shù)或匯編命令中定義的內容。操作數(shù)之間必須用逗號“,”分開。有的指令操作無操作數(shù),如NOP、RESET。注釋注釋從分號“;”開始,可以放在指令或匯編命令的后面,也可以放在單獨的一行或數(shù)行。注釋是任選項。如果注釋從第1列開始,也可以用“*”表示注釋。(3)
3、0; 常用的匯編命令如表所示。匯編命令作用舉例.title緊隨其后的是匯編語言程序正文.title “example.asm”.end結束匯編命令放在匯編語言程序的最后.text緊隨其后的是匯編語言程序正文經匯編后,緊隨.text后的是可執(zhí)行程序代碼.data緊隨其后的是已初始化數(shù)據(jù)有兩種數(shù)據(jù)形式:.int和.用來設置一個或多個16位無符號整型量常數(shù).word.word 用來設置一個或多個16位符號整型量常數(shù)table: .word 1,2,3,4.word 6,8,4,2表示在程序存儲器標號為table開始的8個單元中存
4、放初始化數(shù)據(jù)1,2,3,4,6,8,4,2.bss.bss為未初始化變量保留存儲空間.bss x,4 表示在數(shù)據(jù)存儲器中空出4個存儲單元存放變量x1,x2,x3和x4.sect建立包含代碼和數(shù)據(jù)的自定義段.sect “vectors”定義向量表,緊隨其后的是復位向量和中斷向量,名為vectors.usect為未初始化變量保留存儲空間的自定義段STACK .usect “STACK”,10h 在數(shù)據(jù)存儲器中留出16個單元作為堆棧區(qū),名為STACK (4) 匯編語言程序中的數(shù)據(jù)形式如表所示形式舉例二進制1110001
5、b或1111001B八進制226q或572Q十進制1234或1234或1234(缺省型)十六進制0A40h或0A40H或0xA40浮點數(shù)1.654e23(僅C語言程序中能用,匯編程序中不能用)字符D字符串“this is a string” 2 程序21 程序一編程目的:了解DSP的輸入和輸出方法程序功能:求乘積之和y=a1*x1+a2*x2+a3*x3+a4*x4.title"mpy_add.asm".mmregs;將存
6、儲映像寄存器導入列表STACK.usect"STACK",10h;給堆棧段分配空間.bssa,4;將9個字空間分配給各個變量.bssx,4.bssy,1PA0.set0;將端口PA0全部置0.defstart;定義標號start.data;定義數(shù)據(jù)代碼段table:.word4,4,4,4.word4,4,4,4.text ;定義文本代碼段start:STM#0,SWWSR;將等待寄存器設為0,表示不等待STM#STACK+10h,SP ;設堆棧指針STM#a,AR1 ;將AR1指向變量a的地址RPT #7;從程序存儲空間轉移71個值到數(shù)據(jù)儲存空間MVPDtable,*AR
7、1+CALLSUM;調用SUM子程序end:Bend ;循環(huán)等待SUM:STM#a,AR3;將AR3指向變量a的地址STM#x,AR4;將AR4指向變量x的地址RPTZA,#3;將A清0,并重復執(zhí)行下一條指令31次MAC*AR3+,*AR4+,ASTL A,y;將寄存器A中的低16位存入y地址空間PORTWy,PA0;將y地址中的值輸出到輸出口RET;子程序返回.end;程序結束 等待位的設置:C54x片內有一部件軟件可編程等待狀態(tài)發(fā)生器,控制著外部總線的工作。軟件可編程等待狀態(tài)發(fā)生器可將外部總線周期延長多達7個周期,這樣一來,C54x就能很方便的與外部慢速器件相接口。如果外部器件要
8、求插入7個以上的等待周期,則可以利用硬件READY先來接口。當所有的外部尋址都配置在0等待狀態(tài)時,加到等待狀態(tài)發(fā)生器的時鐘被關斷;來自內部時鐘的這些通道被切斷后,可以降低處理器的功耗。軟件可編程等待狀態(tài)發(fā)生器的工作由16位的軟件等待狀態(tài)寄存器(SWWSR)的控制,它是存儲器映象寄存器,在數(shù)據(jù)空間的地址為0028h。將程序空間和數(shù)據(jù)空間都分成兩個32K 字塊,I/O空間由一個64K字塊組成。這5個字塊空間在SWWSR中都相應的有一個3位字段,用來定義各個空間插入等待狀態(tài)的數(shù)目: 151412119865320保留/XPA(僅C548,C549)I/O空間(64K)數(shù)據(jù)空間 (高32K)
9、數(shù)據(jù)空間 (低32位)程序空間 (高32位)程序空間 (低32位)RR/WR/WR/WR/WR/W上述SWWSR的各個3位字段規(guī)定的插入等待狀態(tài)的最小數(shù)為0(不插入等待周期),最大數(shù)為7(111b)。22程序二編程目的:熟悉DSP匯編程序設計技巧,完善輸出功能程序功能:實現(xiàn)一8位LED燈由左到右循環(huán)閃爍 .title"bubble.asm" .mmregs;將存儲映像寄存器導入列表STACK.usect"STACK",5h;給堆棧段分配空間.bssy,1 .defstart .dataPA0.set 0.textstart:STM#7000,
10、SWWSR;設等待位 STM #2,AR3;將輔助寄存器AR3設為2 (乘2,實現(xiàn)左移)STM#6,AR1;將輔助寄存器AR1設為6 (左移7次)STM#3,AR2;將輔助寄存器AR2設為3 (循環(huán)執(zhí)行4次) LDAR3,T;將T(乘法寄存器)設為2loop1: LD#1,A ;A寄存器值為1STLA,y;y1PORTWy,PA0;輸出y地址內的值到輸出口 STM#10000,AR4;將輔助寄存器AR4設為10000loop3:RPT#10000;重復執(zhí)行下一指令100001次NOP;等待 BANZloop3,*AR4-;循環(huán)AR4值100001次loop2:MPYy,A;將y×T,
11、其值存入A寄存器STLA,y;將A的值存入y地址中PORTWy,PA0;輸出y地址值到輸出口STM#10000,AR5;將輔助寄存器AR5設為10000loop4:RPT#10000;實現(xiàn)第8個燈跳轉到第1個燈時的時間延遲NOPBANZloop4,*AR5-BANZloop2,*AR1-BANZloop1,*AR2-end:Bend.end數(shù)據(jù)尋址方式:C54x共有7種數(shù)據(jù)尋址方式,如表所示:尋址方式用途舉例指令含義立即尋址主要用于初始化LD 10,A將立即數(shù)10傳送至累加器A絕對尋址利用16位地址尋址存儲單元STL A,*(y)將累加器A的低16位存放到變量y所在的存儲單元中累加器尋址把累加
12、器的內容作為地址READYA x按累加器A作為地址讀程序存儲器,并存入變量x所在的數(shù)據(jù)存儲器單元直接尋址利用數(shù)據(jù)頁指針和堆棧指針尋址LD x,A(DP+x的低7位地址)>A間接尋址利用輔助寄存器作為地址指針LD *AR1,A(AR1) >A存儲器映象寄存器尋址快速尋址存儲器映象寄存器LDM ST1,B(ST1)>B堆棧尋址壓入/彈出數(shù)據(jù)存儲器和MMR(存儲器映象寄存器)PSHM AG(SP)1>SP,(AG)>TOS C54x尋址存儲器有兩種基本的數(shù)據(jù)形式:16位數(shù)和32位數(shù)。大多數(shù)指令能夠尋址16位數(shù),但是,只有雙精度和長字指令才能尋址32位數(shù)。在32
13、位尋址時,先處理高有效字,然后處理低有效字。如果尋址的第1個字處在偶地址,那么第2 個字就處在下一個(較高的)地址;如果第1個字處在奇地址,那么第2個字就處在前一個(較低的)地址。 循環(huán)操作:BANZ在程序設計時,經常需要重復執(zhí)行某一段程序。利用BANZ(當輔助寄存器部位0時轉移)指令執(zhí)行循環(huán)技術和操作是十分方便的。如果要重復執(zhí)行n次,則重復指令中應規(guī)定計數(shù)值為n1次。 重復操作:C54x有3條重復操作指令:RPT(重復下條指令)、RPTZ(累加器清0并重復下條指令)以及RPTB(塊重復指令)。重復指令RPT或 RPTZ允許重復執(zhí)行緊隨其后的那一條指令。如果要重復執(zhí)行n次,
14、則重復指令中應規(guī)定計數(shù)值為n1次。 23 程序三編程目的:實現(xiàn)DSP分時輸入與輸出功能程序功能:先從一個I/O口讀入一數(shù)據(jù)并將其存入某地址,再從該地址將數(shù)據(jù)輸出到另一個I/O口 .title "dspio.asm" .mmregsPA0.set0 PA1.set1STACK.usect"STACK",10h .bssy,1 .textstart:PORTRPA1,y ;從I/O口讀入數(shù)據(jù)并儲存到y(tǒng)所在的地址 LDy,A ;將y中的數(shù)據(jù)寫入累加器A中(便于觀察y中數(shù)值的變化情況) PORTWy,PA0 ;將y所在地址中的數(shù)據(jù)輸出到I/
15、O口end:Bend.end 2.4 程序四編程目的:實現(xiàn)DSP循環(huán)輸入與輸出功能程序功能:令DSP反復執(zhí)行從輸入裝置讀取數(shù)據(jù),并將數(shù)據(jù)存入某一地址,再從該地址將數(shù)據(jù)輸出到輸出設備 .title "dspio2.asm" .mmregsPA0.set0 PA1.set1STACK.usect"STACK",10h .bssy,1 .textstart:STM#4000,AR1;AR1作循環(huán)計數(shù)器LOOP1:PORTRPA1,y ;循環(huán)讀寫LDy,APORTWy,PA0 BANZLOOP1,*AR1end:Bend.end
16、;2.5 程序五編程目的:應用DSP實現(xiàn)對壓水堆大破口事故(LOCA)進行事故后果判斷編程背景:當始發(fā)事件大LOCA發(fā)生時,需要下列功能響應以消除或緩解事故:(1) 停堆(RS),中止核裂變過程;(2) 安全殼噴淋系統(tǒng)動作,以降低安全殼壓力(COI);(3) 向堆芯注入應急冷卻水(ECI),以冷卻堆芯;(4)
17、安全殼再循環(huán)冷卻(COR),由循環(huán)噴淋水導出安全殼內熱量,控制安全殼的溫度核壓力;(5) 堆芯再循環(huán)冷卻(ECR),進行堆芯再循環(huán)冷卻階段。 功能事件樹圖如下圖所示 破口 PB堆次臨界RS安全殼降壓COI堆芯應急冷卻ECI完全殼降壓COR堆芯再循環(huán)冷卻ECR序列號堆芯是否熔化 程序功能:反復從輸入口讀取數(shù)據(jù)(不同位分別代表執(zhí)行不同的功能響應),經DSP處理后將判斷結果輸出到輸出口,通過指示燈(不同的燈代表不同事故結果)顯示出來 .title "LOCA.asm" .mmr
18、egsPA0.set0 PA1.set1STACK.usect"STACK",10h .bssy,1 .bssx,1 .defstart .datatable:.word0,128,0,128,0,32,0,32,0,128,0 ;事故分析列表 .word128,0,32,0,32,0,0,0,0,0 .word4,0,4,0,0,0,0,0,4,0 .word4,0,0,0,0,0,0,0,0,0 .word0,0,0,0,0,0,0,0,0,0 .word0,0,2,0,2,0,0,0,0,0 .word2,0,2,0,0,0,0,0,0,0 .word0,0,0,0,0,0,0,0,0,0 .word0,0,0,0,0,0,0,0,0,0 .word0,0,0,0,0,0,0,0,0,0 .word16,0,16,0,0,0,0,0,16,0 .word16,0,0,0,0,0,1,0,1,0 .word0,0,0,0,1,0,1,0,0,0 .wo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 地產圍擋施工合同
- 人工智能圖像識別技術合同
- 翻譯勞務合同
- 高端智能設備生產與售后服務合同
- 血站采購合同
- 荒料開采買賣合同書
- 旅游度假區(qū)項目開發(fā)投資合同
- 山東科技大學《視頻編輯》2023-2024學年第二學期期末試卷
- 7 可愛的動物 教學設計-2023-2024學年道德與法治一年級下冊統(tǒng)編版
- 黔西南民族職業(yè)技術學院《智能傳感與測試技術》2023-2024學年第二學期期末試卷
- 4.2依法履行義務 教案 -2024-2025學年統(tǒng)編版道德與法治八年級下冊
- NB/T 11526-2024煤礦微震監(jiān)測系統(tǒng)通用技術條件
- 2025年福建長汀金龍稀土有限公司招聘筆試參考題庫含答案解析
- 文化差異下的教育國外的小學音樂教育方式探討
- 貴州省貴陽市普通中學2024-2025學年高二上學期期末監(jiān)測歷史試題(含答案)
- Python金融數(shù)據(jù)挖掘與分析實戰(zhàn)課程教案教學教案
- 2024年地鐵車站照明系統(tǒng)安裝與維護勞務分包協(xié)議3篇
- 醫(yī)務人員醫(yī)德醫(yī)風培訓
- (2024)云南省公務員考試《行測》真題及答案解析
- 2024湖北省金口電排站管理處招聘易考易錯模擬試題(共500題)試卷后附參考答案
- 油井供水合同范例
評論
0/150
提交評論