




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第第頁—ARM應(yīng)用系統(tǒng)開發(fā)詳解筆記一跳轉(zhuǎn)指令跳轉(zhuǎn)指令用于實(shí)現(xiàn)程序流程的跳轉(zhuǎn),在ARM程序中有兩種方法可以實(shí)現(xiàn)程序流程的跳轉(zhuǎn):—使用專門的跳轉(zhuǎn)指令?!苯酉虺绦蛴?jì)數(shù)器PC寫入跳轉(zhuǎn)地址值。ARM指令集中的跳轉(zhuǎn)指令可以完成從當(dāng)前指令向前或向后的32MB的地址空間的跳轉(zhuǎn),包括以下4條指令:—B跳轉(zhuǎn)指令—BL帶返回的跳轉(zhuǎn)指令—BLX帶返回和狀態(tài)切換的跳轉(zhuǎn)指令—BX帶狀態(tài)切換的跳轉(zhuǎn)指令BB{條件}目標(biāo)地址
B指令是最簡單的跳轉(zhuǎn)指令。注意存儲在跳轉(zhuǎn)指令中的實(shí)際值是相對當(dāng)前PC值的一個偏移量,而不是一個絕對地址,它的值由匯編器來計(jì)算(參考尋址方式中的相對尋址)它是24位有符號數(shù),左移兩位后有符號擴(kuò)展為32位,表示的有效偏移為26位(前后32MB的地址空間)。
BL指令BL{條件}目標(biāo)地址
BL是另一個跳轉(zhuǎn)指令,但跳轉(zhuǎn)之前,會在寄存器R14中保存PC的當(dāng)前內(nèi)容,因此,可以通過將R14的內(nèi)容重新加載到PC中,來返回到跳轉(zhuǎn)指令之后的那個指令處執(zhí)行。該指令是實(shí)現(xiàn)子程序調(diào)用的一個基本但常用的手段。例:
BLLabel;當(dāng)程序無條件跳轉(zhuǎn)到標(biāo)號Label處執(zhí)行時,同時將當(dāng)前的PC值保存到R14中。
BLX指令BLX指令從ARM指令集跳轉(zhuǎn)到指令中所指定的目標(biāo)地址,并將處理器的工作狀態(tài)有ARM狀態(tài)切換到Thumb狀態(tài)。該指令同時將PC的當(dāng)前內(nèi)容保存到寄存器R14中。
BX指令BX指令跳轉(zhuǎn)到指令中所指定的目標(biāo)地址,目標(biāo)地址處的指令既可以是ARM指令,也可以是Thumb指令。
二數(shù)據(jù)處理指令數(shù)據(jù)處理指令可分為數(shù)據(jù)傳送指令、算術(shù)邏輯運(yùn)算指令和比較指令等。數(shù)據(jù)處理指令包括:MOV數(shù)據(jù)傳送指令、MVN數(shù)據(jù)取反傳送指令、CMP比較指令、CMN反值比較指令、TST位測試指令、TEQ相等測試指令、ADD加法指令、ADC帶進(jìn)位加法指令、SUB減法指令、SBC帶借位減法指令、RSB逆向減法指令、RSC帶借位的逆向減法指令、AND邏輯與指令、ORR邏輯或指令、EOR邏輯異或指令、BIC位清除指令。MOV指令MOV{條件}{S}目的寄存器,源操作數(shù)
MOV指令將源操作數(shù)加載到目的寄存器。其中S選項(xiàng)決定指令的操作是否影響CPSR中條件標(biāo)志位的值,當(dāng)沒有S時指令不更新CPSR中條件標(biāo)志位的值。例:MOVR1,R0,LSL#3;將寄存器R0的值左移3位后傳送到R1。
MVN指令MVN{條件}{S}目的寄存器,源操作數(shù)
MOV指令不同之處是在傳送之前將源操作數(shù)按位被取反。例:
MVNR0,#0;將立即數(shù)0取反傳送到寄存器R0中,完成后R0=-1。
CMP指令CMP{條件}操作數(shù)1,操作數(shù)2
比較操作數(shù)1和操作數(shù)2,更新CSPR不保存結(jié)果。標(biāo)志位表示的是操作數(shù)1與操作數(shù)2的關(guān)系(大、小、相等)。例如,當(dāng)操作數(shù)1大于操作操作數(shù)2,則此后的有GT后綴的指令將可以執(zhí)行。例:CMPR1,#100;將寄存器R1的值與立即數(shù)100相減,并根據(jù)結(jié)果設(shè)置CPSR的標(biāo)志位
CMN指令CMN{條件}操作數(shù)1,操作數(shù)2
實(shí)際完成操作數(shù)1和操作數(shù)2相加,并根據(jù)結(jié)果更改條件標(biāo)志位。例:CMNR1,R0;將寄存器R1的值與寄存器R0的值相加,并根據(jù)結(jié)果設(shè)置CPSR
TST指令TST{條件}操作數(shù)1,操作數(shù)2
TST指令用于把一個寄存器的內(nèi)容和另一個寄存器的內(nèi)容或立即數(shù)進(jìn)行按位的與運(yùn)算,并根據(jù)運(yùn)算結(jié)果更新CPSR中條件標(biāo)志位的值。操作數(shù)1是要測試的數(shù)據(jù),而操作數(shù)2是一個位掩碼,該指令一般用來檢測是否設(shè)置了特定的位。例:
TSTR1,#0xffe;將寄存器R1的值與立即數(shù)0xffe按位與,并根據(jù)結(jié)果設(shè)置CPSR
TEQ指令TEQ{條件}操作數(shù)1,操作數(shù)2TEQ指令用于把一個寄存器的內(nèi)容和另一個寄存器的內(nèi)容或立即數(shù)進(jìn)行按位的異或運(yùn)算,并根據(jù)運(yùn)算結(jié)果更新CPSR中條件標(biāo)志位的值。該指令通常用于比較操作數(shù)1和操作數(shù)2是否相等。例:
TEQR1,R2;將寄存器R1的值與寄存器R2的值按位異或,并根據(jù)結(jié)果設(shè)置CPSR
ADD指令A(yù)DD{條件}{S}目的寄存器,操作數(shù)1,操作數(shù)2
ADDR0,R2,R3,LSL#1;R0=R2+(R3,操作數(shù)
MSR指令用于將操作數(shù)的內(nèi)容傳送到程序狀態(tài)寄存器的特定域中。其中,操作數(shù)可以為通用寄存器或立即數(shù)。用于設(shè)置程序狀態(tài)寄存器中需要操作的位,32位的程序狀態(tài)寄存器可分為4個域:位[31:24]為條件標(biāo)志位域,用f表示;位[23:16]為狀態(tài)位域,用s表示;位[15:8]為擴(kuò)展位域,用x表示;位[7:0]為控制位域,用c表示;該指令通常用于恢復(fù)或改變程序狀態(tài)寄存器的內(nèi)容,在使用時,一般要在MSR指令中指明將要操作的域。MSRCPSR_c,R0;傳送R0的內(nèi)容到SPSR,但僅僅修改CPSR中的控制位域五加載/存儲指令LDR指令LDR{條件}目的寄存器,LDRR0,[R1,R2];將存儲器地址為R1+R2的字?jǐn)?shù)據(jù)讀入寄存器R0。LDRR0,[R1,#8];將存儲器地址為R1+8的字?jǐn)?shù)據(jù)讀入寄存器R0。LDRR0,[R1,R2]!;將存儲器地址為R1+R2的字?jǐn)?shù)據(jù)讀入寄存器R0,并將新地址R1+R2寫入R1。LDRR0,[R1,#8]!;將存儲器地址為R1+8的字?jǐn)?shù)據(jù)讀入寄存器R0,并將新地址R1+8寫入R1。LDRR0,[R1],R2;將存儲器地址為R1的字?jǐn)?shù)據(jù)讀入寄存器R0,并將新地址R1+R2寫入R1。LDRR0,[R1,R2,LSL#2]!;將存儲器地址為R1+R2×4的字?jǐn)?shù)據(jù)讀入寄存器R0,并將新地址R1+R2×4寫入R1。LDRR0,[R1],R2,LSL#2;將存儲器地址為R1的字?jǐn)?shù)據(jù)讀入寄存器R0,并將新地址R1+R2×4寫入R1。帶!號的指令和[]外有寄存器的指令,都要將新地址寫入R1六批量數(shù)據(jù)加載/存儲指令LDM(或STM)指令
LDM(或STM){條件}{類型}基址寄存器{!},寄存器列表{}LDM(或STM)指令用于從由基址寄存器所指示的一片連續(xù)存儲器到寄存器列表所指示的多個寄存器之間傳送數(shù)據(jù),該指令的常見用途是將多個寄存器的內(nèi)容入?;虺鰲?。其中,{類型}為以下幾種情況:*IA每次傳送后地址加1;*IB每次傳送前地址加1;*DA每次傳送后地址減1;*DB每次傳送前地址減1;*FD滿遞減堆棧;*ED空遞減堆棧;*FA滿遞增堆棧;*EA空遞增堆棧;*{!}為可選后綴,若選用該后綴,則當(dāng)數(shù)據(jù)傳送
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司股合同樣本樣本
- 交強(qiáng)險投保合同樣本
- 健身培訓(xùn)合同樣本
- 代課合同樣本
- 公路交工檢測合同標(biāo)準(zhǔn)文本
- 公眾號托管合同樣本
- 東莞工廠宿舍租賃合同樣本
- 供貨維修合同樣本
- 供購合同樣本
- 義烏勞務(wù)合同標(biāo)準(zhǔn)文本
- 患者隱私保護(hù)培訓(xùn)課件
- 四川涼山州人民政府辦公室考調(diào)所屬事業(yè)單位工作人員2人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 分包單位負(fù)責(zé)人崗位責(zé)任制度模版(3篇)
- 2023年高考化學(xué)試卷(河北)(解析卷)
- 2025年國家信息中心招聘15人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 基于STM32單片機(jī)的人體感應(yīng)燈設(shè)計(jì)
- 教學(xué)課件英語人教版2024版七年級初一上冊Unit?1?You?and?Me?Section?A1a1d2
- 學(xué)前兒童語言教育與活動指導(dǎo)-期末試卷(二)
- 畜牧業(yè)邊境管理辦法
- 基于單片機(jī)的步進(jìn)電機(jī)控制系統(tǒng)的設(shè)計(jì)【畢業(yè)論文】
- 化工行業(yè)保安工作計(jì)劃
評論
0/150
提交評論