本書是學習嵌入式技術的入門教材,是學習嵌入式系統(tǒng)原理與接口技術、嵌入式系統(tǒng)設計與應用等知識的前導教材。
本書基于ARM體系結構進行匯編語言的教學,內容分成3個部分:第一部分主要介紹匯編語言程序設計的基礎知識和ARM系列微處理器,包括第1、2章;第二部分主要介紹基于ARM體系結構的指令系統(tǒng)、匯編程序設計以及異常中斷編程,包括第3、4、5章;第三部分主要是MDK集成開發(fā)環(huán)境的使用和ARM匯編語言程序實驗,包括第6、7章。本書是再版書,相比舊版,修訂了舊版的一些錯誤,并更新了部分內容。
本書配套資料包含相關章節(jié)程序源代碼及其他相關資料,讀者可以到北京航空航天大學出版社網(wǎng)站的“下載專區(qū)”免費下載。
第1章基礎知識1
1.1數(shù)制與數(shù)制轉換1
1.1.1數(shù)制的基本概念1
1.1.2二進制數(shù)2
1.1.3十進制和二進制之間的轉換3
1.1.4二進制和其他進制之間的轉換4
1.2二進制數(shù)的基本運算5
1.3計算機中的編碼6
1.3.1數(shù)字的編碼6
1.3.2字符的編碼7
1.3.3漢字的編碼8
1.3.4統(tǒng)一代碼10
1.3.5語音編碼11
1.3.6差錯控制編碼12
1.4計算機中有符號數(shù)的表示18
1.4.1機器數(shù)與真值18
1.4.2原碼、反碼與補碼19
1.4.3補碼的加法運算21
1.4.4定點數(shù)與浮點數(shù)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嵌入式系統(tǒng)概述27
2.1.1嵌入式系統(tǒng)的基本概念27
2.1.2嵌入式系統(tǒng)的發(fā)展29
2.1.3嵌入式系統(tǒng)的組成結構31
2.1.4嵌入式處理器36
2.1.5典型嵌入式處理器介紹38
2.2ARM概述40
2.2.1計算機體系結構的分類40
2.2.2ARM技術的發(fā)展過程41
2.2.3ARM技術與人工智能46
2.3ARM內核的特點47
2.3.1RISC技術47
2.3.2流水線技術47
2.3.3超標量技術48
2.4基于ARM核的微處理器 49
2.4.1基于ARM核的硬件結構49
2.4.2ARM核的數(shù)據(jù)流模型50
2.4.3ARM處理器工作模式和工作狀態(tài)51
2.5ARM寄存器52
2.5.1通用寄存器52
2.5.2狀態(tài)寄存器54
2.5.3Thumb寄存器57
2.6ARM的存儲系統(tǒng)簡介58
2.6.1存儲器的層次結構58
2.6.2數(shù)據(jù)類型與存儲器格式60
2.6.3非對齊的存儲器訪問62
習題二63
第3章ARM指令系統(tǒng)64
3.1指令基礎64
3.1.1程序設計語言的層次結構64
3.1.2指令周期和時序65
3.1.3程序的執(zhí)行過程67
3.2ARM匯編語言68
3.2.1指令和指令格式68
3.2.2指令的可選后綴69
3.2.3指令的條件執(zhí)行70
3.2.4ARM指令分類72
3.3ARM指令的尋址方式72
3.3.1立即數(shù)尋址73
3.3.2寄存器尋址73
3.3.3寄存器間接尋址73
3.3.4寄存器移位尋址74
3.3.5基址變址尋址74
3.3.6多寄存器尋址75
3.3.7相對尋址76
3.3.8堆棧尋址76
3.4數(shù)據(jù)處理指令77
3.4.1數(shù)據(jù)傳送指令78
3.4.2移位操作78
3.4.3算術指令82
3.4.4邏輯運算指令86
3.4.5比較指令87
3.4.6乘法指令89
3.5數(shù)據(jù)加載與存儲指令92
3.5.1數(shù)據(jù)加載與存儲指令概述94
3.5.2單寄存器加載與存儲指令95
3.5.3多寄存器加載與存儲指令101
3.5.4堆棧操作105
3.5.5交換指令107
3.6分支指令108
3.6.1分支指令B109
3.6.2帶返回的分支指令BL 110
3.6.3帶狀態(tài)切換的分支指令BX111
3.6.4帶返回和狀態(tài)切換的分支指令BLX112
3.7程序狀態(tài)寄存器訪問指令113
3.8協(xié)處理器指令115
3.9軟件中斷指令119
3.10ARM偽指令121
3.11Thumb指令集123
3.11.1概述123
3.11.2Thumb指令寄存器的使用126
3.11.3ARMThumb交互126
3.11.4數(shù)據(jù)處理指令128
3.11.5單寄存器加載和存儲指令130
3.11.6多寄存器加載和存儲指令131
3.11.7堆棧指令132
3.11.8軟件中斷指令133
3.12Thumb偽指令133
習題三134
第4章ARM匯編語言程序設計136
4.1匯編語言程序格式136
4.1.1匯編語言的基本概念136
4.1.2匯編語言源程序的組成137
4.1.3匯編語言程序中常用的符號140
4.1.4匯編語言程序中的表達式和運算符142
4.2ARM匯編器的偽操作145
4.2.1符號定義偽操作146
4.2.2數(shù)據(jù)定義偽操作147
4.2.3匯編控制偽操作152
4.2.4信息報告?zhèn)尾僮?55
4.2.5其他常用的偽操作157
4.3匯編語言程序的上機過程162
4.3.1匯編語言上機環(huán)境162
4.3.2編輯匯編語言源程序164
4.3.3編譯鏈接源程序166
4.3.4調試匯編程序167
4.4匯編語言程序設計167
4.4.1程序設計步驟167
4.4.2簡單程序設計169
4.4.3分支程序設計170
4.4.4循環(huán)程序設計174
4.4.5子程序設計178
4.4.6匯編程序舉例180
4.5工作模式切換編程183
4.5.1處理器模式183
4.5.2處理器工作模式切換編程183
4.6ATPCS介紹184
4.6.1寄存器的使用規(guī)則185
4.6.2數(shù)據(jù)棧使用規(guī)則186
4.6.3參數(shù)傳遞規(guī)則187
4.6.4ARM和Thumb程序混合使用的ATPCS188
4.7ARM和Thumb混合編程188
4.7.1工作狀態(tài)188
4.7.2工作狀態(tài)切換編程190
4.8匯編語言和C語言交互編程193
4.8.1匯編程序訪問C程序變量193
4.8.2匯編程序調用C程序194
4.8.3C程序內嵌匯編指令195
4.8.4C程序調用匯編程序201
習題四202
第5章異常中斷編程204
5.1ARM的異常和中斷204
5.1.1異常和中斷的基本概念204
5.1.2ARM的異常中斷205
5.1.3向量表206
5.1.4異常的優(yōu)先級別208
5.2ARM異常中斷的處理過程209
5.2.1異常中斷響應過程209
5.2.2異常中斷的返回211
5.3復位處理程序215
5.3.1復位215
5.3.2復位處理編程216
5.4SWI異常中斷處理程序218
5.4.1SWI異常中斷處理程序的實現(xiàn)218
5.4.2SWI異常中斷調用221
5.5FIQ和IRQ異常中斷處理程序226
5.5.1IRQ/FIQ中斷處理機制226
5.5.2IRQ/FIQ異常中斷處理程序229
5.5.3IRQ異常中斷處理程序舉例231
5.6未定義指令異常中斷232
習題五233
第6章RealView MDK軟件的使用234
6.1嵌入式系統(tǒng)開發(fā)基礎234
6.1.1嵌入式系統(tǒng)開發(fā)流程234
6.1.2嵌入式軟件開發(fā)235
6.1.3DS開發(fā)平臺簡介238
6.1.4RealView MDK軟件的安裝239
6.2μVision集成開發(fā)環(huán)境介紹244
6.2.1工程工作區(qū)245
6.2.2工作區(qū)248
6.2.3輸出窗口249
6.2.4菜單欄、工具欄和快捷鍵250
6.2.5軟件開發(fā)流程254
6.3程序的編輯255
6.3.1工程項目創(chuàng)建257
6.3.2源文件的創(chuàng)建259
6.3.3工程項目管理260
6.3.4工程基本配置261
6.4程序的編譯與鏈接265
6.4.1基本概念265
6.4.2鏈接器的基本功能269
6.4.3分散加載描述文件273
6.4.4編譯鏈接配置274
6.4.5編譯鏈接工程277
6.5程序的調試278
6.5.1調試模式278
6.5.2調試前的配置278
6.5.3調試器的使用280
6.5.4調試窗口和對話框281
6.5.5Flash編程工具291
6.5.6調試命令和變量 293
6.5.7調試函數(shù)簡介298
6.5.8調試腳本的使用302
6.5.9調試信息和去除方法 304
6.5.10映像文件轉換器fromELF305
習題六306
第7章ARM匯編語言程序實驗307
7.1ARM匯編的上機過程307
7.2ARM尋址方式313
7.3數(shù)據(jù)處理指令318
7.4數(shù)據(jù)加載與存儲指令321
7.5ARM分支指令326
7.6ARM匯編程序設計一330
7.7ARM匯編程序設計二335
7.8工作模式的切換338
7.9ARM匯編和C語言混合編程343
7.10異常中斷編程348
參考文獻351