




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
嵌入式系統(tǒng)原理2023/11/291寄存器移位尋址LSR:邏輯右移,空出的最高有效位用0填充。LSL:邏輯左移,空出的最低有效位用0填充。ASL:算術(shù)左移,由于左移空出的有效位用0填充.ASR:算術(shù)右移,算術(shù)移位的對(duì)象是帶符號(hào)數(shù),移位過程中必須保持操作數(shù)的符號(hào)不變。如果源操作數(shù)是正數(shù),空出的最高有效位用0填充,如果是負(fù)數(shù)用1填充。ROR:循環(huán)右移,移出的字的最低有效位依次填入空出的最高有效位。RRX:帶擴(kuò)展的循環(huán)右移。將寄存器的內(nèi)容循環(huán)右移1位,空位用原來C標(biāo)志位填充。寄存器移位尋址
ADDR3,R2,R1,LSL#2;R3←R2+4*R1ADDR3,R2,R1,LSLR4;R3←R2+R1*2**R4注意:該尋址方式只能用于當(dāng)指令中最后一個(gè)操作數(shù)位寄存器尋址時(shí)使用,如下面的指令則是錯(cuò)誤的:Addr3,r2,lsl#2,r12023/11/292ARM匯編指令格式ARM指令的典型編碼格式:{cond}:指令執(zhí)行的條件編碼,如EQ、NE等。<opcode>:指令操作符編碼,如LDR、STR等。{S}:決定指令的執(zhí)行是否影響CPRS的值。<Rn>:包含第一個(gè)源操作數(shù)的寄存器編碼。<Rd>:目標(biāo)寄存器編碼。<shifter_operand>:第二個(gè)源操作數(shù)。
ARM指令語法格式中,<>中的內(nèi)容是必需的,而{}中的內(nèi)容是可選的。2023/11/293ARM指令的條件碼域
大多ARM指令都可以條件執(zhí)行,也就是根據(jù)CPSR中條件碼的狀態(tài)決定是否執(zhí)行該指令。只有在CPSR中的條件碼標(biāo)志滿足指定的條件時(shí),帶條件碼的指令才可以執(zhí)行,否則指令被忽略(相當(dāng)于一條空操作NOP指令)。每一條ARM指令編碼中包含4位的條件碼,位于指令編碼的最高4位[31:28]。條件碼共有16種,每種條件碼可用兩個(gè)字符(條件碼的助記符)表示,這兩個(gè)字符可以添加在指令助記符的后面和指令同時(shí)使用。在16種條件標(biāo)志碼中,只有15種可以使用,第16種(1111)為系統(tǒng)保留,暫時(shí)不能使用。
2023/11/294ARM指令的條件碼域ARM指令的條件域2023/11/2953.3ARM指令集ARM指令集的種類跳轉(zhuǎn)指令數(shù)據(jù)處理指令乘法指令與乘加指令(不講)程序狀態(tài)寄存器訪問指令加載/存儲(chǔ)指令批量數(shù)據(jù)加載/存儲(chǔ)指令數(shù)據(jù)交換指令移位指令協(xié)處理器指令(不講)異常產(chǎn)生指令2023/11/2963.3ARM指令集-跳轉(zhuǎn)指令
跳轉(zhuǎn)指令用于實(shí)現(xiàn)程序流程的跳轉(zhuǎn),在ARM程序中有兩種方法可以實(shí)現(xiàn)程序流程的跳轉(zhuǎn):使用專門的跳轉(zhuǎn)指令;直接向程序計(jì)數(shù)器PC寫入跳轉(zhuǎn)地址值;
四種跳轉(zhuǎn)指令B跳轉(zhuǎn)指令(前后32MB的地址空間)。B指令編碼中的跳轉(zhuǎn)地址值是相對(duì)當(dāng)前PC值的一個(gè)偏移量,經(jīng)匯編器計(jì)算得到跳轉(zhuǎn)的絕對(duì)地址。BL帶返回的跳轉(zhuǎn)指令。BL指令在執(zhí)行跳轉(zhuǎn)的同時(shí)將轉(zhuǎn)移指令的下一條指令的地址復(fù)制到當(dāng)前處理器模式下的鏈接寄存器LR中,這一般用于子程序的調(diào)用和返回。BLX帶返回和狀態(tài)切換的跳轉(zhuǎn)指令BX帶狀態(tài)切換的跳轉(zhuǎn)指令例:1.CMPR1,#0BEQLabel2.BX
R7
;跳轉(zhuǎn)到R7的值指定的地址,并根據(jù)R7的最低位切換處理器狀態(tài)2023/11/2973.3ARM指令集-數(shù)據(jù)處理指令數(shù)據(jù)處理指令分類數(shù)據(jù)傳送指令比較指令算術(shù)邏輯運(yùn)算指令數(shù)據(jù)傳送指令MOV數(shù)據(jù)傳送指令MVN數(shù)據(jù)取反傳送指令例:MOVR1,R0;將寄存器R0的值傳送到寄存器R1MOVR1,R0,LSL#3;將寄存器R0的值左移3位后傳送;到R1。MVNR0,#0;將立即數(shù)0取反傳送到寄存器
R0中,完成后
;R0=-1。MOVSR2,#0x10;R2=#0x10,并影響標(biāo)志位。MVNSR2,#0xFF;R2=0Xffff00,并影響標(biāo)志位。第三周到此2023/11/2983.3ARM指令集-數(shù)據(jù)處理指令比較指令CMP比較指令CMN反值比較指令TST位測(cè)試指令TEQ相等測(cè)試指令例:CMPR1,#100;將寄存器R1的值與立即數(shù)100相減,并根;據(jù)結(jié)果設(shè)置CPSR的標(biāo)志位。CMNR1,R0;將寄存器R1的值與寄存器R0的值相加,并根;據(jù)結(jié)果設(shè)置CPSR的標(biāo)志位。TSTR1,#0xffe;將寄存器R1的值與立即數(shù)0xffe按位與,;并根據(jù)結(jié)果設(shè)置CPSR的標(biāo)志位。TEQR1,R2;將寄存器R1的值與寄存器R2的值按位異或,并;根據(jù)結(jié)果設(shè)置CPSR的標(biāo)志位,比較R1與R2是否;相等
2023/11/2993.3ARM指令集-數(shù)據(jù)處理指令
算術(shù)運(yùn)算指令
ADD加法指令A(yù)DC帶進(jìn)位加法指令,加上CPSR中的C條件標(biāo)志位的值SUB減法指令SBC帶借位減法指令RSB逆向減法指令RSC帶借位的逆向減法指令例:ADDR0,R1,#256;R0=R1+256SUBR0,R1,R2;R0=R1-R2RSBR0,R2,R3,LSL#1;R0=(R3<<1)-R2SUBSR0,R0,R2SBCR1,R1,R3
;用SBC實(shí)現(xiàn)64位減法,(R1,R0)=(R1,R0)-;(R3,R2)2023/11/29103.3ARM指令集-數(shù)據(jù)處理指令邏輯運(yùn)算指令A(yù)ND按位與指令ORR按位或指令EOR按位異或指令BIC位清除指令例:ANDR0,R0,#3;該指令保持R0的0、1位,其余位清零ORRR0,R0,#3;該指令設(shè)置R0的0、1位,其余位保持不變。EORR0,R0,#3;該指令反轉(zhuǎn)R0的0、1位,其余位保持不變BICR0,R0,#0x1F;該指令清除R0中低5位,其余的位保持不變。
2023/11/29113.3ARM指令集-程序狀態(tài)寄存器訪問指令
程序狀態(tài)寄存器訪問指令包括以下2條:MRS程序狀態(tài)寄存器到通用寄存器的數(shù)據(jù)傳送指令MSR通用寄存器到程序狀態(tài)寄存器的數(shù)據(jù)傳送指令例:MRSR0,CPSR;傳送CPSR的內(nèi)容到R0MRSR0,SPSR;傳送SPSR的內(nèi)容到R0MSRCPSR,R0;傳送R0的內(nèi)容到CPSRMSRSPSR,R0;傳送R0的內(nèi)容到SPSRMSRCPSR_c,R0;傳送R0的內(nèi)容到SPSR,但僅僅;修改CPSR中的控制位域
PSR的控制域:位[31:24]為條件標(biāo)志位域,用f表示;位[23:16]為狀態(tài)位域,用s表示;位[15:8]為擴(kuò)展位域,用x表示;位[7:0]為控制位域,用c表示;
2023/11/29123.3ARM指令集-加載/存儲(chǔ)指令A(yù)RM微處理器支持加載/存儲(chǔ)指令用于在寄存器和存儲(chǔ)器之間傳送數(shù)據(jù)LDR字?jǐn)?shù)據(jù)加載指令LDRB字節(jié)數(shù)據(jù)加載指令LDRH半字?jǐn)?shù)據(jù)加載指令STR字?jǐn)?shù)據(jù)存儲(chǔ)指令STRB字節(jié)數(shù)據(jù)存儲(chǔ)指令STRH半字?jǐn)?shù)據(jù)存儲(chǔ)指令例:LDRR0,[R1,R2];將存儲(chǔ)器地址為R1+R2的字?jǐn)?shù)據(jù)讀入寄存器R0LDRR0,[R1,R2]?。粚⒋鎯?chǔ)器地址為R1+R2的字?jǐn)?shù)據(jù)讀寄存器R0,并將新地址R1+R2寫入R1。STRR0,[R1],#8;將R0中的字?jǐn)?shù)據(jù)寫入以R1為地址的存儲(chǔ)器中,并將新地址R1+8寫入R1。STRR0,[R1,#8];將R0中的字?jǐn)?shù)據(jù)寫入以R1+8為地址的存儲(chǔ)器中。2023/11/29133.3ARM指令集-批量數(shù)據(jù)加載/存儲(chǔ)指令
ARM微處理器所支持批量數(shù)據(jù)加載/存儲(chǔ)指令可以一次在一片連續(xù)的存儲(chǔ)器單元和多個(gè)寄存器之間傳送數(shù)據(jù)。LDM批量數(shù)據(jù)加載指令STM批量數(shù)據(jù)存儲(chǔ)指令例:STMFDR13!,{R0,R4-R12,LR};將寄存器列表中的寄存器(R0,R4到R12,LR)存入堆棧。LDMFDR13!,{R0,R4-R12,PC};將堆棧內(nèi)容恢復(fù)到寄存器(R0,R4到R12,LR賦值給PC)。注意:IA每次傳送后地址加1;IB每次傳送前地址加1;DA每次傳送后地址減
1;DB每次傳送前地址減1;FD滿遞減堆棧;ED空遞減堆棧;FA滿遞增堆棧;EA空遞增堆棧;
2023/11/29143.3ARM指令集-數(shù)據(jù)交換指令
ARM微處理器所支持的數(shù)據(jù)交換指令能在存儲(chǔ)器和寄存器之間交換數(shù)據(jù)。SWP字?jǐn)?shù)據(jù)交換指令SWPB字節(jié)數(shù)據(jù)交換指令
例:SWPR0,R1,[R2];將R2所指向的存儲(chǔ)器中的字?jǐn)?shù)據(jù)送;到R0,同時(shí)將R1中的字?jǐn)?shù)據(jù)傳送到R2所指向的存儲(chǔ)單元。SWPR0,R0,[R1];該指令完成將R1所指向的存儲(chǔ)器中;的字?jǐn)?shù)據(jù)與R0中的字?jǐn)?shù)據(jù)交換。SWPBR0,R1,[R2];將R2所指向的存儲(chǔ)器中的字節(jié)數(shù);據(jù)傳送到R0,R0的高24位清零,同時(shí)將R1中;的低8位數(shù)據(jù)傳送到R2所指向的存儲(chǔ)單元。SWPBR0,R0,[R1];該指令完成將R1所指向的存儲(chǔ)器;中的字節(jié)數(shù)據(jù)與R0中的低8位數(shù)據(jù)交換。2023/11/29153.3ARM指令集-協(xié)處理器指令
ARM微處理器可支持多達(dá)16個(gè)協(xié)處理器,用于各種協(xié)處理操作,在程序執(zhí)行的過程中,每個(gè)協(xié)處理器只執(zhí)行針對(duì)自身的協(xié)處理指令。CDP協(xié)處理器數(shù)操作指令;用于ARM處理器初始化ARM協(xié)處理器的數(shù)據(jù)處理操作。
LDC協(xié)處理器數(shù)據(jù)加載指令;用于ARM協(xié)處理器寄存器和內(nèi)存單元間的數(shù)據(jù)傳送。STC協(xié)處理器數(shù)據(jù)存儲(chǔ)指令;用于ARM協(xié)處理器寄存器和內(nèi)存單元間的數(shù)據(jù)傳送。MCRARM處理器寄存器到協(xié)處理器寄存器的數(shù)據(jù)傳送指令。MRC協(xié)處理器寄存器到ARM處理器寄存器的數(shù)據(jù)傳送指令。2023/11/29163.3ARM指令集-異常產(chǎn)生指令A(yù)RM微處理器所支持的異常指令有如下兩條:
SWI軟件中斷指令,用來實(shí)現(xiàn)在用戶模式下對(duì)操作系統(tǒng)中特權(quán)模式的程序調(diào)用。BKPT斷點(diǎn)中斷指令,主要用于產(chǎn)生軟件斷點(diǎn),供調(diào)試程序用。
例:SWI0x02;該指令調(diào)用操作系統(tǒng)編號(hào)位02
;的系統(tǒng)例程。B
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小兒紅細(xì)胞葡萄糖-6-磷酸脫氫酶缺乏癥的臨床護(hù)理
- 眼眶爆裂性骨折的臨床護(hù)理
- 【房地產(chǎn)】山水芙蓉國(guó)際新城-主題宣傳推廣創(chuàng)意案
- 誘導(dǎo)透析治療
- 護(hù)理美學(xué)美育
- 肝膽護(hù)理年終總結(jié)
- 新質(zhì)生產(chǎn)力會(huì)議
- 原發(fā)性十二指腸惡性淋巴瘤的臨床護(hù)理
- 感染科院感管理規(guī)范實(shí)施要點(diǎn)
- 2025屆河北省保定市蓮池區(qū)十三中學(xué)七下數(shù)學(xué)期末質(zhì)量檢測(cè)模擬試題含解析
- 小學(xué)英語-國(guó)際音標(biāo)-練習(xí)及答案
- 2025年建筑模板制品行業(yè)深度研究報(bào)告
- 掛名股東簽署協(xié)議書
- 湖北省荊門市2025年七年級(jí)下學(xué)期語文期末考試試卷及答案
- 2025-2030年中國(guó)葉黃素行業(yè)市場(chǎng)發(fā)展現(xiàn)狀及競(jìng)爭(zhēng)格局與投資發(fā)展研究報(bào)告
- 2024第41屆全國(guó)中學(xué)生物理競(jìng)賽預(yù)賽試題(含答案)
- 內(nèi)鏡洗消相關(guān)試題及答案
- 高效節(jié)能泵結(jié)構(gòu)優(yōu)化-全面剖析
- 2024-2025湘科版小學(xué)科學(xué)四年級(jí)下冊(cè)期末考試卷及答案(三套)
- 中國(guó)企業(yè)科創(chuàng)力研究報(bào)告2024
- 細(xì)胞培養(yǎng)技術(shù)的基礎(chǔ)試題及答案
評(píng)論
0/150
提交評(píng)論