版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 1、ARM指令集概述 2、ARM指令的尋址方式 3、ARM指令簡介 4、Thumb指令簡介 RISC簡介 ARM狀態(tài)和Thumb狀態(tài) ARM9指令類型和指令的條件域 RISC是計算機(jī)中央處理器的一種設(shè)計模 式 全稱Reduced Instruction Set Computer,中文稱為精簡指令集計算機(jī) RISC選取使用最為頻繁的簡單指令及部 分復(fù)雜指令,而且指令等長,通常指令 為16位或32位 從v4版本開始,ARM引入了Thumb指令集 Thumb指令為16位,能完成的功能是32 位ARM指令的子集 ARM處理器支持兩種運(yùn)行狀態(tài) ARM狀態(tài) Thumb狀態(tài) ARM指令必須在ARM狀態(tài)下執(zhí)
2、行 Thumb指令也必須處于Thumb狀態(tài)下執(zhí)行 必須使用ARM指令的情況 ARM處理器啟動的第一句指令必須是ARM指 令 訪問程序狀態(tài)寄存器CPSR或協(xié)處理器時必 須是ARM指令 ARM在處理異常中斷時會自動切換到ARM狀 態(tài),執(zhí)行中斷處理程序入口處的程序。返 回時,會再次自動切換到ARM狀態(tài)ARM指令 v4版本中的函數(shù)調(diào)用,如果不需要進(jìn)行 狀態(tài)切換,只需要用到BL指令就可以實(shí) 現(xiàn)了 如果需要進(jìn)行狀態(tài)切換,情況較復(fù)雜, 如圖3-1所示 不同狀態(tài)間的函數(shù)調(diào)用 ARM v5版本后,引入了一條新的指令 BLX,結(jié)合了BL和BX指令各自的功能特 點(diǎn),使得上圖的所示過程通過一條指令 就能實(shí)現(xiàn) ARM指
3、令集屬于加載/存儲型指令 指令的操作數(shù)都儲存在寄存器中,處理結(jié) 果直接放回到目的寄存器中 ARM9指令集可以分為6類 跳轉(zhuǎn)指令 數(shù)據(jù)處理指令 存儲器訪問指令 協(xié)處理器指令 雜項(xiàng)指令 飽和算術(shù)指令 跳轉(zhuǎn)指令 數(shù)據(jù)處理指令 存儲器訪問指令 協(xié)處理器指令 雜項(xiàng)指令 飽和算術(shù)指令 ARM指令一般由操作碼、目的寄存器、 操作數(shù)幾部分組成,并可以配合條件碼, S后綴等可選項(xiàng)目,以完成更復(fù)雜操作, 它的格式一般為: 指令中內(nèi)的項(xiàng)目是必需的,比如opcode, Rd, Rn等,內(nèi)的項(xiàng)目是可選的 S , , opcode操作碼,即指令助記符,如BL,ADD cond條件碼,描述指令執(zhí)行的條件,在下文會有詳細(xì)介紹
4、 S可選后綴,若在指令后加上“S”,在指令完畢后會自動更新CPSR中條件碼標(biāo)志位的值 RdARM指令中的目標(biāo)操作數(shù)總是一個寄存器,通常用Rd表示 Rn存放第1操作數(shù)的寄存器 opcode2第2操作數(shù),它的使用非常靈活,不僅可以是寄存器,還能使用立即數(shù),而且能夠使用經(jīng)過位移運(yùn)算 的寄存器和立即數(shù),這在下文也會介紹。 表3-1 ARM指令格式 ARM指令集幾乎每條指令(除了某些v5T 指令)都可以是條件執(zhí)行的。指令的最 高4位31:28稱為條件碼: AMR指令條件碼助記符描述CPSR條件碼標(biāo)志位的值 0000EQ相等,運(yùn)行結(jié)果為 0 Z置位 0001NE不相等,運(yùn)行結(jié)果 不為0 Z清零 0010C
5、S/HS無符號數(shù)大于等于C置位 0011CC/LO無符號數(shù)小于C清零 0100MI負(fù)數(shù)N置位 0101PL非負(fù)數(shù)N清零 0110VS上溢出V置位 0111VC沒有上溢出V清零 1000HI無符號數(shù)大于C置位且Z清零 1001LS無符號數(shù)小于等于C清零且Z置位 1010GE帶符號數(shù)大于等于N=V 1011LT帶符號數(shù)小于N!=V 1100GT帶符號數(shù)大于Z清零且N=V 1101LE帶符號數(shù)小于等于Z置位且N!=V 1110AL無條件執(zhí)行 1111系統(tǒng)保留 形式非常靈活,共有11種 形式: 語法含義 #立即數(shù)尋址 寄存器尋址 , LSL #立即數(shù)邏輯左移 , LSL 寄存器邏輯左移 , LSR #
6、立即數(shù)邏輯右移 , LSR 寄存器邏輯右移 , ASR #立即數(shù)算術(shù)右移 , ASR 寄存器算術(shù)右移 , ROR #立即數(shù)循環(huán)右移 , ROR 寄存器循環(huán)右移 , RRX寄存器擴(kuò)展循環(huán)右移 ARM指令集有5種形式的位移操作 LSL邏輯左移 LSR邏輯右移 ASR算術(shù)右移 ROR循環(huán)右移 RRX帶擴(kuò)展的循環(huán)右移 邏輯左移(Logical Shift Left):操作時在移位操作 時,用0補(bǔ)足低位;而邏輯右移(Logical Shift Right) 移動的方向相反,并用0補(bǔ)足高位。 算術(shù)右移(Arithmetic Shift Right):在移位操作時, 根據(jù)符號位來補(bǔ)足高位,若原數(shù)符號位是1,
7、即當(dāng)原數(shù)為 負(fù)數(shù)時,移位空出的高位都用1補(bǔ)足,反之則用0補(bǔ)足。 循環(huán)右移(ROtate Right):可以將數(shù)字看做首位相接 的“環(huán)形”,當(dāng)最低位被移出后,它會繞到數(shù)組的最高 位去,繼續(xù)參與移位操作。 帶擴(kuò)展的循環(huán)右移(Rotate Right one bit with eXtended):較前面的幾種移位方法復(fù)雜一些,它需要 用到CPSR中的C位。當(dāng)最低位被向右移出后,最高位有C 位的值補(bǔ)足,然后被移出的最低位被放到C位中。 立即數(shù)#并不是任意數(shù)都是合 法的,在立即數(shù)尋址中,分配給立即數(shù)的 空間是12位,8位用于保存一個常數(shù),4位 用于保存循環(huán)右移基數(shù),而循環(huán)右移每次 需要移動偶數(shù)位,即右移
8、的位數(shù)是基數(shù)*2。 假設(shè)常數(shù)為A,循環(huán)右移位數(shù)為N,則最后 得到的立即數(shù)=A循環(huán)右移(N*2位)。 0 x3FC立即數(shù)合法,A=0b11111111,N=0d15 0 x1FE不合法 立即尋址 寄存器尋址 寄存器偏移尋址 寄存器間接尋址 基址變址尋址 多寄存器尋址 堆棧尋址 相對尋址 立即尋址 立即尋址也可被稱為立即數(shù)尋址,讀取指 令后可以立即得到操作數(shù),而不需要去物 理內(nèi)存得到相應(yīng)內(nèi)容。這個給出的操作數(shù) 叫立即數(shù),它一般以“#”為前綴, “#0 x”、“#0d”,“#0b”開頭的計數(shù)用 來表示十六進(jìn)制,十進(jìn)制和二進(jìn)制。 ADD R1, R1, #0 x1 ; R1- R1+ 1 寄存器尋址
9、寄存器尋址也是一種不需要訪問存儲器內(nèi) 容的尋址方式,指令中直接指明操作數(shù)所 在的寄存器,執(zhí)行時處理器直接訪問寄存 器獲取操作數(shù) ADD R1, R1, R2 ; R1- R1+ R2 MOV R1, R0; R1- R0 寄存器偏移尋址 寄存器偏移尋址是ARM指令特有的一種尋址 方式,第2操作數(shù)可以在與第1操作數(shù)結(jié)合 之前,進(jìn)行各種形式的移位操作 ADD R1, R1, R2 , ROR #0 x2; R2循環(huán)右移兩位后與R1相加, 結(jié)果放入R1 MOV R1, R0, LSL R2; R0邏輯左移R2位后放入R1中 寄存器間接尋址 寄存器間接尋址的指令中雖然也是指定寄 存器,但并不是直接拿寄
10、存器中的值來進(jìn) 行運(yùn)算操作,此時寄存器中儲存的是地址, 處理器需要根據(jù)這個地址從存儲器中獲取 操作數(shù)。所以寄存器間接尋址是需要進(jìn)行 存儲器訪問的,所以執(zhí)行效率比寄存器尋 址要慢。 STR R1, R2; 將R1的值存入以R2內(nèi)容為地址的存 儲器中 SWP R1, R1, R2; 交換以R2為地址的存儲器內(nèi)容 和R1內(nèi)容 基址變址尋址 基址變址尋址與寄存器間接尋址相似,但 此時從寄存器取出的內(nèi)容需要加上指令所 給定的偏移量,這樣才構(gòu)成操作數(shù)的有效 地址。變址尋址方式通常用于訪問基地址 附近的地址單元,常用于查表,數(shù)組操作, 功能部件寄存器訪問等 op Rd, Rn, R1 op Rd, Rn,
11、FlexOffset op Rd, Rn, FlexOffset! op Rd, Rn, FlexOffset 多寄存器尋址 多寄存器尋址方式可以在同一條指令中完 成多個寄存器數(shù)據(jù)的傳送,最多可以傳送 16個通用寄存器 LDMIA R0, R1, R2, R3, R4, R5 ; R1- R0, R2- R0+4, , R5-R0+16 STMIA R0, R2-R5, R7; R0-R2, R0+4-R3, , R0+12- R5, R0+16-R7 堆棧尋址 堆棧是一個后進(jìn)先出的數(shù)據(jù)結(jié)構(gòu),堆棧尋 址方式會有一個指針,始終指向存儲單元 的棧頂,這個指針需要用一個專門的寄存 器來存放,這個寄存
12、器一般是R13。 有四種棧堆形式: 堆棧指針總是指向最后壓入堆棧的數(shù)據(jù), 稱為滿堆棧(Full Stack) 堆棧指針指向下一個空位置時,稱為空堆 棧(Empty Stack) 從低地址向高地址生長的堆棧叫遞增堆棧 (Ascending Stack) 從高地址向低地址生長的堆棧叫遞減堆棧 (Descending Stack) STMFD SP!, R1-R7, LR ; 將R1-R7,LR存放到堆棧中,這 條指令一般用來保護(hù)現(xiàn)場 相對尋址 相對尋址可以看作是寄存器變址尋址方式 的一個特例,因?yàn)榇藭r包含基地址的寄存 器特指程序計數(shù)器PC,通過PC值與指令中 的偏移量結(jié)合,生成有效的操作數(shù)地址。
13、一般這種尋址方式用于指令跳轉(zhuǎn) BL Label; 轉(zhuǎn)跳到Label標(biāo)簽處 . Label: ARM轉(zhuǎn)跳指令主要用于: 向后跳轉(zhuǎn)實(shí)現(xiàn)循環(huán); 通過條件判斷實(shí)現(xiàn)現(xiàn)在跳轉(zhuǎn); 子程序調(diào)用;切換處理器工作狀態(tài)。 ARM實(shí)現(xiàn)程序跳轉(zhuǎn)有兩種方法 將當(dāng)前的程序寄存器PC值改寫為跳轉(zhuǎn)的目 的地址,此時可以實(shí)現(xiàn)4G地址范圍內(nèi)的長 跳轉(zhuǎn)。 使用專門的跳轉(zhuǎn)指令實(shí)現(xiàn),包括B、BL、BX 和BLX指令等 MOV PC, #immediate; PC- immediate LDR PC, PC, #offset; PC- PC+offset Bcond, Label ARM的通用數(shù)據(jù)處理指令大致可以分為4 類 數(shù)據(jù)傳送指令
14、算術(shù)邏輯運(yùn)算指令 比較指令 前導(dǎo)零計數(shù)指令 數(shù)據(jù)傳送數(shù)據(jù)傳送指令指令 MOV(MOVE)MOV(MOVE)和和MVN(MOVE NOTMVN(MOVE NOT) ) 格式格式為為 MOV指令將Operand2的值復(fù)制到Rd寄存器中, 而MVN指令會先將Operand2按位取反后再復(fù) 制到Rd寄存器中。 舉例舉例 MOVcondS Rd, Operand2 MVNcondS Rd, Operand2 MOVS R0, R0, ASR R2 MVNNE R1 #0 x22 算術(shù)邏輯運(yùn)算指令 ADD和ADC,SUB和SBC,RSB和RSC 這三組指令分別是加法指令,減法指令, 逆向減法指令及其各自的
15、帶進(jìn)位操作指令 格式格式為為 舉例舉例 opcondS Rd, Rn, Operand2 ADDS R6, R0, R3 ADCS R7, R1, R4 ADC R8, R2, R5 算術(shù)邏輯運(yùn)算指令 ANDAND,ORRORR,EOREOR,BICBIC 這四條指令分別是邏輯與指令,邏輯或指 令,邏輯異或指令和位清除指令 格式格式為為 舉例舉例 opcondS Rd, Rn, Operand2 EOR R0, R1, #0 xFF00 ORR R1, R2, R4, LSR #2 BICNES R5, R6, R1, RRX 比較指令 TSTTST和和TEQTEQ 位測試指令和相等測試指令
16、格式格式為為 舉例舉例 TSTcond Rn, Operand2 TEQcond Rn, Operand2 TST R1, #0 x0F TEQNE R9, #0 x4000 比較指令 CMP和CMN 比較指令和反值比較指令 格式格式為為 舉例舉例 CMPcond Rn, Operand2 CMNcond Rn, Operand2 CMPLT R4, R2 CMN R13, R5, LSL #4 前導(dǎo)零計數(shù)指令 CLZCLZ 前導(dǎo)零計數(shù)指令,它是從v5版本開始引入 的 格式格式為為 該指令從Rm寄存器值的高位開始計數(shù)(32位的數(shù) 據(jù)即從31開始),直到遇到第一個非零位為止, 統(tǒng)計總共前導(dǎo)零的個
17、數(shù),并將統(tǒng)計值存入Rd中。 CLZcond Rd, Rm MUL和MLA MUL和MLA指令是32的乘法指令和乘加指令 格式格式為為 舉例舉例 MULcondS Rd, Rm, Rs MLAcondS Rd, Rm, Rs, Rn MULLT R7, R7, R8 MLA R3, R2, R4, R6 UMULL,UMLAL,SMULL和SMLAL 上述指令的U表示無符號,S表示帶符號,L 表示結(jié)果為長整型。所以上述指令分別叫 做無符號長整型乘法指令,無符號長整型 乘加指令,帶符號長整型乘法指令和帶符 號長整型乘加指令 格式格式為為 舉例舉例 OpcondS RdLo, RdHi, Rm, R
18、s UMULLS R1, R2, R3, R4 UMLALNE R1, R2, R3, R1 SMULL R5, R4, R3, R2 SMULLLES R5, R3,R2, R1 SMULxy和SMLAxy SMULxy指令和SMLAxy指令是16位的帶符號 乘法指令 格式格式為為 舉例舉例 SMULcond Rd, Rm, Rs SMLAcond Rd, Rm, Rs, Rn SMULTT R1, R2, R3 SMLABTEQ R2, R3, R4, R4 SMULWySMULWy和和SMLAWySMLAWy 分別是32*16位的帶符號乘法指令和乘加指 令 格式格式為為 舉例舉例 SMU
19、LWcond Rd, Rm, Rs SMLAWcond Rd, Rm, Rs, Rn SMULWTVS R1, R2, R1 SMLAWT R2, R2, R4, R4 LDR和STR LDR和STR指令是單一數(shù)據(jù)加載和存儲指令, LDR指令從內(nèi)存讀取數(shù)據(jù)裝入寄存器中, STR指令將寄存器中的數(shù)據(jù)存入內(nèi)存。 格式格式為為 舉例舉例 opcondBT Rd, Rn opcondB Rd, Rn, FlexOffset! opcondB Rd, label opcondBT Rd, Rn, FlexOffset LDR R0, R1 STRT R2, R0, R3, LSL #0 x2! LDRB
20、 R4, R8, #0 x4 LDM和STM 批量加載指令LDM將一片連續(xù)內(nèi)存單元的數(shù) 據(jù)加載到一組通用寄存器中,而批量存儲 指令STM將一組通用寄存器中的值存儲到一 片連續(xù)內(nèi)存單元之中 格式格式為為 舉例舉例 opcondmode Rn!, reglist LDMFA R5, R1, R3, R5, R7 STMFD R13!, R0-R4, LR;將R0-R4及LR壓入 棧堆 LDMFD R13!, R0-R4, PC;恢復(fù)R0-R4及PC, 一般用于程序返回 SWP(Swap) 交換指令SWP用于寄存器和存儲器之間內(nèi)容 的交換,它將指定內(nèi)存單元的數(shù)據(jù)存入目 標(biāo)寄存器,然后將源寄存器的內(nèi)容
21、儲存到 該內(nèi)存單元中 格式格式為為 舉例舉例 SWPcondB Rd, Rm, Rn SWPB R2, R3, R4; SWP R1, R1, R5; 將R1與R5指定的內(nèi)存進(jìn)行內(nèi) 容交換 PLD 預(yù)讀取PLD指令是ARMv5E版本引入的,它指 示存儲器系統(tǒng)在接下去的幾條指令中很可 能會有Load指令,存儲系統(tǒng)以此做好相應(yīng) 的準(zhǔn)備,從而加速內(nèi)存訪問過程 格式格式為為 舉例舉例 PLD Rn, FlexOffset PLD R2, #Label*5; Label*5在匯編時計算,范 圍應(yīng)該在-4095到+4095 PLD R3, R2, LSR #0 x2 CDP和CDP2 CDP是協(xié)處理器數(shù)據(jù)
22、處理指令(Coprocessor Data oPeration),用來執(zhí)行特定的數(shù)據(jù)操 作;CDP2是從ARMv5版本引進(jìn)的 格式格式為為 舉例舉例 CDPcond coproc, opcode1, CRd, CRn, CRm, opcode2 CDP2 coproc, opcode1, CRd, CRn, CRm, opcode2 CDP P3, 2, C12, C10, C3, 4; 完成協(xié)處理器P3的 初始化 CDP2 P6, 1, C3, C4, C5 LDC和LDC2,STC和STC2 LDC指令將存儲器內(nèi)容復(fù)制到協(xié)處理器寄存 器中,而STC指令則是將協(xié)處理器寄存器數(shù) 據(jù)拷貝到存儲器
23、中。 格式格式為為 舉例舉例 opcondL coproc, CRd, Rn opcondL coproc, CRd, Rn, #-offset! opcondL coproc, CRd, Rn, #-offset LDC P5, C2, R4, #0 x8! STC P6, C2, R3,#-0 x7 MCR, MCR2MCR, MCR2和和MCRRMCRR MCR指令將ARM寄存器中的數(shù)據(jù)傳輸?shù)絽f(xié)處 理器寄存器中。MCR指令將ARM寄存器中的 數(shù)據(jù)傳輸?shù)絽f(xié)處理器寄存器中 格式格式為為 舉例舉例 MCRcond coproc, opcode1, Rd, CRn, CRm, opcode2 M
24、CR2 coproc, opcode1, Rd, CRn, CRm, opcode2 MCRRcond coproc, opcode1, Rd, Rn, CRm MCR P7, 3, R1, C3, C2, 1; 將ARM寄存器R1的數(shù) 據(jù)存入?yún)f(xié)處理器P7的寄存器C2,C3中 MRC,MRC2和MRRC MRC指令的數(shù)據(jù)傳輸方向與MCR指令相反, 它將協(xié)處理器寄存器中的數(shù)據(jù)傳送到ARM處 理器寄存器中。MRC2指令是從ARMv5版本引 入的,而MRRC指令從ARMv5E版本引入 格式為格式為 舉例舉例 MRCcond coproc, opcode1, Rd, CRn, CRm, opcode2
25、 MRC2 coproc, opcode1, Rd, CRn, CRm, opcode2 MRRCcond coproc, opcode1, Rd, Rn, CRm MRC P4, 3, R1, C5, C6, 1; 將協(xié)處理器P4的寄存 器數(shù)據(jù)傳送到ARM處理器寄存器中 SWI 軟件中斷指令SWI用來實(shí)現(xiàn)在用戶模式下的 程序調(diào)用管理模式下的代碼,這條指令造 成處理器模式的切換,CPSR會被存入管理 模式下的SPSR,隨后指令會跳轉(zhuǎn)到中斷向 量。 格式格式為為 舉例舉例 SWIcond immed_24 SWI 0 x22222 MRS和MSR 狀態(tài)寄存器讀取指令MRS(Move to ARM
26、 Register from Status register)和寫狀 態(tài)寄存器指令MSR(Move to a Status register from ARM Register),用于在 程序狀態(tài)寄存器和ARM通用寄存器之間傳輸 數(shù)據(jù) 格式格式為為 舉例舉例 MRScond Rd, psr MSRcond _, #immed_8r MSRcond _, Rm MSR R5, SPSR MSR CPSR_f, R7;更新狀態(tài)寄存器的標(biāo)志位 BKPT ARMv5版本引入的斷點(diǎn)指令,使用斷點(diǎn)指令 使ARM處理器進(jìn)入Debug模式 格式格式為為 舉例舉例 BKPT immed_16 BKPT 0 xF
27、F32 BKPT 640 QADD,QSUB,QDADD和QDSUB 飽和算術(shù)指令(saturating arithmetic instructions)在 發(fā)生溢出時,Q位會被置位,若結(jié)果小于231,返回的結(jié)果 為231,若結(jié)果大于231 -1,則返回的結(jié)果為231 -1。因此 如果在計算結(jié)束后目標(biāo)寄存器保存了飽和數(shù)(231或231 -1) 且Q置位,則說明程序發(fā)生了溢出。 格式格式為為 舉例舉例 opcond Rd, Rm, Rn QADD R3, R3, R2 QDSUB R4, R3, R8 ADR 小范圍的地址讀取偽指令,主要用來讀取 基于PC相對偏移的地址或基于寄存器相對 偏移的地
28、址。 格式格式為為 舉例舉例 ADRcond register, expr SUB R2, PC, 0 xC; 相對PC偏移12個字節(jié) ADRLADRL 中等范圍地址取指偽指令,它的取值范圍 比ADR要大,通常會用兩條指令來替代 格式格式為為 舉例舉例 ADRcondL register, expr start MOV R4, #0 x22 ADR R2, start + 60000 LDR 這里講的是LDR偽指令,不是內(nèi)存訪問指令 LDR。LDR偽指令是大范圍地址讀取偽指令, 用于加載32位的立即數(shù)或是一個地址值 格式格式為為 舉例舉例 LDRcond register, =expr | l
29、abel-expr LDR R1, =0 xFF0 LDR R2, =0 xFFF LDR R3, =place Thumb指令將32位ARM指令的一個子集進(jìn)行 編碼,成為一個16位的指令集。相對于 ARM指令集,Thumb指令擁有更高的代碼密 度,這對于嵌入式設(shè)備來說至關(guān)重要。 Thumb指令繼承了ARM指令許多特點(diǎn),它也 是采用Load/Store結(jié)構(gòu),有數(shù)據(jù)處理、數(shù) 據(jù)傳送機(jī)流控制指令等。除了B指令外, Thumb指令都是無條件執(zhí)行的,許多Thumb 指令數(shù)據(jù)處理指令都是采用2地址格式, 即目的寄存器和源寄存器相同,而大多數(shù) ARM數(shù)據(jù)處理指令采用3地址格式 B B指令是Thumb指令中
30、唯一可以條件執(zhí)行的 指令。 格式格式為為 舉例舉例 Bcond label BEQ label B loop BL 帶鏈接的長跳轉(zhuǎn) 格式格式為為 舉例舉例 BL label BL section1 BX BX指令在跳轉(zhuǎn)的同時,會選擇性的切換指 令集 格式 舉例 BX Rm BX R3 BLX BLX是帶鏈接的跳轉(zhuǎn),并選擇性的切換指令 集。指令格式如下: 格式 舉例 BLX Rm BLX label BLX R4 BLX armsub AND,ORR,EOR和BIC 這四條指令是按位邏輯運(yùn)算指令,分別是 按位與,按位或,按位異或和按位清零操 作 格式 舉例 op Rd, Rm ORR R2, R
31、3 ASR,LSL, LSR和ROR 這四條指令是移位指令,分這四條指令是 按位邏輯運(yùn)算指令,分別是按位與,按位 或,按位異或和按位清零操作 格式 舉例 op Rd, Rs op Rd, Rm, #expr ASR R3, R5 LSR R0, R3, #5 LSL R1, R4, #0 CMP和CMN 比較指令和反值比較指令 格式 舉例 CMP Rn, #expr CMP Rn, Rm CMN Rn, Rm CMP R7, #255 CMP R7, R12 CMN R2, R3 MOV,MVN和NEG 格式: 舉例 MOV Rd, #expr MOV Rd, Rm MVN Rd, Rm NE
32、G Rd, Rm MOV R3, #0 MOV R0, R12;此時不更新標(biāo)志位 MVN R7, R1 NEG R3, R3 TST 位測試指令 格式 舉例 TST Rn, Rm TST R3, R4 低寄存器低寄存器 的的ADD和和SUB 低寄存器是指指令中使用的寄存器范圍是 R0-R7 格式 舉例 op Rd, Rn, Rm op Rd, Rn, #expr3 op Rd, #expr8 ADD R2, R3, R4 SUB R1, R2, #33 ADD R5, #244 高寄存器或低寄存器的ADD 格式 舉例 op Rd, Rm ADD R11, R3 ADD R2,R3;此時和ADD R2, R2, R3等價 ADD R3, R12 sp的ADD和SUB 這兩條指令將堆棧指針sp作為操作數(shù),用 來增加或減少sp 格式 舉例 ADD sp, #expr SUB sp, #expr ADD sp #256 SUB sp #vc+8 pc或sp相關(guān)的ADD 這條指令將sp或pc的值加上或減去一個常 量,并將結(jié)果存入低寄存器中 格式 舉例 ADD Rd, Rp, #expr ADD R5, sp, #64
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 19088-2024地理標(biāo)志產(chǎn)品質(zhì)量要求金華火腿
- 廣東科學(xué)技術(shù)職業(yè)學(xué)院《地鐵保護(hù)與安全評價》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東酒店管理職業(yè)技術(shù)學(xué)院《機(jī)器人學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東交通職業(yè)技術(shù)學(xué)院《生物啟發(fā)性材料》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東工商職業(yè)技術(shù)大學(xué)《項(xiàng)目視覺出品與設(shè)計營銷》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東第二師范學(xué)院《中學(xué)化學(xué)實(shí)驗(yàn)教學(xué)研究和技能訓(xùn)練》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東潮州衛(wèi)生健康職業(yè)學(xué)院《稀土在金屬材料中的應(yīng)用》2023-2024學(xué)年第一學(xué)期期末試卷
- 《信貸風(fēng)險評估手冊》課件
- 廣東白云學(xué)院《法語聽力Ⅱ》2023-2024學(xué)年第一學(xué)期期末試卷
- 共青科技職業(yè)學(xué)院《水力學(xué)與橋涵水文》2023-2024學(xué)年第一學(xué)期期末試卷
- 電能質(zhì)量-公用電網(wǎng)諧波
- 部編人教版道德與法治八年級上冊:(1-4)單元全套練習(xí)題4套(含解析)
- 電火灶-編制說明
- 幼兒園幼小銜接方案模板
- 批評與自我批評表
- 2024年商用密碼應(yīng)用安全性評估從業(yè)人員考核試題庫-中(多選題)
- Be going to 句型(教學(xué)設(shè)計)-2023-2024學(xué)年人教PEP版英語五年級下冊
- 2023年10月下半年空軍直接選拔招錄軍官筆試歷年典型考題及考點(diǎn)剖析附答案詳解
- 土方清理合同范本
- 防洪排澇項(xiàng)目社會穩(wěn)定風(fēng)險分析
- 2024年安徽省高中語文學(xué)業(yè)水平合格考模擬試卷試題(含答案詳解)
評論
0/150
提交評論