18
組組組組組組組組組組 組組組組 2011/9/22 組組組組 Microprocessor (100 上) ARM 組組組組組 SOC 組組

組合語言基本介紹與軟體工具學習 2011/9/22

  • Upload
    amena

  • View
    119

  • Download
    0

Embed Size (px)

DESCRIPTION

微處理機 Microprocessor (100 上 ) ARM 內核嵌入式 SOC 原理. 組合語言基本介紹與軟體工具學習 2011/9/22. 開啟 IAR Embedded Workbench. 請到 開始 > 所有程式 >IAR System … 根據下圖指示開啟 IAR Embedded Workbench 或從桌面點選捷徑開啟. 選擇 “create new project in current workspace”. - PowerPoint PPT Presentation

Citation preview

Page 1: 組合語言基本介紹與軟體工具學習 2011/9/22

組合語言基本介紹與軟體工具學習

2011/9/22

微處理機 Microprocessor (100 上 )

ARM 內核嵌入式 SOC原理

Page 2: 組合語言基本介紹與軟體工具學習 2011/9/22

開啟 IAR Embedded Workbench

請到 開始 > 所有程式 >IAR System … 根據下圖指示開啟 IAR Embedded Workbench

或從桌面點選捷徑開啟

Page 3: 組合語言基本介紹與軟體工具學習 2011/9/22

選擇 “create new project in current workspace”

Page 4: 組合語言基本介紹與軟體工具學習 2011/9/22

Tool cahin 部份請選擇 ARM ,然後根據下圖所示點選 asm ,它會展開一個 asm 的分支 , 表示現在要開啟的是預設為組合語言的 project

按 ok後 , 會出現另一視窗 , 請輸入 project的檔名與選擇要存放的地方 ( 全英數 )

project的副檔名為 .ewp

Page 5: 組合語言基本介紹與軟體工具學習 2011/9/22

IAR Embedded Workbench的工作環境 在 project 內預設的組合語言檔案名稱為 asm 可於

存檔時修改 , 其副檔名為 .s79注意 :

先將預設的組合語言程式架構手動清

除掉

Page 6: 組合語言基本介紹與軟體工具學習 2011/9/22
Page 7: 組合語言基本介紹與軟體工具學習 2011/9/22

實驗範例MOV R0, #0MOV R1, #1MOV R2, #2MOV R3, #3MOV R4, #4MOV R5, #5MOV R6, #6MOV R7, #7MOV R8, #8MOV R9, #9MOV R10, #10

B B .

在主程式區 , 重新輸入左邊的指令 .

此段程式功能為 將常數值 0~10 ( 十進制 ) 依序各別存放到 R0~R10暫存器裡 .

Page 8: 組合語言基本介紹與軟體工具學習 2011/9/22

指令輸入完成後 , 按 make鍵 ( 圖示 ) 或是 F7鍵 , 此時會對你剛輸入的程式作編譯 , 編譯完成後若沒有錯誤發生則可在 Messages 視窗下看見相關訊息 .

在編譯完成無錯誤後 按 Debug鍵 ( 圖示 ) 或是 Crtl+D鍵 , 進入 Debug 模式 .

Make 鍵圖示

Debug 鍵圖示

Page 9: 組合語言基本介紹與軟體工具學習 2011/9/22

第一次進入 Debug 模式時 , 通常只會跳出 Disassembly(反組譯 ) 的視窗 .

但是在執行程式碼時 ,我們同時也要觀察暫存器與記憶體內容的值 , 故以後在作實驗時 , 我們在這至少要打開三種功能視窗

1.Disassembly 2. Register 3.Memory .

打開方式 : 在 toolbar上的 View 下拉後 ,可依需要而選擇 .

Page 10: 組合語言基本介紹與軟體工具學習 2011/9/22

目前在 Debug 模式下, 會使用到的一些功能說明 :

Rest : 將程式重置 .PC會被 Clear為 0 並從 address 0 開始執行指令 .

Step into (F11): 單步執行. 每按一次, 程式只執行一道指令 .

run to cursor: 若程式有設中斷點, 則會跑到中斷點程式就會停止 .

GO : 自動執行整個程式的指令 ,不會單步動作需要按 stop才會停止 .

Exit Debug: 離開 Debug模式 , 回到前面編輯模式 .

中斷點 : 當程式變複雜時 , 可藉用中 斷點的設定來幫助除錯 ( 可以設定多個中斷點 )

Page 11: 組合語言基本介紹與軟體工具學習 2011/9/22

暫存器視窗

舉例說明 : 假設 Processor目前在 FIQ 的模式下 , 則在目前模式下的 R8~R14會與 R8_fiq~R14_fiq 暫存器的值相等 , 且當內容改變時會同步的變化 .

有關暫存器各種模式下的配置問題 , 請參考課本 .

在每個模式下的 SPSR 均可以點選

下拉 , 觀察裡面的各旗標值(flag) .

在目前模式下的暫存器

Page 12: 組合語言基本介紹與軟體工具學習 2011/9/22

Memory 視窗預設為 位元組 (Byte)顯示模式

對著 Memory 視窗按右鍵勾選 4xUnits 即可改變為字組 (Word)顯示模式 .

排列方式勾選 Little Endian .

Page 13: 組合語言基本介紹與軟體工具學習 2011/9/22

指令格式MOV R1, #1 e3a01001 11100011101000000001000000000001 1110 001 1101 0 0000 0001 000000000001

Page 14: 組合語言基本介紹與軟體工具學習 2011/9/22

當按下 step into 單步執行的圖示後 , 綠色的指標就會往下跑一個指令 , 表示這是下次所要執行的指令 .

指令被執行時 , 相對應之暫存器的內容若有改變時 則會以紅色的數值來表示 .

Page 15: 組合語言基本介紹與軟體工具學習 2011/9/22

基本指令格式<op>{<cond>}{S} Rd, Rn, #<32-bit immediate>

<op>{<cond>}{S} Rd, Rn, Rm {<shift>}

基本指令存入暫存器

MOV Rd, Rn ; Rd = RnMOV Rd, #12 ; Rd = 12

加減乘ADD r0, r1, r2 ; r0 = r1 + r2SUB r0, r1, r2 ; r0 = r1 – r2MUL r0, r1, r2 ; r0 = r1 * r2

左右移動 , 旋轉MOV Rd, Rn LSL #3 ; Rd = Rn * 23

Page 16: 組合語言基本介紹與軟體工具學習 2011/9/22
Page 17: 組合語言基本介紹與軟體工具學習 2011/9/22

最後 , 若存檔完要關畢 IAR Embedded Workbench 並離開時 , 記得要儲存目前的 workspace ,其 workspace 的副檔名為 .eww

Page 18: 組合語言基本介紹與軟體工具學習 2011/9/22

實習一 : 用 16進位值將 (25,17)存入 (R1,R2),即 R1=25, R2=17

並且將 (1)R1+R2 (2)R1-R2 (3)R1*R2

分別顯示在 R3, R4, R5實習二 : 請將 (6+8)X4+(32/16)=?用組合語言表示出來,利用左右移動, 將運算結果指定存放在 R11暫存器中實習三:將 R1=2 並且只使用兩行指令 計算出 R11 = R1*35

( 不可直接使用乘法指令 )

作完請找助教檢查

實習問題