1 / 18

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

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

amena
Télécharger la présentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 微處理機 Microprocessor (100上) ARM 內核嵌入式SOC原理 組合語言基本介紹與軟體工具學習2011/9/22

  2. 開啟 IAR Embedded Workbench • 請到 開始>所有程式>IAR System … 根據下圖指示開啟 IAR Embedded Workbench • 或從桌面點選捷徑開啟

  3. 選擇 “create new project in current workspace”

  4. Tool cahin 部份請選擇 ARM ,然後根據下圖所示點選 asm ,它會展開一個 asm 的分支,表示現在要開啟的是預設為組合語言的 project • 按ok後,會出現另一視窗,請輸入 project的檔名與選擇要存放的地方(全英數) • project的副檔名為 .ewp

  5. IAR Embedded Workbench的工作環境 • 在 project 內預設的組合語言檔案名稱為 asm 可於存檔時修改,其副檔名為 .s79 注意: 先將預設的組合語言程式架構手動清除掉

  6. 實驗範例 • 在主程式區,重新輸入左邊的指令. • 此段程式功能為 將常數值 0~10 (十進制) 依序各別存放到 R0~R10暫存器裡. MOV R0, #0 MOV R1, #1 MOV R2, #2 MOV R3, #3 MOV R4, #4 MOV R5, #5 MOV R6, #6 MOV R7, #7 MOV R8, #8 MOV R9, #9 MOV R10, #10 B B .

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

  8. 第一次進入 Debug 模式時,通常只會跳出Disassembly(反組譯)的視窗. • 但是在執行程式碼時,我們同時也要觀察暫存器與記憶體內容的值,故以後在作實驗時,我們在這至少要打開三種功能視窗 1.Disassembly 2. Register 3.Memory . • 打開方式: 在toolbar上的 View 下拉後,可依需要而選擇.

  9. 目前在 Debug 模式下,會使用到的一些功能說明: • Rest : 將程式重置.PC會被Clear為0 並從 address 0 開始執行指令. • Step into (F11): 單步執行.每按一次,程式只執行一道指令. • run to cursor: 若程式有設中斷點,則會跑到中斷點程式就會停止. • GO : 自動執行整個程式的指令,不會單步動作需要按 stop才會停止. • Exit Debug: 離開Debug模式, 回到前面編輯模式. • 中斷點:當程式變複雜時,可藉用中 斷點的設定來幫助除錯 (可以設定多個中斷點)

  10. 暫存器視窗 在目前模式下的暫存器 • 舉例說明: 假設 Processor目前在FIQ 的模式下,則在目前模式下的 R8~R14會與 R8_fiq~R14_fiq 暫存器的值相等,且當內容改變時會同步的變化. • 有關暫存器各種模式下的配置問題, 請參考課本. • 在每個模式下的 SPSR 均可以點選 下拉,觀察裡面的各旗標值(flag) .

  11. Memory 視窗 • 預設為 位元組(Byte)顯示模式 • 對著 Memory 視窗按右鍵勾選 4xUnits 即可改變為字組(Word)顯示模式. • 排列方式勾選 Little Endian .

  12. 指令格式 MOV R1, #1  e3a01001 11100011101000000001000000000001 11100011101000000001000000000001

  13. 當按下 step into 單步執行的圖示後, 綠色的指標就會往下跑一個指令,表示這是下次所要執行的指令. • 指令被執行時,相對應之暫存器的內容若有改變時 則會以紅色的數值來表示.

  14. 基本指令格式 • <op>{<cond>}{S} Rd, Rn, #<32-bit immediate> • <op>{<cond>}{S} Rd, Rn, Rm {<shift>} • 基本指令 • 存入暫存器 • MOV Rd, Rn ; Rd = Rn • MOV Rd, #12 ; Rd = 12 • 加減乘 • ADD r0, r1, r2 ; r0 = r1 + r2 • SUB r0, r1, r2 ; r0 = r1 – r2 • MUL r0, r1, r2 ; r0 = r1 * r2 • 左右移動,旋轉 • MOV Rd, Rn LSL #3 ; Rd = Rn * 23

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

  16. 實習問題 實習一: 用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 (不可直接使用乘法指令) 作完請找助教檢查

More Related