




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、微處理器系統(tǒng)結(jié)構(gòu)與ARM匯編指令系統(tǒng)設(shè)計(jì)第八章8.1üARM指令格式(掌握)ARM指令的一般編碼格式ARM指令的條件域指令的第二源操作數(shù)ARM尋址方式(掌握)寄存器直接尋址立即尋址寄存器移位尋址寄存器間接尋址基址變址尋址多寄存器直接尋址相對(duì)尋址堆棧尋址üü8.2üüüüüüüü2微處理器系統(tǒng)結(jié)構(gòu)與ARM匯編指令系統(tǒng)設(shè)計(jì)第八章8.3üüüüüARM指令集(掌握)數(shù)據(jù)處理指令轉(zhuǎn)移指令指令加載/程序狀態(tài)寄存器異常產(chǎn)生指令偽指令指令3微處理器系
2、統(tǒng)結(jié)構(gòu)與ARM指令格式系統(tǒng)設(shè)計(jì)8.1n ARM指令長(zhǎng)度u 指令集可以是以下任一種Ø 32 bits 長(zhǎng) (ARM狀態(tài))Ø 16 bits 長(zhǎng) (Thumb 狀態(tài))u ARM一般支持3種數(shù)據(jù)類型Ø 字節(jié) (8-bit)Ø 半字 (16-bit)Ø 字 (32-bit)u 字必須被排成4個(gè)字節(jié)邊界對(duì)齊,半字必須被排列成2個(gè)字節(jié)邊界對(duì)齊n Load-store結(jié)構(gòu)*u load/store 從器中讀某個(gè)值,操作完后再將其放回器中u 只對(duì)存放在寄存器的數(shù)據(jù)進(jìn)行處理u 對(duì)于器中的數(shù)據(jù),只能使用load/store指令進(jìn)行存取4微處理器系統(tǒng)結(jié)構(gòu)與ARM指令
3、基本指令格式ARM是三地址指令格式,指令的基本格式如下:系統(tǒng)設(shè)計(jì)其中<>號(hào)內(nèi)的各項(xiàng)的說明如下:必須的,號(hào)內(nèi)的可選的。例5:指令語法目標(biāo)寄存器(Rd)源寄存器1(Rn)源寄存器2(Rm)ADD r3,r1,r2r3r1r2opcode:指令助記符;cond:執(zhí)行條件; S:是否影響CPSR寄存器的值;Rd:目標(biāo)寄存器;Rn:第1個(gè)操作數(shù)的寄存器;operand2:第2個(gè)操作數(shù);<opcode> <cond> S<Rd> ,<Rn>,<operand2>微處理器系統(tǒng)結(jié)構(gòu)與系統(tǒng)設(shè)計(jì)指令集介紹n ARM指令集指令格式6微處理器系統(tǒng)
4、結(jié)構(gòu)與系統(tǒng)設(shè)計(jì)指令條件碼表 所有的ARM指令都可以條件執(zhí)行,而Thumb 指令只有B(跳轉(zhuǎn))指令具有條件執(zhí)行功能 如果指令不標(biāo)明條件代碼,將默認(rèn)為無條件(AL)執(zhí)行7操作碼條件助記符標(biāo)志含義0000EQZ=1相等0001NEZ=0不相等0010CS/HSC=1無符號(hào)數(shù)大于或等于0011CC/LOC=0無符號(hào)數(shù)小于0100MIN=1負(fù)數(shù)0101PLN=0正數(shù)或零0110VSV=1溢出0111VCV=0沒有溢出1000HIC=1,Z=0無符號(hào)數(shù)大于1001LSC=0,Z=1無符號(hào)數(shù)小于或等于1010GEN=V有符號(hào)數(shù)大于或等于1011LTN!=V有符號(hào)數(shù)小于1100GTZ=0,N=V有符號(hào)數(shù)大于1
5、101LEZ=1,N!=V有符號(hào)數(shù)小于或等于1110AL任何無條件執(zhí)行 (指令默認(rèn)條件)1111NV任何從不執(zhí)行(不要使用)微處理器系統(tǒng)結(jié)構(gòu)與系統(tǒng)設(shè)計(jì)指令條件碼示例:8對(duì)應(yīng)的匯編代碼:CMP R0,R1 ;R0(a)與R1(b)比較ADDHI R0,R0,#1 ;若R0>R1,則R0=R0+1 ADDLS R1,R1,#1 ;若R0R1,則R1=R1+1C代碼:If(a > b)a+;Elseb+;微處理器系統(tǒng)結(jié)構(gòu)與ARM指令的第2個(gè)操作數(shù)ARM指令的基本格式如下:系統(tǒng)設(shè)計(jì)靈活的使用第2個(gè)操作數(shù)“operand2”能夠提高代碼效率。它有如下的形式:§ #immed_8r常
6、數(shù)表§ Rm寄存器方式;§ Rm,shift寄存器移位方式;該常數(shù)是一個(gè)8位的常數(shù)通過循環(huán)右移偶數(shù)位得到;8位常數(shù)循環(huán)右移10位9000001001000000000000000000000000x040x800x000x00000000000000000000000000000100100x000x000x000x12<opcode> <cond> S<Rd> ,<Rn>,<operand2>微處理器系統(tǒng)結(jié)構(gòu)與ARM指令的第2個(gè)操作數(shù)§ Rm,shift寄存器移位方式系統(tǒng)設(shè)計(jì)將寄存器的移位結(jié)果作為操作數(shù)
7、(移位操作不消耗額外的時(shí)間),但Rm值保持不變RmRn未預(yù)處理預(yù)處理桶形移位器結(jié)果NALURd10微處理器系統(tǒng)結(jié)構(gòu)與ARM指令的第2個(gè)操作數(shù)系統(tǒng)設(shè)計(jì)n桶形移位器操作11助記符說明移位操作結(jié)果Y值LSL邏輯左移x LSL yx<<y#1-31 or RsLSR邏輯右移x LSR y(unsigned)x>>y#1-32 or RsASR算術(shù)右移x ASR y(signed)x>>Y#1-32 or RsROR循環(huán)右移x ROR y(unsigned)x>>y|(x<<32-y)#1-31 or RsRRX擴(kuò)展的循環(huán)右移x RRX y(c
8、 flag<<31)|(unsigned)x>>1)none微處理器系統(tǒng)結(jié)構(gòu)與ARM指令的第2個(gè)操作數(shù)系統(tǒng)設(shè)計(jì)LSL移位操作:LSR移位操作:ASR移位操作:ROR移位操作:RRX移位操作:例如:ADDSUBR1,R1,R1,LSL #3R1,R1,R2,LSR R3;R1=R1+R1<<3;R1=R1-R2>>R312C00微處理器系統(tǒng)結(jié)構(gòu)與系統(tǒng)設(shè)計(jì)8.2ARM處理器尋址方式尋址方式是根據(jù)指令中給出的地址碼字段來實(shí)現(xiàn)尋找真實(shí)操作數(shù)地址的方式。ARM處理器具有幾種基本尋址方式:1. 寄存器尋址2. 立即尋址3. 寄存器間接尋址移位尋址、間接尋址、
9、基址變址尋址、多寄存器尋址(塊尋址)4. 堆棧尋址5.相對(duì)尋址13微處理器系統(tǒng)結(jié)構(gòu)與系統(tǒng)設(shè)計(jì)寄存器尋址1. 操作數(shù)存放在寄存器中;2. 指令地址碼字段給出寄存器編號(hào)(名)3. 指令執(zhí)行時(shí)直接取出寄存器值來操作;MOVR1,R2; R1 <= R2SUBR0,R1,R2; R0 <= R1-R214R20xAAR10xAA微處理器系統(tǒng)結(jié)構(gòu)與系統(tǒng)設(shè)計(jì)立即尋址1. 操作數(shù)包含在指令當(dāng)中;2. 指令地址碼部分就是數(shù)據(jù)本身;3. 取指時(shí)就取出了可立即使用的操作數(shù);寄存器尋址MOVR0,#0xFF00;R0 <= #0xFF00從代碼中獲得數(shù)據(jù)SUBSR0,R0,#1; R0 <=
10、R0-110進(jìn)制數(shù):#21,#0d572進(jìn)制數(shù):#0b0110016進(jìn)制數(shù):#0x3a001影響標(biāo)志位15R00xFF00MOV R0,#0xFF00微處理器系統(tǒng)結(jié)構(gòu)與系統(tǒng)設(shè)計(jì)寄存器移位尋址1. 操作數(shù)存放在寄存器中;2.指令地址碼字段給出寄存器編號(hào)(名)及移位表;3.指令執(zhí)行時(shí)取出寄存器值并移位,再將結(jié)果作為源操作數(shù);寄存器尋址MOVR0, R2, LSL #3邏輯左移3位; R0<=R2×8ANDSR1, R1, R2, LSL R3; R1 <= R1 and (R2<<R3)影響標(biāo)志位160x08R20x01R00x08微處理器系統(tǒng)結(jié)構(gòu)與寄存器間接尋址
11、1. 操作數(shù)存放在內(nèi)存單元中;系統(tǒng)設(shè)計(jì)2. 指令地址碼字段給出寄存器編號(hào)(名);3. 指令執(zhí)行時(shí)根據(jù)寄存器值(指針)找到相應(yīng)的單元;LDRR1,R2; R1<= R2; R1ó R2SWPR1,R1,R217R20x40000000R00xAA0x400000000xAA基址變址尋址微處理器系統(tǒng)結(jié)構(gòu)與1. 操作數(shù)存放在內(nèi)存單元中;2. 指令地址碼字段給出寄存器編號(hào)(名)和偏移量;3. 指令執(zhí)行時(shí)將基址寄存器的內(nèi)容與偏移量(<4K)相加/減,形成操作數(shù)的有效地址。系統(tǒng)設(shè)計(jì)4. 常用于查表、數(shù)組操作、功能部件寄存器等。LDRR2,R3,#0x0C;R2<=R3+0x0C
12、前索引; 先R0-4<=R1, R0<=R0-4后索引;R0<=R1,R1<R14;R0<=R1+R2STRLDR18LDRR1,R0,#-4!R0,R1 ,#4R0,R1,R2R30x40000000R20xAA0x4000000C0xAA微處理器系統(tǒng)結(jié)構(gòu)與系統(tǒng)設(shè)計(jì)多寄存器尋址/塊1. 操作數(shù)存放在內(nèi)存單元中;尋址2. 指令地址碼字段給出寄存器編號(hào)(名)列表;3. 編號(hào)高的寄存器總是對(duì)應(yīng)內(nèi)存中的高地址單元;4. 可完成塊和16個(gè)寄存器或其子集之間的數(shù)據(jù)傳送。LDMIAR1!,R2-R4,R6; R2<= R1 , R3<= R1+4Increase
13、After ; R4<= R1+8 , R6<= R1+0xC, R1<=R1+0x10!在塊操作指令中表示地址指針要回寫STMDBR1,R2-R4,R6; R1-4<= R6 , R1-8<=R419Decrease Before; R1-0xC <=R3, R1-0x10<=R20x040x4000000C0x030x400000080x020x400000040x010x40000000R60x04R40x03R30x02R20x01R10x40000010微處理器系統(tǒng)結(jié)構(gòu)與系統(tǒng)設(shè)計(jì)堆棧尋址1. 操作數(shù)存放在內(nèi)存棧頂單元中;2.指令地址碼字段固定
14、使用棧頂指針SP;3.指令執(zhí)行棧和出棧;寄存器/塊尋址,可完成多個(gè)數(shù)據(jù)的入多寄存器/塊尋址LDMEASP!,R2-R4,R6; R2<= SP-10 , R3<= SP-CEmpty Ascending; R4<= SP-8 , R6<= SP-4,SP<=SP-0x10堆棧單元STMFDSP!,R2-R4,R6; SP-4<= R6 , SP-8<=R420Full Desending ; SP-C <=R3, SP-0x10<=R2, SP<=SP-0x100x040x4000000C0x030x400000080x020x400
15、000040x010x40000000R60x04R40x03R30x02R20x01SP0x40000000微處理器系統(tǒng)結(jié)構(gòu)與系統(tǒng)設(shè)計(jì)ARM支持的四種堆棧類型滿遞增(FA):堆棧向上增長(zhǎng),堆棧指針指向內(nèi)含有效數(shù)據(jù)項(xiàng)的最高地址??者f增(EA) :堆棧向上增長(zhǎng),堆棧指針指向堆棧上的第一個(gè)空位置。滿遞減(FD) :堆棧向下增長(zhǎng),堆棧指針指向內(nèi)含有效數(shù)據(jù)項(xiàng)的最低地址。空遞減(ED) :堆棧向下增長(zhǎng),堆棧指針向堆棧下的第一個(gè)空位置。21微處理器系統(tǒng)結(jié)構(gòu)與系統(tǒng)設(shè)計(jì)堆棧的遞增與遞減遞增堆棧:地址方向生長(zhǎng),即向上生長(zhǎng)遞減堆棧:向低地址方向生長(zhǎng),即向下生長(zhǎng)堆棧存儲(chǔ)區(qū)遞減堆棧壓棧220x12345678地址減少
16、地址增加0x12345678遞增堆棧壓棧微處理器系統(tǒng)結(jié)構(gòu)與系統(tǒng)設(shè)計(jì)堆棧的空與滿空堆棧:堆棧指針SP指向下一個(gè)待壓入數(shù)據(jù)的空位置滿堆棧:堆棧指針SP指向最后壓入的堆棧的有效數(shù)據(jù)項(xiàng)滿堆棧壓??斩褩簵m擲PàSPà 棧頂棧底棧底230x123456780x123456780x12345678微處理器系統(tǒng)結(jié)構(gòu)與系統(tǒng)設(shè)計(jì)相對(duì)尋址1. 操作數(shù)為指令存放地址;2. 指令地址碼字段為地址偏移量;3.指令執(zhí)行基址尋址,由PC提供基地址根據(jù)偏移量完成跳轉(zhuǎn);BLSUBR1;調(diào)用SUBR1子程序BEQ. LOOP24LOOP;條件跳轉(zhuǎn)到LOOP處MOVR6,#1微處理器系統(tǒng)結(jié)構(gòu)與帶條件碼的指令
17、系統(tǒng)設(shè)計(jì)25對(duì)應(yīng)的匯編代碼:CMPR0,R1;比較R0(a)與R1(b) ADDHIR0,R0,#1 ;若R0>R1,則R0=R0+1 ADDLSR1,R1,#1 ;若R01,則R1=R1+1C代碼:If(a > b)a+;Elseb+;微處理器系統(tǒng)結(jié)構(gòu)與系統(tǒng)設(shè)計(jì)指令集介紹n ARM指令集指令格式26微處理器系統(tǒng)結(jié)構(gòu)與系統(tǒng)設(shè)計(jì)數(shù)據(jù)處理指令的編碼格式S=1:根據(jù)結(jié)果設(shè)置CPSR中的條件碼S=0:不設(shè)置CPSR中的條件碼Rn第一操作數(shù)寄存器Rd目標(biāo)寄存器第二操作數(shù)操作碼指令助記符說明0000AND邏輯與操作指令0001EOR邏輯異或操作指令0010SUB減法運(yùn)算指令0011RSB逆向減
18、法指令0100ADD加法運(yùn)算指令0101ADC帶進(jìn)位加法0110SBC帶進(jìn)位減法指令0111RSC帶進(jìn)位逆向減法指令1000TST位測(cè)試指令1001TEQ相等測(cè)試指令1010CMP比較指令1011CMN負(fù)數(shù)比較指令1100ORR邏輯或操作指令1101MOV數(shù)據(jù)傳送1110BIC位清除指令271111MVN數(shù)據(jù)非傳送I=1:立即數(shù);I=0:寄存器移位指令條件碼微處理器系統(tǒng)結(jié)構(gòu)與乘法指令的編碼格式系統(tǒng)設(shè)計(jì)28Rd: 目標(biāo)寄存器RdHi: 64位乘法指令目標(biāo)寄存器的高32位Rn: MLA指令相加的寄存器RdLo: 64位乘法指令目標(biāo)寄存器的低32位Rs為乘數(shù)寄存器操作碼指令助記符說明000MUL32
19、位乘法指令001MLA32位乘加指令100UMULL64位無符號(hào)乘法指令101UMLAL64位無符號(hào)乘加指令110SMULL64位有符號(hào)乘法指令111SMLAL64位有符號(hào)乘加指令Rm被乘數(shù)寄存器微處理器系統(tǒng)結(jié)構(gòu)與系統(tǒng)設(shè)計(jì)單數(shù)據(jù)存取指令的編碼格式B=0:字節(jié)B=1:字字和無符號(hào)字節(jié)存取指令LDR/STRP表示前/后變址L=1:加載L=0:I=1立即數(shù)I=0寄存器移位S=1:有符號(hào)數(shù), S=0: 無符號(hào)數(shù)2半9字和有符號(hào)字節(jié)存取指令LDR/STR單元尋址方式H=1:半字,H=0:字節(jié)Rn為基址寄存器U=1:加U=0: 減W=1:回寫基址寄存器,對(duì)應(yīng)指令中的“!”W=0:不回寫Rd為源/目標(biāo)寄存器
20、單元尋址方式微處理器系統(tǒng)結(jié)構(gòu)與系統(tǒng)設(shè)計(jì)數(shù)據(jù)塊(多寄存器)存取指令的編碼格式數(shù)據(jù)塊(多寄存器)存取指令編碼LDM/STM30W表示回寫(!)L=1:加載L=0:S對(duì)應(yīng)于指令中的” 符號(hào):在恢復(fù)PC時(shí)也同時(shí)恢復(fù)SPSRRn為基址寄存器U表示加/減寄存器列表P表示前/后變址微處理器系統(tǒng)結(jié)構(gòu)與系統(tǒng)設(shè)計(jì)寄存器/器交換指令的編碼格式); R1óR0;將R0指向的SWPSWPBR1,R1,R0R1,R2,R0單元低字節(jié)數(shù)據(jù)讀;取到R1中(高24位清零),并將R2的;內(nèi)容寫入到該內(nèi)存單元中的最低字節(jié)31Rn為基址寄存器Rd目標(biāo)寄存器B用于區(qū)別無符號(hào)字節(jié)(B為1)或字(B為0Rm源寄存器微處理器系統(tǒng)結(jié)
21、構(gòu)與分支指令的編碼格式分支指令B/BL指令編碼格式系統(tǒng)設(shè)計(jì)分支指令BX指令編碼格式32Rm目標(biāo)地址寄存器,該寄存器裝載31位跳轉(zhuǎn)地址,最低位為1時(shí)切換到Thumb狀態(tài)24 位有符號(hào)立即數(shù)(偏移量)L=0:B指令,跳轉(zhuǎn)L=1: BL指令,保存PC并跳轉(zhuǎn),可返回微處理器系統(tǒng)結(jié)構(gòu)與系統(tǒng)設(shè)計(jì)狀態(tài)寄存器指令的編碼格式要傳送到狀態(tài)寄存器指定域的立即數(shù)33目標(biāo)寄存器,不能為R15R 0:CPSR R 1:SPSR指定傳送的區(qū)域,可以為以下字母(必須小寫)的一個(gè)或者組合:c域字節(jié)(psr7.0)x 擴(kuò)展域字節(jié)(psr15.8)s 狀態(tài)域字節(jié)(psr23.16)f 標(biāo)志域字節(jié)(psr31.24)8位立即數(shù)立即數(shù)
22、移位次數(shù)微處理器系統(tǒng)結(jié)構(gòu)與軟中斷指令的編碼格式系統(tǒng)設(shè)計(jì)34指令傳遞的參數(shù)(24位立即數(shù),其值為02241);執(zhí)行時(shí)CPU忽略該參數(shù),交OS處理。指令執(zhí)行的條件碼SWIcond immed_24微處理器系統(tǒng)結(jié)構(gòu)與系統(tǒng)設(shè)計(jì)8.3ARM指令集n 指令分類u 數(shù)據(jù)處理指令:使用和改變寄存器的值u 數(shù)據(jù)傳送指令:寄存器與器之間的數(shù)據(jù)傳送流指令:Ø 分支uØ 分支和:保存返回的地址,以恢復(fù)次序Ø 陷入系統(tǒng)代碼u 程序狀態(tài)寄存器處理指令u 協(xié)處理器指令u 異常產(chǎn)生指令35微處理器系統(tǒng)結(jié)構(gòu)與系統(tǒng)設(shè)計(jì)ARM指令助記符數(shù)據(jù)處理指令nu MOVu CMPu TSTu ADDu SUBu
23、 RSBu ANDu EORMVN CMN TEQ ADC SBC RSC ORRBIC數(shù)據(jù)傳送比較位測(cè)試 加法指令減法逆向減法邏輯與邏輯異或數(shù)據(jù)取反傳送反值比較相等測(cè)試帶進(jìn)位加法帶借位減法帶借位的逆向減法邏輯或位清除乘法與乘加指令nu MULu SMULLu UMULL跳轉(zhuǎn)指令32位乘法64位有符號(hào)數(shù)乘法64位無符號(hào)數(shù)乘法MLA SMLALUMLAL32位乘加64位有符號(hào)數(shù)乘加64位無符號(hào)數(shù)乘加nu Bu BLXBL帶返回的跳轉(zhuǎn)BX 帶狀態(tài)切換的跳轉(zhuǎn)跳轉(zhuǎn)帶返回和狀態(tài)切換的跳轉(zhuǎn)程序狀態(tài)寄存器存取u MRS 程序狀態(tài)寄存器-à通用寄存器u MSR 通用寄存器à程序狀態(tài)寄存器n
24、36微處理器系統(tǒng)結(jié)構(gòu)與系統(tǒng)設(shè)計(jì)ARM指令助記符指令u SWP 字移位元指令nSWPB 字節(jié)nu LSLu LSRu RORASL ASRRRX邏輯左移邏輯右移循環(huán)右移算術(shù)左移算術(shù)右移帶進(jìn)位的循環(huán)右移寄存器加載/指令nu LDRLDRB STRH STRBSTM字?jǐn)?shù)據(jù)加載字節(jié)數(shù)據(jù)加載半字?jǐn)?shù)據(jù)字節(jié)數(shù)據(jù)連續(xù)數(shù)據(jù)u LDRH 半字?jǐn)?shù)據(jù)加載u STRu LDM字?jǐn)?shù)據(jù)連續(xù)數(shù)據(jù)加載協(xié)處理器指令nu CDPu STCu MCRu MRCLDC協(xié)處理器操作協(xié)處理器數(shù)據(jù)協(xié)處理器數(shù)據(jù)加載ARM處理器寄存器à協(xié)處理器寄存器的數(shù)據(jù)傳送協(xié)處理器寄存器àARM處理器寄存器的數(shù)據(jù)蒼松37微處理器系統(tǒng)結(jié)構(gòu)與
25、系統(tǒng)設(shè)計(jì)ARM指令集ARM指令集ARM數(shù)據(jù)處理指令數(shù)據(jù)處理指令大致可分為3類:§ 數(shù)據(jù)傳送指令;§ 算術(shù)邏輯運(yùn)算指令;§ 比較指令。數(shù)據(jù)處理指令只能對(duì)寄存器的內(nèi)容進(jìn)行操作,而不能對(duì)內(nèi)存中的數(shù)據(jù)進(jìn)行操作。所有ARM數(shù)據(jù)處理指令均可選擇使用S后綴,以使指令影響狀態(tài)標(biāo)志。38微處理器系統(tǒng)結(jié)構(gòu)與系統(tǒng)設(shè)計(jì)ARM數(shù)據(jù)處理指令指令編碼opcode操作碼功能表指令執(zhí)行的條件碼第二操說明作數(shù)操作碼指令助記符操作碼條件助記符標(biāo)志含義與操作指令0000EQZ=1相等異或操作指令0001NEZ=0不相等運(yùn)算指令0010CS/HSC=1無符號(hào)數(shù)大于或等于0011CC/LOC=0無符號(hào)數(shù)小于
26、0100MIN=1負(fù)數(shù)寄存器位加法0101PLN=0正數(shù)或零位減法指令與指令0110VSV=1溢出位逆向減法指令0111VCV=0沒有溢出試指令1000HIC=1,Z=0無符號(hào)數(shù)大于測(cè)試指令1001LSC=0,Z=1無符號(hào)數(shù)小于或等于指令1010GEN=V有符號(hào)數(shù)大于或等于比較指令1011LTN!=V有符號(hào)數(shù)小于或操作指令1100GTZ=0,N=V有符號(hào)數(shù)大于傳送1101LEZ=1,N!=V有符號(hào)數(shù)小于或等于除指令1110AL無條件執(zhí)行 (指令默認(rèn)條件)任何非傳送1111NV從不執(zhí)行(不要使用)任何運(yùn)算指令減法指令微處理器系統(tǒng)結(jié)構(gòu)與ARM數(shù)據(jù)處理指令數(shù)據(jù)傳送系統(tǒng)設(shè)計(jì)注:當(dāng)后綴S時(shí),這些指令根據(jù)
27、結(jié)果更新標(biāo)志N和Z,在計(jì)算Operand2不影響標(biāo)志V。標(biāo)志C,40助記符說明操作條件碼位置MOVRd,operand2數(shù)據(jù)傳送Rdoperand2MOVcondSMVNRd,operand2數(shù)據(jù)非傳送Rd(operand2)MVNcondS微處理器系統(tǒng)結(jié)構(gòu)與ARM數(shù)據(jù)處理指令數(shù)據(jù)傳送系統(tǒng)設(shè)計(jì)MOV指令將8位位圖立即數(shù)(參看“第2操作數(shù):#immed_8r常數(shù)指令集介紹表”)或寄存器傳送到目標(biāo)寄存器(Rd),可用于移位運(yùn)算等操 ARM指 集第2 操作數(shù)# 8 數(shù)表 式數(shù)必須對(duì)應(yīng)8 即 8 的 數(shù)環(huán)右移 數(shù) 得到右移作。指令格式如下:MOVcondSMOV指令舉例如下:Rd,operand2MO
28、V MOV MOVSMOVR1,#0xF000000BR0,R1;R1= 0xF000000B;R0=R1;R3=R1<<2,并影響標(biāo)志位;PC=LR,子程序返回R3,R1,LSLPC,LR#241助記符說明操作條件碼位置MOVRd,operand2數(shù)據(jù)傳送Rdoperand2MOVcondSMVNRd,operand2數(shù)據(jù)非傳送Rd(operand2)MVNcondS微處理器系統(tǒng)結(jié)構(gòu)與ARM數(shù)據(jù)處理指令數(shù)據(jù)傳送系統(tǒng)設(shè)計(jì)MVN指令將8位位圖立即數(shù)(參看“第2操作數(shù):#immed_8r常數(shù)表指令集介紹ARM指 集第2 操作數(shù)# 8 數(shù)表 式數(shù)必須對(duì)應(yīng)8 即 8 的 數(shù)環(huán)右移 數(shù) 得到
29、右移”)或寄存器(operand2)按位取反后傳送到目標(biāo)寄存器(Rd),因?yàn)闄C(jī) 其具有取反功能,所以可以裝載范圍更廣的立即數(shù)。指令格式如下:MVNcondSMVN指令舉例如下:Rd,operand2MVNMVNR1,#0xFFR1,R2;R1=0xFFFFFF00;將R2按位取反,結(jié)果存到R142數(shù)助記符說明操作條件碼位置MOVRd,operand2數(shù)據(jù)傳送Rdoperand2MOVcondSMVNRd,operand2數(shù)據(jù)非傳送Rd(operand2)MVNcondS微處理器系統(tǒng)結(jié)構(gòu)與ARM數(shù)據(jù)處理指令算術(shù)運(yùn)算系統(tǒng)設(shè)計(jì)注:這些指令影響N,Z,C和V標(biāo)志位。43助記符說明操作條件碼位置ADDR
30、d, Rn, operand2加法運(yùn)算指令RdRn+operand2ADDcondSSUBRd, Rn, operand2減法運(yùn)算指令RdRn-operand2SUBcondSRSBRd, Rn, operand2逆向減法指令Rdoperand2-RnRSBcondSADCRd, Rn, operand2帶進(jìn)位加法RdRn+operand2+CarryADCcondSSBCRd, Rn, operand2帶進(jìn)位減法指令RdRn-operand2-(NOT)CarrySBCcondSRSCRd, Rn, operand2帶進(jìn)位逆向減法指令Rdoperand2-Rn-(NOT)CarryRSCco
31、ndS微處理器系統(tǒng)結(jié)構(gòu)與ARM數(shù)據(jù)處理指令算術(shù)運(yùn)算系統(tǒng)設(shè)計(jì)4加法運(yùn)算指令A(yù)DD指令將operand2的值與Rn的值相加,結(jié)果保存到Rd寄存器。指令格式如下:ADDcondSRd,Rn,operand2應(yīng)用示例:ADDSR1,R1,#1020;R1=R1,并影響標(biāo)志位4ADDR1,R1,R2,LSL #2;R1=R1+R2<<2助記符說明操作條件碼位置ADDRd, Rn, operand2加法運(yùn)算指令RdRn+operand2ADDcondSSUBRd, Rn, operand2減法運(yùn)算指令RdRn-operand2SUBcondSRSBRd, Rn, operand2逆向減法指令R
32、doperand2-RnRSBcondSADCRd, Rn, operand2帶進(jìn)位加法RdRn+operand2+CarryADCcondSSBCRd, Rn, operand2帶進(jìn)位減法指令RdRn-operand2- (NOT)CarrySBCcondSRSCRd, Rn, operand2帶進(jìn)位逆向減法指令Rdoperand2-Rn-(NOT)CarryRSCcondS微處理器系統(tǒng)結(jié)構(gòu)與ARM數(shù)據(jù)處理指令算術(shù)運(yùn)算系統(tǒng)設(shè)計(jì)減法運(yùn)算指令SUB指令用寄存器Rn減去operand2,結(jié)果保存到Rd中。指令格式如下:SUBcondSRd,Rn,operand2應(yīng)用示例:SUBSSUBSR0,R0
33、,#240R2,R1,R2;R0=R0-240 ,并影響標(biāo)志位;R2=R1-R2 ,并影響標(biāo)志位45助記符說明操作條件碼位置ADDRd, Rn, operand2加法運(yùn)算指令RdRn+operand2ADDcondSSUBRd, Rn, operand2減法運(yùn)算指令RdRn-operand2SUBcondSRSBRd, Rn, operand2逆向減法指令Rdoperand2-RnRSBcondSADCRd, Rn, operand2帶進(jìn)位加法RdRn+operand2+CarryADCcondSSBCRd, Rn, operand2帶進(jìn)位減法指令RdRn-operand2- (NOT)Car
34、rySBCcondSRSCRd, Rn, operand2帶進(jìn)位逆向減法指令Rdoperand2-Rn- (NOT)CarryRSCcondS微處理器系統(tǒng)結(jié)構(gòu)與ARM數(shù)據(jù)處理指令算術(shù)運(yùn)算系統(tǒng)設(shè)計(jì)逆向減法運(yùn)算指令RSB指令將operand2的值減去Rn,結(jié)果保存到Rd中指令格式如下:RSBcondSRd,Rn,operand2應(yīng)用示例:RSBRSBSR3,R1,#0xFF00;R3=0xFF00-R1;R1=(R2<<2)-R2=R2×3 影響標(biāo)志位R1,R2,R2,LSL#246助記符說明操作條件碼位置ADDRd, Rn, operand2加法運(yùn)算指令RdRn+opera
35、nd2ADDcondSSUBRd, Rn, operand2減法運(yùn)算指令RdRn-operand2SUBcondSRSBRd, Rn, operand2逆向減法指令Rdoperand2-RnRSBcondSADCRd, Rn, operand2帶進(jìn)位加法RdRn+operand2+CarryADCcondSSBCRd, Rn, operand2帶進(jìn)位減法指令RdRn-operand2-(NOT)CarrySBCcondSRSCRd, Rn, operand2帶進(jìn)位逆向減法指令Rdoperand2-Rn-(NOT)CarryRSCcondS微處理器系統(tǒng)結(jié)構(gòu)與ARM數(shù)據(jù)處理指令算術(shù)運(yùn)算系統(tǒng)設(shè)計(jì)帶進(jìn)
36、位加法指令A(yù)DC將operand2的值與Rn的值相加,再加上CPSR中 的C條件標(biāo)志位,結(jié)果保存到Rd寄存器。指令格式如下:ADCcondSRd,Rn,operand2應(yīng)用示例(使用ADC實(shí)現(xiàn)64位加法,結(jié)果存于R1(高32位)、R0中):ADDSADCR0,R0,R2R1,R1,R3;R0等于低32位相加,并影響標(biāo)志位;R1等于高32位相加,并加上低位進(jìn)位47助記符說明操作條件碼位置ADDRd, Rn, operand2加法運(yùn)算指令RdRn+operand2ADDcondSSUBRd, Rn, operand2減法運(yùn)算指令RdRn-operand2SUBcondSRSBRd, Rn, ope
37、rand2逆向減法指令Rdoperand2-RnRSBcondSADCRd, Rn, operand2帶進(jìn)位加法RdRn+operand2+CarryADCcondSSBCRd, Rn, operand2帶進(jìn)位減法指令RdRn-operand2-(NOT)CarrySBCcondSRSCRd, Rn, operand2帶進(jìn)位逆向減法指令Rdoperand2-Rn-(NOT)CarryRSCcondS微處理器系統(tǒng)結(jié)構(gòu)與ARM數(shù)據(jù)處理指令算術(shù)運(yùn)算系統(tǒng)設(shè)計(jì)帶進(jìn)位減法指令SBC用寄存器Rn減去operand2,再減去CPSR中的 C條件標(biāo)志位的非(即若C標(biāo)志清零,則結(jié)果減去1),結(jié)果保存到Rd中。指
38、令格式如下:SBCcondSRd,Rn,operand2應(yīng)用示例(使用SBC實(shí)現(xiàn)64位減法,結(jié)果存于R1、R0中):SUBSSBCR0,R0,R2R1,R1,R3; 低32位相減,并影響標(biāo)志位;高32位相減,并減去低位借位48助記符說明操作條件碼位置ADDRd, Rn, operand2加法運(yùn)算指令RdRn+operand2ADDcondSSUBRd, Rn, operand2減法運(yùn)算指令RdRn-operand2SUBcondSRSBRd, Rn, operand2逆向減法指令Rdoperand2-RnRSBcondSADCRd, Rn, operand2帶進(jìn)位加法RdRn+operand2
39、+CarryADCcondSSBCRd, Rn, operand2帶進(jìn)位減法指令RdRn-operand2- (NOT)CarrySBCcondSRSCRd, Rn, operand2帶進(jìn)位逆向減法指令Rdoperand2-Rn- (NOT)CarryRSCcondS微處理器系統(tǒng)結(jié)構(gòu)與ARM數(shù)據(jù)處理指令算術(shù)運(yùn)算系統(tǒng)設(shè)計(jì)49帶進(jìn)位逆向減法指令RSC指令用寄存器operand2減去Rn,再減去CPSR中的C條件標(biāo)志位,結(jié)果保存到Rd中。指令格式如下:RSCcondS Rd,Rn,operand2 應(yīng)用示例(使用RSC指令實(shí)現(xiàn)求64位數(shù)值的負(fù)數(shù) ): RSBS R2,R0,#0 ;R2=-R0RSC
40、 R3,R1,#0 ;R3=-R1- !Carry助記符說明操作條件碼位置ADDRd, Rn, operand2加法運(yùn)算指令RdRn+operand2ADDcondSSUBRd, Rn, operand2減法運(yùn)算指令RdRn-operand2SUBcondSRSBRd, Rn, operand2逆向減法指令Rdoperand2-RnRSBcondSADCRd, Rn, operand2帶進(jìn)位加法RdRn+operand2+CarryADCcondSSBCRd, Rn, operand2帶進(jìn)位減法指令RdRn-operand2-(NOT)CarrySBCcondSRSCRd, Rn, opera
41、nd2帶進(jìn)位逆向減法指令Rdoperand2-Rn- (NOT)CarryRSCcondS微處理器系統(tǒng)結(jié)構(gòu)與ARM數(shù)據(jù)處理指令邏輯運(yùn)算指令系統(tǒng)設(shè)計(jì)注:當(dāng)后綴S時(shí),這些指令根據(jù)結(jié)果更新標(biāo)志N和Z,在計(jì)算Operand2標(biāo)志C,不影響標(biāo)志V。50助記符說明操作條件碼位置ANDRd, Rn, operand2邏輯與操作指令RdRn & operand2ANDcondSORRRd, Rn, operand2邏輯或操作指令RdRn | operand2ORRcondSEORRd, Rn, operand2邏輯異或操作指令RdRn operand2EORcondSBICRd, Rn, operan
42、d2位清除指令RdRn & (operand2)BICcondS微處理器系統(tǒng)結(jié)構(gòu)與ARM數(shù)據(jù)處理指令邏輯運(yùn)算指令系統(tǒng)設(shè)計(jì)邏輯與操作指令A(yù)ND指令將operand2的值與寄存器Rn的值按位作邏輯“與”操作,結(jié)果保存到Rd中。指令格式如下:ANDcondSRd,Rn,operand2應(yīng)用示例:ANDSANDEQR0,R0,#0x01R2,R1,R3;R0=R0&0x01,取出最低位數(shù)據(jù);R2=R1&R351助記符說明操作條件碼位置ANDRd, Rn, operand2邏輯與操作指令RdRn & operand2ANDcondSORRRd, Rn, operand2邏
43、輯或操作指令RdRn | operand2ORRcondSEORRd, Rn, operand2邏輯異或操作指令RdRn operand2EORcondSBICRd, Rn, operand2位清除指令RdRn & (operand2)BICcondS微處理器系統(tǒng)結(jié)構(gòu)與ARM數(shù)據(jù)處理指令邏輯運(yùn)算指令系統(tǒng)設(shè)計(jì)邏輯或操作指令ORR指令將operand2的值與寄存器Rn的值按位作 邏輯“或”操作,結(jié)果保存到Rd中。指令格式如下:ORRcondSRd,Rn,operand2應(yīng)用示例:R3的值如何?52MOVR1,R2,LSR #24;使用ORR指令將R2的高8位ORRR3,R1,R3,LSL
44、#8;數(shù)據(jù)移入到R3低8位中ORRR0,R0,#0x0F;將R0的低4位置1助記符說明操作條件碼位置ANDRd, Rn, operand2邏輯與操作指令RdRn & operand2ANDcondSORRRd, Rn, operand2邏輯或操作指令RdRn | operand2ORRcondSEORRd, Rn, operand2邏輯異或操作指令RdRn operand2EORcondSBICRd, Rn, operand2位清除指令RdRn & (operand2)BICcondS微處理器系統(tǒng)結(jié)構(gòu)與ARM數(shù)據(jù)處理指令邏輯運(yùn)算指令系統(tǒng)設(shè)計(jì)邏輯異或操作指令EOR指令將opera
45、nd2的值與寄存器Rn的值按位 作邏輯“異或”操作,結(jié)果保存到Rd中。指令格式如下:EORcondSRd,Rn, operand2應(yīng)用示例:EOREOREORSR1,R1,#0x0FR2,R1,R0R0,R5,#0x01;將R1的低4位取反;R2=R1R0; 將R5和0x01進(jìn)行邏輯異或,;結(jié)果保存到R0,并影響標(biāo)志位53助記符說明操作條件碼位置ANDRd, Rn, operand2邏輯與操作指令RdRn & operand2ANDcondSORRRd, Rn, operand2邏輯或操作指令RdRn | operand2ORRcondSEORRd, Rn, operand2邏輯異或操作指令RdRn operand2EORcondSBICRd, Rn, operand2位清除指令RdRn & (operand2)BICcond
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 年產(chǎn)節(jié)能燈整燈600萬支項(xiàng)目可行性研究報(bào)告?zhèn)浒噶㈨?xiàng)
- 2025年度餐飲業(yè)員工培訓(xùn)與發(fā)展雇傭合同范本
- 2025-2030年中國實(shí)木衣帽架項(xiàng)目投資可行性研究分析報(bào)告
- 2025年度清潔能源項(xiàng)目投資合同范本D008(專業(yè)版)
- 2025-2030年中國歐式木鋁復(fù)合門窗項(xiàng)目投資可行性研究分析報(bào)告
- 土石方工程項(xiàng)目申請(qǐng)報(bào)告可行性研究報(bào)告
- 2025年度建筑企業(yè)資質(zhì)升級(jí)咨詢服務(wù)承包合同
- 生態(tài)旅游景區(qū)項(xiàng)目可行性報(bào)告
- 2025年度互聯(lián)網(wǎng)金融服務(wù)合同范本
- 2025柴油銷售渠道拓展合作協(xié)議
- 一年級(jí)下冊(cè)綜合實(shí)踐活動(dòng)教案2
- 生物-山東省濰坊市、臨沂市2024-2025學(xué)年度2025屆高三上學(xué)期期末質(zhì)量檢測(cè)試題和答案
- 2025年小學(xué)督導(dǎo)工作計(jì)劃
- 2024-2025學(xué)年部編版歷史九年級(jí)上冊(cè)期末復(fù)習(xí)練習(xí)題(含答案)
- 2025年月度工作日歷含農(nóng)歷節(jié)假日電子表格版
- 基于ChatGPT的ESG評(píng)級(jí)體系實(shí)現(xiàn)機(jī)制研究
- 2024年長(zhǎng)沙民政職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫及答案解析
- 《商務(wù)數(shù)據(jù)分析》課件-商務(wù)數(shù)據(jù)的分析
- 安全隱患規(guī)范依據(jù)查詢手冊(cè)
- 部編版六年級(jí)下冊(cè)道德與法治全冊(cè)教案教學(xué)設(shè)計(jì)
- 最新六年級(jí)英語下冊(cè)《全套教材分析解讀》外研版課件
評(píng)論
0/150
提交評(píng)論