ARM匯編指令列表_第1頁
ARM匯編指令列表_第2頁
ARM匯編指令列表_第3頁
ARM匯編指令列表_第4頁
ARM匯編指令列表_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、指令格式意義示例ADCADC條件S 目的,操作數(shù)1,操作數(shù)2帶進(jìn)位的32位數(shù)加法目的ç操作數(shù)1 + 操作數(shù)2 + !CADDADD條件S 目的,操作數(shù)1,操作數(shù)232位數(shù)相加目的ç操作數(shù)1 + 操作數(shù)2ANDAND條件S  目的,操作數(shù)1,操作數(shù)232位數(shù)的邏輯與目的ç操作數(shù)1 & 操作數(shù)2BB條件  目標(biāo)地址相對跳轉(zhuǎn)指令(32M,26b)跳轉(zhuǎn)至目的地, PCç目標(biāo)地址BEQ相等則跳轉(zhuǎn)(Branch if EQual)BNE不相等則跳轉(zhuǎn)(Branch if Not Equal)BGE大于或等于跳轉(zhuǎn)(Branch if Grea

2、ter than or Equa)BGT大于跳轉(zhuǎn)(Branch if Greater Than)BICBIC條件S  目的,操作數(shù)1,操作數(shù)232位數(shù)的邏輯位清零類似ANDBKPTBKPT   16位的立即數(shù)斷點指令BLBL條件 目標(biāo)地址帶鏈接的相對跳轉(zhuǎn)指令(PCèR14,跳轉(zhuǎn))BLE小于或等于跳轉(zhuǎn)(Branch if Less than or Equal)BLEQ帶鏈接等于跳轉(zhuǎn)(Branch with Link if EQual)BLLT帶鏈接小于跳轉(zhuǎn)(Branch with Link if Less Than)BLT小于跳轉(zhuǎn)(Branch if Le

3、ss Than)BLXBLX 目標(biāo)地址帶鏈接的切換跳轉(zhuǎn)(PCèR14,跳轉(zhuǎn)并切換為thumb)BXBX條件 目標(biāo)地址切換跳轉(zhuǎn)跳轉(zhuǎn)并切換(ARM/Thumb)CDP CDP2CDP條件 協(xié)處理器編碼,協(xié)處理器操作碼1,目的寄存器,源寄存器1,源寄存器2,協(xié)處理器操作碼2。協(xié)處理器數(shù)據(jù)處理操作CLZ零計數(shù)CMNCMN條件 操作數(shù)1,操作數(shù)2比較兩個數(shù)的相反數(shù)CMPCMP條件  操作數(shù)1,操作數(shù)232位數(shù)比較操作數(shù)1 操作數(shù)2 更新CPSREOREOR條件S  目的,操作數(shù)1,操作數(shù)232位邏輯異或目的ç操作數(shù)1 XOR 操作數(shù)2LDC LDC2LD

4、C條件L  協(xié)處理器編碼,目的寄存器,源寄存器從協(xié)處理器取一個或多個32位值LDC   P3,C4,R0 ;P3: C4 ç R0推薦精選LDMLDM(或STM)條件類型  基址寄存器!,寄存器列表從內(nèi)存送多個32位字到ARM寄存器registerçMemeryLDRLDR條件 目的,<存儲器地址>從虛擬地址取一個單個的32位值至寄存器Registerç<存儲器地址>LDR條件B 目的,<存儲器地址>讀一個字節(jié)LDR條件H 目的,<存儲器地址>讀半字(即16位)MCR MCR2

5、 MCRRMCR條件 協(xié)處理器編碼,協(xié)處理器操作碼1,源寄存器,目的寄存器1,目的寄存器2,協(xié)處理器操作碼2。從寄存器送數(shù)據(jù)到協(xié)處理器MCR   P3,3,R0,C4,C5,6     ;將ARM處理器寄存器R0中的數(shù)據(jù)傳送到協(xié)處 理器P3的寄存器C4和C5中MLA MLA條件S 目的,操作數(shù)1,操作數(shù)2,操作數(shù)332位乘累加 目的ç操作數(shù)1 * 操作數(shù)2 + 操作數(shù)3MOVMOV條件S  目的,源操作數(shù)傳送一個32位數(shù)到寄存器目的 ç 源操作數(shù)MRC M

6、RC2 MRRCMRC條件 協(xié)處理器編碼,協(xié)處理器操作碼1,目的寄存器,源寄存器1,源寄存器2,協(xié)處理器操作碼2。從協(xié)處理器傳送數(shù)據(jù)到寄存器MRC   P3,3,R0,C4,C5,6     ;該指令將協(xié)處理器P3的寄存器中的數(shù)據(jù)傳送到 ARM處理器寄存器中MRS MRS條件    通用寄存器 狀態(tài)寄存器(CPSR或SPSR)把狀態(tài)寄存器的值送到通用寄存器Registerç狀態(tài)寄存器MSRMSR條件    

7、程序狀態(tài)寄存器(CPSR或SPSR)_<域>,操作數(shù)把通用寄存器的值傳送到狀態(tài)寄存器CPSR或SPSR<域> ç操作數(shù)MUL MUL條件S 目的,操作數(shù)1,操作數(shù)232位乘結(jié)果MODE(232),目的ç操作數(shù)1 * 操作數(shù)2MVNMVN條件S 目的,源操作數(shù)把一個32位數(shù)的邏輯“非”送到寄存器目的ç (取反) 源操作數(shù)ORRORR條件S  目的,操作數(shù)1,操作數(shù)232位邏輯或目的ç 操作數(shù)1 OR 操作數(shù)2PLD預(yù)裝載提示指令QADD有符號32位飽和加QDADD有符號雙32位飽和加QSUB有符號32位飽和減QD

8、SUB有符號雙32位飽和減RSBRSB條件S  目的,操作數(shù)1,操作數(shù)2逆向32位減法目的ç 操作數(shù)2 - 操作數(shù)1推薦精選RSCRSC條件S 目的,操作數(shù)1,操作數(shù)2帶進(jìn)位的逆向32法減法目的ç操作數(shù)2 - 操作數(shù)1 - !CSBCSBC條件S  目的,操作數(shù)1,操作數(shù)2帶進(jìn)位的32位減法目的 = 操作數(shù)1 - 操作數(shù)2 - !CSMLAxy有符號乘累加(16位*16位)+32位=32位SMLAL SMLAL條件S   目的Low,目的High,操作數(shù)1,操作數(shù)264位有符號乘累加(32位*32位)+6

9、4位=64位)目的Lç (操作1 * 操作2)L+ 目的L目的Hç(操作1 * 操作2)H +目的HSMALxy64位有符號乘累加(32位*32位)+64位=64位)SMLAWy號乘累加(32位*16位)>>16位)+32位=32位SMULLSMULL條件S   目的Low,目的High,操作數(shù)1,操作數(shù)264位有符號乘累加(32位*32位)=64位SMULxy有符號乘(16位*16位=32位)SMULWy有符號乘(32位*16位>>16位=32位)STC STC2STC條件L 協(xié)處理器編碼,源寄存器,目的寄存

10、器從協(xié)處理器中把一個或多個32位值存到內(nèi)存STC   P3,C4,R0  P3:C4àR0STMLDM(或STM)條件類型 基址寄存器!,寄存器列表把多個32位的寄存器值存放到內(nèi)存MemçRegisterSTRSTR條件  源寄存器,<存儲器地址>把寄存器的值存到一個內(nèi)存的虛地址內(nèi)間<存儲器地址>çRegisterSTR條件B 源寄存器,<存儲器地址>8位(R的低8位)的字節(jié)數(shù)據(jù)傳送到存儲器STR條件H 源寄存器,<存儲器地址>16位的半

11、字?jǐn)?shù)據(jù)傳送到存儲器SUBSUB條件S 目的,操作數(shù)1,操作數(shù)232位減法目的ç操作數(shù)1 操作數(shù)2SWISWI條件 24位的立即數(shù)軟中斷無立即數(shù)時,默認(rèn)為R0SWPSWP條件 目的,源寄存器1,源寄存器2把一個字或者一個字節(jié)和一個寄存器值交換SWP條件B 目的,源寄存器1,源寄存器2 字節(jié)操作推薦精選TEQTEQ條件 操作數(shù)1,操作數(shù)2等值測試TSTTST條件 操作數(shù)1,操作數(shù)2位測試UMLALUMLAL條件S   目的Low,目的寄存器High,操作數(shù)1,操作數(shù)264位無符號乘累加(32位*32位)+64位=64位)UMULLUMULL條件S  

12、; 目的L, 目的H, 操作數(shù)1,操作數(shù)264位無符號乘累加(32位*32位)=64位ARM匯編偽指令符號定義Symbol Definition GBLA 、GBLL 、GBLSGBLA: 定義一個全局的數(shù)字變量,并初始化為0 GBLL :定義一個全局的邏輯變量,并初始化為F(假)GBLS:定義一個全局的字符串變量,并初始化為空LCLA 、LCLL 、LCLSLCLA:定義一個局部的數(shù)字變量,并初始化為0LCLL: 定義一個局部的邏輯變量,并初始化為F(假)LCLS: 定義一個局部的字符串變量,并初始化為空SETA

13、 、SETL 、SETSSETA偽指令用于給一個數(shù)學(xué)變量賦值 SETL偽指令用于給一個邏輯變量賦值 SETS偽指令用于給一個字符串變量賦值RLIST名稱 RLIST  寄存器列表 RLIST偽指令可用于對一個通用寄存器列表定義名稱,使用該偽指令定義的名稱可在ARM 指令 LDM/STM中使用。數(shù)據(jù)定義Data DefinitionDCB 用于分配一片連續(xù)的字節(jié)存儲單元并用指定的數(shù)據(jù)初始化標(biāo)號 DCB 表達(dá)式 DCW(DCWU)用于分配一片連續(xù)的半字存儲單元并用指定的

14、數(shù)據(jù)初始化DCD (DCDU)用于分配一片連續(xù)的字存儲單元并用指定的數(shù)據(jù)初始化DCFD(DCFDU)用于為雙精度的浮點數(shù)分配一片連續(xù)的字存儲單元并用指定的數(shù)據(jù)初始化DCFS(DCFSU)用于為單精度的浮點數(shù)分配一片連續(xù)的字存儲單元并用指定的數(shù)據(jù)初始化DCQ(DCQU)用于分配一片以8字節(jié)為單位的連續(xù)的存儲單元并用指定的數(shù)據(jù)初始化SPACE SPACE偽指令用于分配一片連續(xù)的存儲區(qū)域并初始化為0 ,其中,表達(dá)式為要分配的字節(jié)數(shù)。   SPACE也可用“  ”代替。標(biāo)號 SPACE 表達(dá)式MAP&#

15、160;用于定義一個結(jié)構(gòu)化的內(nèi)存表首地址。MAP也可用“” 代替MAP 表達(dá)式  ,基址寄存器     推薦精選FIELD 用于定義一個結(jié)構(gòu)化的內(nèi)存表的數(shù)據(jù)域。FILED 也可用“#” 代替標(biāo)號 FIELD 表達(dá)式匯編控制Assembly ControlIF 、ELSE 、ENDIF 條件編譯WHILE 、WEND循環(huán)MACRO 、MEND宏MEXIT用于從宏定義中跳轉(zhuǎn)出去其它AREACODE /

16、DATA/READONLY/READWRITE/ALAIN/COMMONAREA 段名 屬性1 ,屬性2 ,   ALIGN    通過添加填充字節(jié)的方式,使當(dāng)前位置滿足一定的對齊方式. ALIEN3 ;指定后面的指令為8 字節(jié)對齊, 23=8,可取值0-31.CODE16 、CODE32 CODE16偽指令通知編譯器,其后的指令序列為16位的Thumb指令.CODE32偽指令通知編譯器,其后的指令序列為32位的ARM指令。只通知 編譯

17、器其后指令的類型,并不能對處理器進(jìn)行狀態(tài)的切換。ENTRY    指定匯編程序的入口點END    通知編譯器已經(jīng)到了源程序的結(jié)尾EQU    用于為程序中的常量、標(biāo)號等定義一個等效的字符名稱,類似于C語言中的define 。其中EQU可用“*”代替EXPORT(或GLOBAL)在程序中聲明一個全局的標(biāo)號,該標(biāo)號可在其他的文件中引用。EXPORT 可用GLOBAL代替。標(biāo)號在程序中區(qū)分大小寫,WEAK 選項聲明其他的同名標(biāo)號優(yōu)先于該標(biāo)號被引用IM

18、PORT    通知編譯器要使用的標(biāo)號在其他的源文件中定義,但要在當(dāng)前源文件中引用,而且無論當(dāng)前源文件是否引用該標(biāo)號,該標(biāo)號均會被加入到當(dāng)前源文件的符號表中。標(biāo) 號在程序中區(qū)分大小寫,WEAK 選項表示當(dāng)所有的源文件都沒有定義這樣一個標(biāo)號時,編譯器也不給出錯誤信息EXTERN    通知編譯器要使用的標(biāo)號在其他的源文件中定義,但要在當(dāng)前源文件中引用,如果當(dāng)前源文件實際并未引用該標(biāo)號,該 標(biāo)號就不會被加入到當(dāng)前源文件的符號表中。標(biāo)號在程序中區(qū)分大小寫GET(或INCLUDE)將一個源文件

19、包含到當(dāng)前的源文件中,并將被包含的源文件在當(dāng)前位置進(jìn)行匯編處理INCBIN    將一個目標(biāo)文件或數(shù)據(jù)文件作為二進(jìn)制數(shù)據(jù)包含到當(dāng)前的源文件中RN    給一個寄存器定義一個別名Temp RN R0 推薦精選ROUT    給一個局部變量定義作用范圍#立即數(shù), &十六進(jìn)制數(shù), B .表示當(dāng)前PC指針(死循環(huán))ARM條件碼操作碼31:28助記符擴(kuò)展解釋標(biāo)志狀態(tài)0000EQ相等/等于0Z=10001NE不等Z=00010CS/HS進(jìn)位/無符號數(shù)高于或等于C=100

20、11CC/LO 無進(jìn)位/無符號數(shù)低于C=00100MI負(fù)數(shù)N=10101PL正數(shù)或0N=00110VS溢出V=10111VC未溢出V=01000HI無符號數(shù)高于(大于)C=1 && Z=01001LS無符號數(shù)低于或等于(小于等于)C=0 | Z=11010GE有符號數(shù)大于或等N=V1011LT有符號數(shù)小于N!=V1100GT有符號數(shù)大于Z=0 &&N=V1101LE有符號數(shù)小于或等于Z=1 | N!=V1110AL總是(always)任何狀態(tài)1111NV從不(never)(不要使用)無CPSR31 2827 87 654 0NZCV UnusedIFT(=1th

21、umb,=0Arm)mode位31:24為條件位域,用f表示;推薦精選位23:16為狀態(tài)位域,用s表示;位15:8 為擴(kuò)展位域,用x表示;位7:0    為控制位域,用c表示;與指令MSR相關(guān)關(guān)于移位LSL邏輯左移(低位填0)通用寄存器,LSL 操作數(shù)  LSR邏輯右移(高位填0)通用寄存器,LSR 操作數(shù)  ASL算術(shù)左移(低位填0)通用寄存器,ASL 操作數(shù)  ASR 算術(shù)右移(符號位填充高位)通用寄存器,ASR 操作數(shù)ROR 循環(huán)

22、右移通用寄存器,ROR 操作數(shù)RRX 帶C的循環(huán)右移通用寄存器,RRX 操作數(shù)推薦精選中斷向量表AddressHigh Address0x0000 00000xFFFF 0000RESET0x0000 00040xFFFF 0004UNDEF0x0000 00080xFFFF 0008SWI0x0000 000C0xFFFF 000CPABT0x0000 00100xFFFF 0010DABT0x0000 00140xFFFF 0014-0x0000 00180xFFFF 0018IRQ0x0000 001C0xFFFF 001CFIQAPCS寄存器使用約定寄存器

23、ADCS名稱ADCS作用0a1變元1/整數(shù)結(jié)果/臨時寄存器1a2變元2/臨時寄存器2a3變元3/臨時寄存器3a4變元4/臨時寄存器4v1寄存器變量15v2寄存器變量26v3寄存器變量37v4寄存器變量48v5寄存器變量59sb/v6靜態(tài)基/寄存器變量610sl/v7堆棧限/寄存器變量711fp幀指針12ip臨時寄存器/新sb內(nèi)部鏈接單元調(diào)用13sp當(dāng)前堆棧幀的低端14lr鏈接地址/臨時寄存器推薦精選15pc程序計數(shù)器推薦精選Load and Store指令LDR R0,R1          &

24、#160;     ;將存儲器地址為R1的字?jǐn)?shù)據(jù)讀入寄存器R0。LDR R0,R1,R2       ;將存儲器地址為R1+R2的字?jǐn)?shù)據(jù)讀入寄存器R0。LDR R0,R1,#8        ;將存儲器地址為R1+8的字?jǐn)?shù)據(jù)讀入寄存器R0。LDR R0,R1,R2 !    ;將存儲器地址為R1+R2的字?jǐn)?shù)據(jù)讀入寄存器R0,并將新地 址R

25、1R2寫入R1。LDR R0,R1,8 !   ;將存儲器地址為R1+8的字?jǐn)?shù)據(jù)讀入寄存器R0,并將新地址 R18寫入R1。LDR R0,R1,R2        ;將存儲器地址為R1的字?jǐn)?shù)據(jù)讀入寄存器R0,并將新地址 R1R2寫入R1。LDR R0,R1,R2,LSL2! ;將存儲器地址為R1R2×4的字?jǐn)?shù)據(jù)讀入寄存器R0,并將新地址R1R2×4寫入R1。LDR R0,R1,R2,LSL2   

26、   ;將存儲器地址為R1的字?jǐn)?shù)據(jù)讀入 寄存器R0,并將新地址R1R2×4寫入R1。LDRB R0,R1        ;將存儲器地址為R1的字節(jié)數(shù)據(jù)讀入寄存器 R0,并將R0的高24 位清零。LDRB R0,R1,8       ;將存儲器地址為R18的字節(jié)數(shù)據(jù)讀入寄存器R0,并將 R0的高24位清零。LDRH   R0,R1 

27、0;           ;將存儲器地址為R1的半字?jǐn)?shù)據(jù)讀入寄存器 R0,并將R0的高16位清零。LDRH R0,R1,8     ;將存儲器地址為R18的半字?jǐn)?shù)據(jù)讀入寄存器R0,并將R0 的高16位清零。LDRH R0,R1,R2     ;將存儲器地址為R1R2的半字?jǐn)?shù)據(jù)讀入寄存器R0,并將 R0的高16位清零。STR R0,R1,8 

28、0;         ;將R0中的字?jǐn)?shù)據(jù)寫入以R1為地址的存儲器中,并 將新地址R18寫入R1。STR R0,R1,8          ;將R0中的字?jǐn)?shù)據(jù)寫入以R18為地址的存儲器中。STRB    R0,R1             ;

29、將寄存器R0中的字節(jié)數(shù)據(jù)寫入以R1為地 址的存儲器中。STRB    R0,R1,8     ;將寄存器R0中的字節(jié)數(shù)據(jù)寫入以R18為地址的存 儲器中。STRH   R0,R1            ;將寄存器R0中的半字?jǐn)?shù)據(jù)寫入以R1為地址的 存儲器中。STRH   R0,R1,8    ;將寄存器R0

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論