《Lab1 軟體工具與學習與組合語言撰寫 20051026.ppt》由会员分享,可在线阅读,更多相关《Lab1 軟體工具與學習與組合語言撰寫 20051026.ppt(15页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、軟體工具學習與組合語言撰寫2011/9/29,微處理機 Microprocessor (100上)ARM 內核嵌入式SOC原理,條件式,在組語的世界,無法像高階語言有if (a=b)的直覺判斷式,組合語言提供旗標flag來協助判斷N 當設定為負的時候,N=1Z當設定為零或相等時候,Z=1 C 當設定有進位的時候,C=1 V 當設定有溢位(改變bit 32)的時候,V=1,怎樣改變條件,指令直接改變 NZCVEx: CMP Rn, operation(參考指令集 Compare)實際上執行Rn - operation於操作碼後面加SSEx: SUBSRd, Rn, operation其他請參考
2、ARM 指令集,範例,R1 R2 = R1 + (R2的2補數) ),判斷式,當前述的旗標設定完之後,對於後續的操做指令(operation)的執行與否來做判斷SEx: ADDNE當 flag Z=0, 執行ADD指令,範例,分歧指令,當此行指令想跳至任一行指令時使用應用 : 迴圈Bcond EX: LOOP: ADD . B LOOP,分歧指令(cont),陣列,如何建立陣列指定陣列於memory起始位址(address)ORG 50H建立連續資料列(array)labeloperationdata TABLE1 DC32 79H,500H,200H,30H,40HHint : 需注意陣列位
3、置不可跟程式於記憶體位址一樣,否則陣列data會被取代,陣列(cont.),使用陣列利用指令將陣列address傳入registerADR R0, TABLE1利用資料傳送指令將address所對應的資料傳入RdLDR R11, R0Hint 陣列每筆資料差4個byte,範例,資料傳送指令,LDR r0, r1 ;r0 = mem32r1 STR r0, r1 ;mem32r1 = r0LDR r0,r1,#4 ;r0 = men32r1+ 4LDR r0,r1,#4! ;r0 = mem32r1+ 4 ;r1 = r1+ 4 LDR r0, r1, #4 ;r0 = mem32 r1 ;r1
4、 = r1 + 4,實習三:寫一程式比較一陣列值 TABLE1 DC32 79h, 500h, 200h, 30h, 40h 的大小,並將最大的結果存入R11暫存器中,作完請找助教檢查,實習一:用組合語言寫出 if( (R1=R2) R1, R2 ,R3, R4數字自訂,加分題:寫一段程式判斷 兩段陣列的值有幾個數相同 並把數目寫入R11Ex : TABLE1 DC32 02H, 05H, 04H TABLE2 DC32 04H, 02H, 08H R11=2,實習二:使用迴圈計算20+21+22+23+24+25 = ? 將運算結果指定存放在 R11 暫存器中,實習問題,範例一,ASEG C
5、ODE32 ORG 00H ;check N MOV R1,#9 MOV R2,#10 CMP R1,R2 ;check Z MOV R1,#10 MOV R2,#10 SUBS R3, R1, R2loop: B loop END,範例二,ASEG CODE32 ORG 0H MOV R1, #5 MOV R2, #3 CMP R1, R2 ADDEQ R3, R1,R2 MULNE R3, R1,R2 B . END,範例三,ASEG CODE32 ORG 50HTABLE1 DC32 79H,500H,200H,30H,40H ORG 00H ADR R0,TABLE1 LDR R11,R0END: B END END,範例四,計算1+2+3+9+10 = ? , 將結果存放在 R0 暫存器中,ASEG CODE32 ORG 0H MOV R0, #0 MOV R1, #1LOOP ADD R0, R0, R1 ADD R1, R1, #1 CMP R1, #10 BLS LOOP B . END,