本書是學(xué)習(xí)嵌入式技術(shù)的入門教材,是學(xué)習(xí)嵌入式系統(tǒng)原理與接口技術(shù)、嵌入式系統(tǒng)設(shè)計與應(yīng)用等知識的前導(dǎo)教材。
本書基于ARM體系結(jié)構(gòu)進行匯編語言的教學(xué),內(nèi)容分成3個部分:第一部分主要介紹匯編語言程序設(shè)計的基礎(chǔ)知識和ARM系列微處理器,包括第1、2章;第二部分主要介紹基于ARM體系結(jié)構(gòu)的指令系統(tǒng)、匯編程序設(shè)計以及異常中斷編程,包括第3、4、5章;第三部分主要是MDK集成開發(fā)環(huán)境的使用和ARM匯編語言程序?qū)嶒,包括?、7章。本書是再版書,相比舊版,修訂了舊版的一些錯誤,并更新了部分內(nèi)容。
本書配套資料包含相關(guān)章節(jié)程序源代碼及其他相關(guān)資料,讀者可以到北京航空航天大學(xué)出版社網(wǎng)站的“下載專區(qū)”免費下載。
第1章基礎(chǔ)知識1
1.1數(shù)制與數(shù)制轉(zhuǎn)換1
1.1.1數(shù)制的基本概念1
1.1.2二進制數(shù)2
1.1.3十進制和二進制之間的轉(zhuǎn)換3
1.1.4二進制和其他進制之間的轉(zhuǎn)換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
習(xí)題一26
第2章ARM微處理器基礎(chǔ)27
2.1嵌入式系統(tǒng)概述27
2.1.1嵌入式系統(tǒng)的基本概念27
2.1.2嵌入式系統(tǒng)的發(fā)展29
2.1.3嵌入式系統(tǒng)的組成結(jié)構(gòu)31
2.1.4嵌入式處理器36
2.1.5典型嵌入式處理器介紹38
2.2ARM概述40
2.2.1計算機體系結(jié)構(gòu)的分類40
2.2.2ARM技術(shù)的發(fā)展過程41
2.2.3ARM技術(shù)與人工智能46
2.3ARM內(nèi)核的特點47
2.3.1RISC技術(shù)47
2.3.2流水線技術(shù)47
2.3.3超標(biāo)量技術(shù)48
2.4基于ARM核的微處理器 49
2.4.1基于ARM核的硬件結(jié)構(gòu)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存儲器的層次結(jié)構(gòu)58
2.6.2數(shù)據(jù)類型與存儲器格式60
2.6.3非對齊的存儲器訪問62
習(xí)題二63
第3章ARM指令系統(tǒng)64
3.1指令基礎(chǔ)64
3.1.1程序設(shè)計語言的層次結(jié)構(gòu)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算術(shù)指令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
習(xí)題三134
第4章ARM匯編語言程序設(shè)計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調(diào)試匯編程序167
4.4匯編語言程序設(shè)計167
4.4.1程序設(shè)計步驟167
4.4.2簡單程序設(shè)計169
4.4.3分支程序設(shè)計170
4.4.4循環(huán)程序設(shè)計174
4.4.5子程序設(shè)計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匯編程序調(diào)用C程序194
4.8.3C程序內(nèi)嵌匯編指令195
4.8.4C程序調(diào)用匯編程序201
習(xí)題四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異常中斷響應(yīng)過程209
5.2.2異常中斷的返回211
5.3復(fù)位處理程序215
5.3.1復(fù)位215
5.3.2復(fù)位處理編程216
5.4SWI異常中斷處理程序218
5.4.1SWI異常中斷處理程序的實現(xiàn)218
5.4.2SWI異常中斷調(diào)用221
5.5FIQ和IRQ異常中斷處理程序226
5.5.1IRQ/FIQ中斷處理機制226
5.5.2IRQ/FIQ異常中斷處理程序229
5.5.3IRQ異常中斷處理程序舉例231
5.6未定義指令異常中斷232
習(xí)題五233
第6章RealView MDK軟件的使用234
6.1嵌入式系統(tǒng)開發(fā)基礎(chǔ)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程序的調(diào)試278
6.5.1調(diào)試模式278
6.5.2調(diào)試前的配置278
6.5.3調(diào)試器的使用280
6.5.4調(diào)試窗口和對話框281
6.5.5Flash編程工具291
6.5.6調(diào)試命令和變量 293
6.5.7調(diào)試函數(shù)簡介298
6.5.8調(diào)試腳本的使用302
6.5.9調(diào)試信息和去除方法 304
6.5.10映像文件轉(zhuǎn)換器fromELF305
習(xí)題六306
第7章ARM匯編語言程序?qū)嶒?07
7.1ARM匯編的上機過程307
7.2ARM尋址方式313
7.3數(shù)據(jù)處理指令318
7.4數(shù)據(jù)加載與存儲指令321
7.5ARM分支指令326
7.6ARM匯編程序設(shè)計一330
7.7ARM匯編程序設(shè)計二335
7.8工作模式的切換338
7.9ARM匯編和C語言混合編程343
7.10異常中斷編程348
參考文獻351