《彙編語言程式設計—基於ARM 體系結構(第3版)》是2016年北京航空航天大學出版社出版的圖書。
基本介紹
- 中文名:彙編語言程式設計—基於ARM 體系結構(第3版)
- 出版時間:2016年4月1日
- 出版社:北京航空航天大學出版社
- ISBN:9787512421028
內容簡介,圖書目錄,
內容簡介
彙編語言程式設計—基於ARM體系結構(第3版)
本書是學習嵌入式技術的入門教材,是學習嵌入式系統原理與接口技術、嵌入式系統設計與套用等知識的前導教材。
本書基於ARM體系結構進行彙編語言的教學。全書的內容分成3個部分:第一部分主要介紹彙編語言程式設計的基礎知識和ARM系列微處理器,包括第1、2章;第二部分主要介紹基於ARM體系結構的指令系統、彙編程式設計以及異常中斷編程,包括第3、4、5章;第三部分主要是MDK集成開發環境的使用和ARM彙編語言程式實驗,包括第6、7章。本書是再版書,相比第2版,本書修訂了舊版的一些錯誤,並更新了部分內容。
本書配套資料包含相關章節程式原始碼及其他相關資料,讀者可以到北京航空航天大學出版社網站的“下載專區”免費下載。
本書可作為高等院校計算機及相關專業的彙編語言程式設計課程的教材或參考書,也可供使用彙編語言的工程技術人員參考。
圖書目錄
第1章 基礎知識……………………………………………………………………… 1
1.1 數制與數制轉換……………………………………………………………… 1
1.1.1 數制的基本概念………………………………………………………… 1
1.1.2 二進制數………………………………………………………………… 2
1.1.3 十進制和二進制之間的轉換…………………………………………… 3
1.1.4 二進制和其他進制之間的轉換………………………………………… 4
1.2 二進制數的基本運算………………………………………………………… 5
1.3 計算機中的編碼……………………………………………………………… 6
1.3.1 數字的編碼……………………………………………………………… 6
1.3.2 字元的編碼……………………………………………………………… 7
1.3.3 漢字的編碼……………………………………………………………… 8
1.3.4 統一代碼………………………………………………………………… 10
1.3.5 語音編碼………………………………………………………………… 11
1.3.6 差錯控制編碼…………………………………………………………… 12
1.4 計算機中有符號數的表示…………………………………………………… 18
1.4.1 機器數與真值…………………………………………………………… 18
1.4.2 原碼、反碼與補碼……………………………………………………… 19
1.4.3 補碼的加法運算………………………………………………………… 21
1.4.4 定點數與浮點數………………………………………………………… 22
1.5 基本邏輯運算………………………………………………………………… 24
1.5.1 與運算…………………………………………………………………… 24
1.5.2 或運算…………………………………………………………………… 24
1.5.3 非運算…………………………………………………………………… 25
1.5.4 異或運算………………………………………………………………… 25
習題一…………………………………………………………………………… 26
第2章 ARM 微處理器基礎……………………………………………………… 27
2.1 嵌入式系統概述……………………………………………………………… 27
2.1.1 嵌入式系統的基本概念………………………………………………… 27
2.1.2 嵌入式系統的發展……………………………………………………… 29
2.1.3 嵌入式系統的組成結構………………………………………………… 31
2.1.4 嵌入式處理器…………………………………………………………… 36
2.1.5 典型嵌入式處理器介紹………………………………………………… 38
2.2 ARM 概述…………………………………………………………………… 40
2.2.1 計算機體系結構的分類………………………………………………… 40
2.2.2 ARM 技術的發展過程………………………………………………… 41
2.3 ARM 核心的特點…………………………………………………………… 46
2.3.1 RISC技術……………………………………………………………… 46
2.3.2 流水線技術……………………………………………………………… 47
2.3.3 超標量技術……………………………………………………………… 48
2.4 基於ARM 核的微處理器………………………………………………… 48
2.4.1 基於ARM 核的硬體結構……………………………………………… 48
2.4.2 ARM 核的數據流模型………………………………………………… 49
2.4.3 ARM 處理器工作模式和工作狀態…………………………………… 50
2.5 ARM 暫存器………………………………………………………………… 51
2.5.1 通用暫存器……………………………………………………………… 52
2.5.2 狀態暫存器……………………………………………………………… 53
2.5.3 Thumb暫存器………………………………………………………… 56
2.6 ARM 的存儲系統簡介……………………………………………………… 57
2.6.1 存儲器的層次結構……………………………………………………… 57
2.6.2 數據類型與存儲器格式………………………………………………… 59
2.6.3 非對齊的存儲器訪問…………………………………………………… 61
習題二……………………………………………………………………………… 62
第3章 ARM 指令系統…………………………………………………………… 63
3.1 指令基礎……………………………………………………………………… 63
3.1.1 程式設計語言的層次結構……………………………………………… 63
3.1.2 指令周期和時序………………………………………………………… 64
3.1.3 程式的執行過程………………………………………………………… 66
3.2 ARM 彙編語言……………………………………………………………… 67
3.2.1 指令和指令格式………………………………………………………… 67
3.2.2 指令的可選後綴………………………………………………………… 68
3.2.3 指令的條件執行………………………………………………………… 69
3.2.4 ARM 指令分類………………………………………………………… 71
3.3 ARM 指令的定址方式……………………………………………………… 71
3.3.1 立即數定址……………………………………………………………… 72
3.3.2 暫存器定址……………………………………………………………… 72
3.3.3 暫存器間接定址………………………………………………………… 72
3.3.4 暫存器移位定址………………………………………………………… 73
3.3.5 基址變址定址…………………………………………………………… 73
3.3.6 多暫存器定址…………………………………………………………… 74
3.3.7 相對定址………………………………………………………………… 75
3.3.8 堆疊定址………………………………………………………………… 75
3.4 數據處理指令………………………………………………………………… 76
3.4.1 數據傳送指令…………………………………………………………… 77
3.4.2 移位操作………………………………………………………………… 77
3.4.3 算術指令………………………………………………………………… 81
3.4.4 邏輯運算指令…………………………………………………………… 85
3.4.5 比較指令………………………………………………………………… 87
3.4.6 乘法指令………………………………………………………………… 88
3.5 數據載入與存儲指令………………………………………………………… 91
3.5.1 數據載入與存儲指令概述……………………………………………… 92
3.5.2 單暫存器載入與存儲指令……………………………………………… 94
3.5.3 多暫存器載入與存儲指令…………………………………………… 100
3.5.4 堆疊操作……………………………………………………………… 104
3.5.5 交換指令……………………………………………………………… 106
3.6 分支指令…………………………………………………………………… 107
3.6.1 分支指令B …………………………………………………………… 108
3.6.2 帶返回的分支指令BL ……………………………………………… 109
3.6.3 帶狀態切換的分支指令BX ………………………………………… 110
3.6.4 帶返回和狀態切換的分支指令BLX………………………………… 111
3.7 程式狀態暫存器訪問指令………………………………………………… 112
3.8 協處理器指令……………………………………………………………… 114
3.9 軟體中斷指令……………………………………………………………… 118
3.10 ARM 偽指令……………………………………………………………… 120
3.11 Thumb指令集…………………………………………………………… 122
3.11.1 概 述………………………………………………………………… 122
3.11.2 Thumb指令暫存器的使用………………………………………… 125
3.11.3 ARM??Thumb互動………………………………………………… 125
3.11.4 數據處理指令………………………………………………………… 127
3.11.5 單暫存器載入和存儲指令…………………………………………… 129
3.11.6 多暫存器載入和存儲指令…………………………………………… 130
3.11.7 堆疊指令……………………………………………………………… 131
3.11.8 軟體中斷指令………………………………………………………… 132
3.12 Thumb偽指令…………………………………………………………… 132
習題三…………………………………………………………………………… 133
第4章 ARM 彙編語言程式設計………………………………………………… 135
4.1 彙編語言程式格式………………………………………………………… 135
4.1.1 彙編語言的基本概念………………………………………………… 135
4.1.2 彙編語言源程式的組成……………………………………………… 136
4.1.3 彙編語言程式中常用的符號………………………………………… 139
4.1.4 彙編語言程式中的表達式和運算符………………………………… 141
4.2 ARM 彙編器的偽操作…………………………………………………… 144
4.2.1 符號定義偽操作……………………………………………………… 145
4.2.2 數據定義偽操作……………………………………………………… 146
4.2.3 彙編控制偽操作……………………………………………………… 151
4.2.4 信息報告偽操作……………………………………………………… 154
4.2.5 其他常用的偽操作…………………………………………………… 156
4.3 彙編語言程式的上機過程………………………………………………… 161
4.3.1 彙編語言上機環境…………………………………………………… 161
4.3.2 編輯彙編語言源程式………………………………………………… 163
4.3.3 編譯連結源程式……………………………………………………… 165
4.3.4 調試彙編程式………………………………………………………… 166
4.4 彙編語言程式設計………………………………………………………… 166
4.4.1 程式設計步驟………………………………………………………… 166
4.4.2 簡單程式設計………………………………………………………… 168
4.4.3 分支程式設計………………………………………………………… 169
4.4.4 循環程式設計………………………………………………………… 173
4.4.5 子程式設計…………………………………………………………… 177
4.4.6 彙編程式舉例………………………………………………………… 179
4.5 工作模式切換編程………………………………………………………… 182
4.5.1 處理器模式…………………………………………………………… 182
4.5.2 處理器工作模式切換編程…………………………………………… 182
4.6 ATPCS介紹……………………………………………………………… 183
4.6.1 暫存器的使用規則…………………………………………………… 184
4.6.2 數據棧使用規則……………………………………………………… 185
4.6.3 參數傳遞規則………………………………………………………… 186
4.6.4 ARM 和Thumb程式混合使用的ATPCS ………………………… 187
4.7 ARM 和Thumb混合編程………………………………………………… 187
4.7.1 工作狀態……………………………………………………………… 187
4.7.2 工作狀態切換編程…………………………………………………… 189
4.8 彙編語言和C語言互動編程……………………………………………… 192
4.8.1 彙編程式訪問C程式變數…………………………………………… 192
4.8.2 彙編程式調用C程式………………………………………………… 193
4.8.3 C程式內嵌彙編指令………………………………………………… 194
4.8.4 C程式調用彙編程式………………………………………………… 200
習題四…………………………………………………………………………… 201
第5章 異常中斷編程……………………………………………………………… 203
5.1 ARM 的異常和中斷……………………………………………………… 203
5.1.1 異常和中斷的基本概念……………………………………………… 203
5.1.2 ARM 的異常中斷…………………………………………………… 204
5.1.3 向量表………………………………………………………………… 205
5.1.4 異常的優先權別……………………………………………………… 207
5.2 ARM 異常中斷的處理過程……………………………………………… 208
5.2.1 異常中斷回響過程…………………………………………………… 208
5.2.2 異常中斷的返回……………………………………………………… 210
5.3 復位處理程式……………………………………………………………… 214
5.3.1 復 位………………………………………………………………… 214
5.3.2 復位處理編程………………………………………………………… 215
5.4 SWI異常中斷處理程式…………………………………………………… 217
5.4.1 SWI異常中斷處理程式的實現……………………………………… 217
5.4.2 SWI異常中斷調用…………………………………………………… 220
5.5 FIQ 和IRQ 異常中斷處理程式…………………………………………… 225
5.5.1 IRQ/FIQ 中斷處理機制……………………………………………… 225
5.5.2 IRQ/FIQ 異常中斷處理程式………………………………………… 228
5.5.3 IRQ 異常中斷處理程式舉例………………………………………… 230
5.6 未定義指令異常中斷……………………………………………………… 231
習題五…………………………………………………………………………… 232
第6章 RealView MDK 軟體的使用……………………………………………… 233
6.1 嵌入式系統開發基礎……………………………………………………… 233
6.1.1 嵌入式系統開發流程………………………………………………… 233
6.1.2 嵌入式軟體開發……………………………………………………… 234
6.1.3 DS開發平台簡介……………………………………………………… 237
6.1.4 RealView MDK軟體的安裝………………………………………… 238
6.2 μVision集成開發環境介紹……………………………………………… 243
6.2.1 工程工作區…………………………………………………………… 244
6.2.2 工作區………………………………………………………………… 247
6.2.3 輸出視窗……………………………………………………………… 248
6.2.4 選單欄、工具列和快捷鍵……………………………………………… 249
6.2.5 軟體開發流程………………………………………………………… 253
6.3 程式的編輯………………………………………………………………… 254
6.3.1 工程項目創建………………………………………………………… 256
6.3.2 源檔案的創建………………………………………………………… 258
6.3.3 工程項目管理………………………………………………………… 259
6.3.4 工程基本配置………………………………………………………… 260
6.4 程式的編譯與連結………………………………………………………… 264
6.4.1 基本概念……………………………………………………………… 264
6.4.2 連結器的基本功能…………………………………………………… 268
6.4.3 分散載入描述檔案…………………………………………………… 272
6.4.4 編譯連結配置………………………………………………………… 273
6.4.5 編譯連結工程………………………………………………………… 276
6.5 程式的調試………………………………………………………………… 277
6.5.1 調試模式……………………………………………………………… 277
6.5.2 調試前的配置………………………………………………………… 277
6.5.3 調試器的使用………………………………………………………… 279
6.5.4 調試視窗和對話框…………………………………………………… 280
6.5.5 Flash編程工具……………………………………………………… 290
6.5.6 調試命令和變數……………………………………………………… 292
6.5.7 調試函式簡介………………………………………………………… 297
6.5.8 調試腳本的使用……………………………………………………… 301
6.5.9 調試信息和去除方法………………………………………………… 303
6.5.10 映像檔案轉換器fromELF ………………………………………… 304
習題六…………………………………………………………………………… 305
第7章 ARM 彙編語言程式實驗………………………………………………… 306
7.1 ARM 彙編的上機過程…………………………………………………… 306
7.2 ARM 定址方式…………………………………………………………… 312
7.3 數據處理指令……………………………………………………………… 317
7.4 數據載入與存儲指令……………………………………………………… 320
7.5 ARM 分支指令…………………………………………………………… 325
7.6 ARM 彙編程式設計一…………………………………………………… 329
7.7 ARM 彙編程式設計二…………………………………………………… 334
7.8 工作模式的切換…………………………………………………………… 337
7.9 ARM 彙編和C語言混合編程…………………………………………… 342
7.10 異常中斷編程……………………………………………………………… 347
參考文獻……………………………………………………………………………… 350