Presentation is loading. Please wait.

Presentation is loading. Please wait.

微處理機 Microprocessor (100上) ARM 內核嵌入式SOC原理

Similar presentations


Presentation on theme: "微處理機 Microprocessor (100上) ARM 內核嵌入式SOC原理"— Presentation transcript:

1 微處理機 Microprocessor (100上) ARM 內核嵌入式SOC原理
軟體工具學習與組合語言撰寫 2011/9/29

2 條件式 在組語的世界,無法像高階語言有 if (a<=b) 的直覺判斷式,組合語言提供旗標flag來協助判斷
N 當設定為負的時候,N=1 Z 當設定為零或相等時候,Z=1 C 當設定有進位的時候,C=1 V 當設定有溢位(改變bit 32)的時候,V=1

3 怎樣改變條件 指令直接改變 NZCV 於操作碼後面加S 其他請參考 ARM 指令集
Ex: CMP Rn, operation(參考指令集 Compare) 實際上執行Rn - operation 於操作碼後面加S <op>{<cond>}{S} Ex: SUBS Rd, Rn, operation 其他請參考 ARM 指令集

4 範例 R1 – R2 = R1 + (R2的2補數) 0x0000000A  +)0xFFFFFFF6   10000000000

5 判斷式 當前述的旗標設定完之後,對於後續的操做指令(operation)的執行與否來做判斷
<op>{<cond>}{S} Ex: ADDNE 當 flag Z=0, 執行ADD指令

6 範例

7 分歧指令 當此行指令想跳至任一行指令時使用 應用 : 迴圈 B{cond} <expression>
EX: LOOP: ADD ……. B LOOP

8 分歧指令(cont)

9 陣列 如何建立陣列 指定陣列於memory起始位址(address) 建立連續資料列(array)
ORG 50H 建立連續資料列(array) label operation data TABLE1 DC H,500H,200H,30H,40H Hint : 需注意陣列位置不可跟程式於記憶體 位址一樣,否則陣列data會被取代

10 陣列(cont.) 使用陣列 利用指令將陣列address傳入register 利用資料傳送指令將address所對應的資料傳入Rd
ADR R0, TABLE1 利用資料傳送指令將address所對應的資料傳入Rd LDR R11, [R0] Hint 陣列每筆資料差4個byte

11 範例

12 資料傳送指令 LDR r0, [r1] ;r0 = mem32[r1] STR r0, [r1] ;mem32[r1] = r0
LDR r0,[r1,#4] ;r0 = men32[r1+ 4] LDR r0,[r1,#4]! ;r0 = mem32[r1+ 4] ;r1 = r1+ 4 LDR r0, [r1], # ;r0 = mem32 [r1] ;r1 = r1 + 4

13 實習問題 R1, R2 ,R3, R4數字自訂 實習二:使用迴圈計算20+21+22+23+24+25 = ?
實習一:用組合語言寫出 if( (R1==R2) && (R3==R4) ), then R4++ ; R1, R2 ,R3, R4數字自訂 實習二:使用迴圈計算 = ? 將運算結果指定存放在 R11 暫存器中 實習三:寫一程式比較一陣列值 TABLE1 DC32 79h, 500h, 200h, 30h, 40h 的大小,並將最大的結果存入R11暫存器中 加分題:寫一段程式判斷 兩段陣列的值有幾個數相同 並把數目寫入R11 Ex : TABLE1 DC32 02H, 05H, 04H TABLE2 DC32 04H, 02H, 08H  R11=2 作完請找助教檢查

14 範例一 範例三 範例二 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 50H TABLE1 DC H,500H,200H,30H,40H ORG 00H ADR R0,TABLE1 LDR R11,[R0] END: B END END ASEG CODE32 ORG 00H ;check N MOV R1,#9 MOV R2,#10 CMP R1,R2 ;check Z MOV R1,#10 SUBS R3, R1, R2 loop: B loop END

15 範例四 計算1+2+3+…+9+10 = ? , 將結果存放在 R0 暫存器中 ASEG CODE32 ORG 0H MOV R0, #0
LOOP ADD R0, R0, R1 ADD R1, R1, #1 CMP R1, #10 BLS LOOP B . END


Download ppt "微處理機 Microprocessor (100上) ARM 內核嵌入式SOC原理"

Similar presentations


Ads by Google