EMPUCh3指令系統(tǒng).ppt
《EMPUCh3指令系統(tǒng).ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《EMPUCh3指令系統(tǒng).ppt(245頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
第3章ARM指令集,ARM指令系統(tǒng),指令系統(tǒng)簡(jiǎn)介,ARM處理器是基于精簡(jiǎn)指令集計(jì)算機(jī)(RISC)原理設(shè)計(jì)的,指令集和相關(guān)譯碼機(jī)制較為簡(jiǎn)單。ARM具有32位ARM指令集和16位Thumb指令集;ARM指令集效率高,但是代碼密度低;Thumb指令集是ARM指令集的子集。Thumb2是ARM指令集和Thumb指令集的融合。所有的ARM指令都是可以有條件執(zhí)行的,而Thumb指令僅有一條指令具備條件執(zhí)行功能。ARM程序和Thumb程序可相互調(diào)用,相互之間的狀態(tài)切換開銷幾乎為零。,第3章目錄,3.1ARM指令集概述3.2ARM尋址方式3.3ARM指令詳細(xì)介紹,第3章目錄,3.1ARM指令集概述3.2ARM尋址方式3.3ARM指令詳細(xì)介紹,3.1ARM指令集概述,ARM指令集是32位的。ARM匯編程序的啟動(dòng)都是從ARM指令集開始。所有的ARM指令集都可以是有條件執(zhí)行的。本節(jié)從以下三個(gè)方面介紹:ARM指令集編碼條件執(zhí)行指令分類及指令格式,概述,3.1.1ARM指令集編碼,ARM指令集是以32位二進(jìn)制編碼的方式給出的;指令編碼中定義了目的操作數(shù)、第一操作數(shù)、第二操作數(shù)條件標(biāo)志影響位指令所對(duì)應(yīng)的不同功能實(shí)現(xiàn)的二進(jìn)制位,指令編碼概述,指令編碼表如下,ARM指令集編碼表,ARM指令集編碼表,ARM指令集指令碼opcode表,ARM指令集指令條件碼cond表,ARM指令集指令簡(jiǎn)表,ARM指令集指令簡(jiǎn)表,ARM指令集指令簡(jiǎn)表,ARM指令集——基本格式,{}{S},{,},Cond:ARM指令根據(jù)CPSR中的條件位自動(dòng)判斷是否執(zhí)行指令,在條件滿足時(shí),指令執(zhí)行,否則指令被忽略。S:指令執(zhí)行后,是否還改寫“cond”位。使用條件碼“cond”可以實(shí)現(xiàn)高效的邏輯操作,提高代碼效率。所有的ARM指令都可以條件執(zhí)行。如果指令不標(biāo)明條件代碼,將默認(rèn)為無(wú)條件(AL)執(zhí)行。,3.1.2條件執(zhí)行,ARM指令集——舉例,C代碼:if(a>b)a++;elseb++;,對(duì)應(yīng)的匯編代碼:a->r0,b->r1CMPR0,R1;R0與R1比較ADDHIR0,R0,#1;若R0>R1,則R0=R0+1ADDLSR1,R1,#1;若R0≤R1,則R1=R1+1,,3.1.2條件執(zhí)行,ARM指令集可以分為六大類:數(shù)據(jù)處理指令Load/Store指令跳轉(zhuǎn)指令程序狀態(tài)寄存器處理指令協(xié)處理器指令異常產(chǎn)生指令。,3.1.3指令分類及指令格式,ARM指令集分類,ARM指令的基本格式如下:,ARM指令集——指令格式,{}{S},{,},其中號(hào)內(nèi)的項(xiàng)是必須的;{}號(hào)內(nèi)的項(xiàng)是可選的;Rd是固定不變的;Rn是固定不變的;operand2變化繁多;,3.1.3指令分類及指令格式,Opcode:操作碼;助記符,如AND=0000。Cond:條件碼;助記符,如EQ=0000。S:更新碼;若指定“S”,則指令執(zhí)行后,自動(dòng)更新CPSR中的Cond。Rd:目的寄存器;如R0=0000。Rn:第1源操作數(shù);是寄存器;如R1=0001。Op2:第2源操作數(shù);可為立即數(shù)/寄存器,變形式多樣。,ARM指令集——指令格式說明,3.1.3指令分類及指令格式,{}{S},{,},ARM指令集——ARM指令格式舉例,LDRR0,[R1];讀R1地址上的存儲(chǔ)單元內(nèi)容,執(zhí)行條件ALBEQDATAEVEN;條件分支指令,相等則跳轉(zhuǎn)到DATAEVENADDSR2,R1,#1;加法指令,R2R2,更新CPRS,3.1.3指令分類及指令格式,ARM指令集——operand2,{}{S},{,},operand2的形式十分靈活#immed——立即數(shù)方式;Rm——寄存器方式;Rm,Shift——寄存器移位方式;下面分別介紹:,3.1.3指令分類及指令格式,ARM指令集——operand2=#immed,operand2=#immed32位指令無(wú)法遍歷32位立即數(shù)!operand2是12bits,被分解為“8位常數(shù)immed_8”和“4位移位位數(shù)rimm_4”,用“immed_8循環(huán)右移2*rimm_4位”來(lái)表示一個(gè)立即數(shù)。有效立即數(shù)immediate表示成:=immed_8ROR(2rimm_4)12bits=rimm_4拼接immed_8,3.1.3指令分類及指令格式,3.1.3指令分類及指令格式,循環(huán)右移10位,8位常數(shù),,ARM指令集——operand2=#immed,operand2=#immed=immed_8ROR(2r_imm_4)例如:0 x04800000可以看成0 x12循環(huán)右移10位,凡是左右循環(huán)移位偶數(shù)位后,能夠表示成一個(gè)字節(jié)的數(shù)都是合法的立即數(shù)。(1之間的間距小于等于8),ARM指令集——operand2=Rm,3.1.3指令分類及指令格式,operand2=Rm在寄存器方式下,操作數(shù)即為寄存器的數(shù)值。例如:SUBR1,R1,R2MOVPC,R0,ARM指令集——operand2=Rm,3.1.3指令分類及指令格式,operand2=Rm在寄存器方式下,操作數(shù)即為寄存器的數(shù)值。將寄存器的移位結(jié)果作為操作數(shù),但Rm值保持不變。格式如下:Rm,shifttype#rimm_5Rm,shifttypeRs,operand2=Rm移位操作含義LSL:邏輯左移,空出的最低有效位用0填充。LSR:邏輯右移,空出的最高有效位用0填充。ASL:算術(shù)左移,由于左移空出的有效位用0填充,因此它與LSL同義。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位,空位用原來(lái)C標(biāo)志位填充。,ARM指令集——operand2=Rm,3.1.3指令分類及指令格式,operand2=Rm移位方式:圖示,ARM指令集——operand2=Rm,3.1.3指令分類及指令格式,operand2=Rm實(shí)例:ADDR1,R1,R1,LSL#3;R1=R1+R1*8=9R1SUBR1,R1,R2,LSRR3;R1=R1-(R2/2R3),ARM指令集——operand2=Rm,3.1.3指令分類及指令格式,第3章目錄,3.1ARM指令集概述3.2ARM尋址方式3.3ARM指令詳細(xì)介紹,3.2ARM處理器尋址方式,尋址方式定義,尋址方式就是根據(jù)指令中給出的地址碼字段來(lái)實(shí)現(xiàn)尋找真實(shí)操作數(shù)地址的方式。操作數(shù)可能的形式:操作數(shù)為立即數(shù):直接給出立即數(shù)操作數(shù)在寄存器中:直接指明寄存器操作數(shù)在內(nèi)存中:如何給出存儲(chǔ)單元的地址?,3.2ARM處理器尋址方式,尋址方式分類,ARM處理器具有7種基本尋址方式:立即尋址;寄存器尋址;寄存器間接尋址;基址加偏址;堆棧尋址;塊拷貝尋址;相對(duì)尋址。,定義:在立即尋址指令中,只能用Operand2表示立即數(shù)!也就是說,數(shù)據(jù)就包含在指令當(dāng)中,取出指令也就取出了可以立即使用的操作數(shù)(這樣的數(shù)稱為立即數(shù))。立即尋址指令舉例如下:SUBSR0,R0,#1;R0減1,結(jié)果放入R0,并且影響標(biāo)志位MOVR0,#0 xFF000;將立即數(shù)0 xFF000裝入R0寄存器,MOVR0,#0 xFF00,,0 xFF00,從代碼中獲得數(shù)據(jù),3.2.1立即尋址,立即尋址-定義,3.2.1立即尋址,指令:測(cè)試下列指令是否正確?為什么?ADDR0,R0,#1111ADDR0,R0,#0 x3fMOVR0,#0 x128MOVR0,#0 x1FFMOVR0,#0 xFFFFFFFF;等價(jià)MVNR0,#0上機(jī)練習(xí),立即尋址-實(shí)例1-上機(jī)練習(xí),3.2.1立即尋址,立即數(shù)要求以“?!睘榍熬Y十六進(jìn)制立即數(shù),在“?!焙蠹由稀? x”或“(1)MOVR1,#0X00110000;(2)MOVR4,#0X00012800;(3),8000:E3A00CF2;(1)8004:E3A01811;(2)8008:E2A04B4A;(3),,注:8位立即數(shù)不需要經(jīng)過移位間接表示,而可以直接表示。,3.2.2寄存器尋址,寄存器獨(dú)立尋址寄存器移位尋址,3.2ARM處理器尋址方式,格式:操作數(shù)的值在寄存器中,指令中的地址碼字段指出的是寄存器編號(hào),指令執(zhí)行時(shí)直接取出寄存器值來(lái)操作。寄存器尋址指令舉例如下:MOVR1,R2;將R2的值存入R1SUBR0,R1,R2;將R1的值減去R2的值;結(jié)果保存到R0,MOVR1,R2,,0 xAA,寄存器獨(dú)立尋址-格式,3.2.2寄存器尋址,格式:,,Rm,{}Rm:第二操作數(shù)寄存器;:移位類型(LSL,LSR,ASL,ASR,ROR或RRX)和移位位數(shù)(#rimm_5或Rs)。在指令執(zhí)行時(shí)將移位后的內(nèi)容作為第二操作數(shù)參與運(yùn)算。但是,Rm保持不變。ADDR3,R2,R1,LSR#2;R3<—R2+R14,寄存器移位尋址-格式,3.2.2寄存器尋址,移位位數(shù)為立即數(shù):ADDR3,R2,R1,LSR#2;R3<—R2+R14寄存器R1的內(nèi)容邏輯右移2位(亦即R14),再與寄存器R2的內(nèi)容相加,結(jié)果放入R3中。移位位數(shù)為寄存器:ADDR3,R2,R1,LSRR4;R3<—R2+R12R4寄存器R1的內(nèi)容邏輯右移[R4]位(亦即R12R4),再與寄存器R2的內(nèi)容相加,結(jié)果放入R3中。,寄存器移位尋址-實(shí)例,3.2.2寄存器尋址,移位位數(shù)為立即數(shù):MOVR1,#R1=R1-(R2/2R3),寄存器移位尋址-演示-練習(xí),3.2.2寄存器尋址,定義:寄存器間接尋址指令中的地址碼給出的是一個(gè)通用寄存器的編號(hào),所需的操作數(shù)保存在寄存器指定地址的存儲(chǔ)單元中,即寄存器為操作數(shù)的地址指針。寄存器間接尋址指令舉例如下:LDRR0,[R2];將R2指向的存儲(chǔ)單元的數(shù)據(jù)讀出;保存在R1中,寄存器間接尋址-格式,3.2.3寄存器間接尋址,LDRR0,[R2],0 xAA,,,定義:基址加偏移尋址又稱變址尋址?;芳悠穼ぶ肪褪菍⒒芳拇嫫鞯膬?nèi)容與指令中給出的偏移量相加,形成操作數(shù)的有效地址?;穼ぶ酚糜谠L問基址附近的存儲(chǔ)單元,常用于查表、數(shù)組操作、功能部件寄存器訪問等?;穼ぶ分噶钆e例如下:格式:base_reg,indexLDRR2,[R3,#0 x0C];讀R3+0 x0C地址上的存儲(chǔ)單元,3.2.4基址加偏址尋址,基址加偏址尋址-格式,LDRR2,[R3,#0 x0C],0 xAA,,,將R3+0 x0C作為地址裝載數(shù)據(jù),分類:breg=BaseRegister偏移量模式:[breg,index]LDRR0,[R1,#4];R0←[R1+4]前變址模式:[breg,index]!LDRR0,[R1,#4]!;R0←[R1+4],R1←R1+4!表示自動(dòng)變址后變址模式:[breg],indexLDRR0,[R1],#4;R0←[R1]、R1←R1+4說明:[]具有高優(yōu)先級(jí);Index是偏移地址稱為偏址,3.2.4基址加偏址尋址,基址加偏址尋址-分類,偏址-index格式:偏移地址是一個(gè)立即數(shù)LDRR0,[R1,#4];R0←[R1+4]偏移地址是一個(gè)寄存器LDRR0,[R1,R2];R0<—mem32[R1+R2]偏移地址是一個(gè)寄存器移位操作LDRR0,[R1,R2,LSL#2];R0<—[R1+R2*4],3.2.4基址加偏址尋址,基址加偏址尋址-偏址格式,偏移量ldrR0,[R1,#4]ldrR0,[R1,R5]ldrR0,[R1,R5,LSL#PUSHldmfdSP!,{R4-R7,LR};POP,3.2.5堆棧尋址,堆棧尋址-演示-練習(xí),約定:大大小小編號(hào)小的寄存器在存儲(chǔ)/加載數(shù)據(jù)時(shí)對(duì)應(yīng)于存儲(chǔ)器的小地址。也就是說,編號(hào)低的寄存器保存到堆棧的最低地址,或者從最低地址取數(shù);反之,亦然!其次是其他寄存器按照寄存器編號(hào)的次序保存到第一個(gè)地址后面的相鄰地址或從中取數(shù)。,3.2.5堆棧尋址,堆棧尋址-約定,定義:塊拷貝尋址是多寄存器傳送指令LDM/STM的尋址方式。LDM/STM指令可以把存儲(chǔ)器中的一個(gè)數(shù)據(jù)塊連續(xù)地加載到多個(gè)寄存器中,也可以把多個(gè)寄存器中的內(nèi)容連續(xù)地保存到存儲(chǔ)器中。尋址操作中的寄存器可以是{R0-R15}這16個(gè)寄存器的子集或是所有寄存器。,3.2.6塊拷貝尋址,塊拷貝尋址-定義,分類:I=IncrementA=AfterD=DecrementB=Before,3.2.6塊拷貝尋址,塊拷貝尋址-分類,指令:,3.2.6塊拷貝尋址,塊拷貝尋址-指令,實(shí)例1:,3.2.6塊拷貝尋址,塊拷貝尋址-實(shí)例,STMIAR9!,{R0,R1,R5},0X1000,0X100C,0X1018,R9’,R9,0X1000,0X100C,0X1018,STMIBR9!,{R0,R1,R5},,,R9’,,R9,,實(shí)例2:,3.2.6塊拷貝尋址,塊拷貝尋址-實(shí)例,STMDAR9!,{R0,R1,R5},0X1000,0X100C,0X1018,R9’,R9,0X1000,0X100C,0X1018,,,R9’,,R9,,STMDBR9!,{R0,R1,R5},約定:編號(hào)低的寄存器在存儲(chǔ)數(shù)據(jù)或者加載數(shù)據(jù)時(shí)對(duì)應(yīng)于存儲(chǔ)器的低地址。也就是說,編號(hào)低的寄存器保存到存儲(chǔ)器的最低地址或從最低地址取數(shù);其次是其他寄存器按照寄存器編號(hào)的次序保存到第一個(gè)地址后面的相鄰地址或從中取數(shù)。Theregistersaretransferredintheorderlowesttohighest,soR15(ifinthelist)willalwaysbetransferredlast.Thelowestregisteralsogetstransferredto/fromthelowestmemoryaddress.,3.2.6塊拷貝尋址,塊拷貝尋址-約定,比較1:數(shù)據(jù)塊傳送指令和堆棧操作指令之間的關(guān)系如下:,3.2.6塊拷貝尋址,塊拷貝尋址-比較,比較2:數(shù)據(jù)塊傳送指令和堆棧操作指令之間的關(guān)系如下:,3.2.6塊拷貝尋址,塊拷貝尋址-比較,比較3:兩段代碼的執(zhí)行結(jié)果是一樣的,但是使用堆棧指令的壓棧和出棧操作編程很簡(jiǎn)單(只要前后一致即可),而使用數(shù)據(jù)塊指令進(jìn)行壓棧和出棧操作則需要考慮空與滿、加與減對(duì)應(yīng)的問題。,3.2.6塊拷貝尋址,塊拷貝尋址-比較,;使用塊拷貝指令進(jìn)行堆棧操作STMDAR0!,{R5-R6}...LDMIBR0!,{R5-R6},;使用堆棧指令進(jìn)行堆棧操作STMEDR0!,{R5-R6}...LDMEDR0!,{R5-R6},,實(shí)例:STMIAR0!,{R1-R7};將R1~R7的數(shù)據(jù)保存到存儲(chǔ)器中。;存儲(chǔ)指針在保存第一個(gè)值之后增加,;增長(zhǎng)方向?yàn)橄蛏显鲩L(zhǎng)。STMIBR0!,{R1-R7};將R1~R7的數(shù)據(jù)保存到存儲(chǔ)器中。;存儲(chǔ)指針在保存第一個(gè)值之前增加,;增長(zhǎng)方向?yàn)橄蛏显鲩L(zhǎng)。,3.2.6塊拷貝尋址,塊拷貝尋址-實(shí)例,練習(xí)1:下列指令實(shí)現(xiàn)功能:STMIAR1!,{R5-R7}STMIBR1!,{R5-R7}STMDAR1!,{R5-R7}STMDBR1!,{R5-R7},3.2.6塊拷貝尋址,塊拷貝尋址-練習(xí),練習(xí)1:數(shù)據(jù)塊傳送指令操作過程如右圖所示,其中R1為指令執(zhí)行前的基址寄存器,R1’則為指令執(zhí)行后的基址寄存器;綠箭頭表示Reg存入存儲(chǔ)器的順序:低低?高高;寫出相應(yīng)的指令:,3.2.6塊拷貝尋址,塊拷貝尋址-練習(xí),指令STMIAR1!,{R5-R7},指令STMDAR1!,{R5-R7},指令STMIBR1!,{R5-R7},指令STMDBR1!,{R5-R7},練習(xí)2:下列指令實(shí)現(xiàn)功能:LDMIAR0!,{R2-R4}STMIAR1!,{R2-R4}STMIAR1,{R2-R4},3.2.6塊拷貝尋址,塊拷貝尋址-練習(xí),練習(xí)2:寫出相應(yīng)的指令,3.2.6塊拷貝尋址,塊拷貝尋址-練習(xí),LDMIAR0!,{R2-R4},0X1000,0X100C,0X1018,R0’,R0,0X1000,0X100C,0X1018,STMIAR1!,{R2-R4},,,R1’,,R1,,練習(xí)2:寫出相應(yīng)的指令,3.2.6塊拷貝尋址,塊拷貝尋址-練習(xí),LDMIAR0!,{R2-R4},0X1000,0X100C,0X1018,R0’,R0,0X1000,0X100C,0X1018,STMIAR1,{R2-R4},,,R1’,R1,,練習(xí)3:寫出下列指令的功能STMFDR13!,{R2-R4}LDMIAR0!,{R2-R4}STMIAR1!,{R2-R4}LDMFDR13!,{R2-R4},3.2.6塊拷貝尋址,塊拷貝尋址-練習(xí),定義:相對(duì)尋址是基址尋址的一種變通。由程序計(jì)數(shù)器PC提供基準(zhǔn)地址,指令中的地址碼字段作為偏移量,兩者相加后得到的地址即為操作數(shù)的有效地址。相對(duì)尋址指令舉例如下:BLNEXT;跳轉(zhuǎn)到子程序;NEXT處執(zhí)行……NEXT……MOVPC,LR,3.2.7相對(duì)(PC)尋址,相對(duì)尋址-定義,寫出下列指令完成的功能:1.SUBNESR2,R1,#0X202.LDRR0,[R1,#4]!3.STDR0,[R1],#44.LDRR0,[R1,#4]5.ADDR3,R2,R1,LSR#26.SUBSR3,R2,R1,LSRR47.ANDSR1,R1,R2,LSLR38.LDRr0,[r1,r2]9.STRr0,[r1,r2,LSL#2]10.STRR0,[R1],第3章作業(yè)題,第3章目錄,3.1ARM指令集概述3.2ARM尋址方式3.3ARM指令詳細(xì)介紹,簡(jiǎn)單的ARM程序,;文件名:TEST1.S;功能:實(shí)現(xiàn)兩個(gè)寄存器相加;說明:使用ARMulate軟件仿真調(diào)試AREAExample1,CODE,READONLY;聲明代碼段Example1ENTRY;標(biāo)識(shí)程序入口CODE32;聲明32位ARM指令STARTMOVR0,#0;設(shè)置參數(shù)MOVR1,#10LOOPBLADD_SUB;調(diào)用子程序ADD_SUBBLOOP;跳轉(zhuǎn)到LOOPADD_SUBADDSR0,R0,R1;R0=R0+R1MOVPC,LR;子程序返回END;文件結(jié)束,,使用“;”進(jìn)行注釋,,標(biāo)號(hào)頂格寫,,實(shí)際代碼段,,聲明文件結(jié)束,3.3ARM指令詳細(xì)介紹,1.數(shù)據(jù)處理指令2.Load/Store指令3.程序狀態(tài)寄存器與通用寄存器之間的傳送指令4.轉(zhuǎn)移指令5.異常中斷指令6.協(xié)處理器指令,3.3ARM指令詳細(xì)介紹,1.數(shù)據(jù)處理指令2.Load/Store指令3.程序狀態(tài)寄存器與通用寄存器之間的傳送指令4.轉(zhuǎn)移指令5.異常中斷指令6.協(xié)處理器指令,3.3.1數(shù)據(jù)處理指令,ARM的數(shù)據(jù)處理指令功能:ARM的數(shù)據(jù)處理指令主要完成寄存器中數(shù)據(jù)的算術(shù)和邏輯運(yùn)算操作。本節(jié)按以下內(nèi)容組織:數(shù)據(jù)處理指令分類數(shù)據(jù)處理指令二進(jìn)制編碼數(shù)據(jù)處理指令表,3.3.1數(shù)據(jù)處理指令,ARM數(shù)據(jù)處理指令的基本原則為:所有的操作數(shù)都是32位寬,或來(lái)自寄存器,或是在指令中定義的立即數(shù)(符號(hào)或0擴(kuò)展);如果數(shù)據(jù)操作有結(jié)果,則結(jié)果為32位寬,放在一個(gè)寄存器中。(有一個(gè)例外:長(zhǎng)乘指令產(chǎn)生64位的結(jié)果);ARM指令中使用“3地址模式”,即每一個(gè)操作數(shù)寄存器和結(jié)果寄存器在指令中分別指定。,3.3.1數(shù)據(jù)處理指令,ARM指令集——ARM數(shù)據(jù)處理指令注意事項(xiàng),數(shù)據(jù)處理指令只能對(duì)寄存器的內(nèi)容進(jìn)行操作,而不能對(duì)內(nèi)存中的數(shù)據(jù)進(jìn)行操作。所有ARM數(shù)據(jù)處理指令均可選擇使用S后綴,并影響狀態(tài)標(biāo)志。,3.3.1數(shù)據(jù)處理指令,數(shù)據(jù)處理指令可分為以下六類:數(shù)據(jù)傳送指令;算術(shù)運(yùn)算指令;邏輯運(yùn)算指令;比較指令;測(cè)試指令;乘法指令。,3.3.1數(shù)據(jù)處理指令,數(shù)據(jù)處理指令可分為以下六類:數(shù)據(jù)傳送指令;算術(shù)運(yùn)算指令;邏輯運(yùn)算指令;比較指令;測(cè)試指令;乘法指令。,3.3.1ARM數(shù)據(jù)處理指令-指令表(前5類),3.3.1ARM數(shù)據(jù)處理指令—指令編碼(前5類),指令執(zhí)行的條件碼,,I用于區(qū)別立即數(shù)(I為1)和寄存器移位(I為0),,opcode數(shù)據(jù)處理指令操作碼,第二操作數(shù),Rd目標(biāo)寄存器,Rn第一操作數(shù)寄存器,S設(shè)置條件碼,與指令中的S位對(duì)應(yīng),,1MOV,MVN(singleoperandinstructions.){cond}{S}Rd,2CMP,CMN,TEQ,TST(instructionswhichdonotproducearesult.){cond}Rn,3AND,EOR,SUB,RSB,ADD,ADC,SBC,RSC,ORR,BIC(Threeoperants){cond}{S}Rd,Rn,Op2isOp2isRmOp2isRm,,指令格式,3.3.1ARM數(shù)據(jù)處理指令—指令格式(前5類),實(shí)例,例如:MOVR0,#1ANDR1,R2,#0 x0FSUBR1,R1,R2MOVPC,R0ADDR1,R1,R1,LSL#3;R1=R1+R1*8=9R1SUBR1,R1,R2,LSRR3;R1=R1-(R2/2R3),3.3.1ARM數(shù)據(jù)處理指令—指令實(shí)例(前5類),3.3.1ARM數(shù)據(jù)處理指令—指令編碼(前5類),3.3.1ARM數(shù)據(jù)處理指令—指令編碼(前5類),3.3.1ARM數(shù)據(jù)處理指令—特殊指令,RSB是反減,即用第二操作數(shù)減去源操作數(shù)。由于第二操作數(shù)可選的范圍寬,所以這條指令很有用。RSC是帶進(jìn)位標(biāo)志的反減。若進(jìn)位標(biāo)志為零,則結(jié)果減1。BIC用于將源操作數(shù)的各位與第二操作數(shù)中相應(yīng)位的反碼進(jìn)行“與”操作。BIC可用于將寄存器中某些位的值設(shè)置為0。MVN是“取反傳送”,它是把第二操作數(shù)的每一位取反,將得到的值置入結(jié)果寄存器。CMN表示“取反比較”,將目的操作數(shù)和源操作數(shù)相加,根據(jù)結(jié)果更新條件碼標(biāo)志。,3.3.1數(shù)據(jù)處理指令,數(shù)據(jù)處理指令可分為以下六類:數(shù)據(jù)傳送指令;算術(shù)運(yùn)算指令;邏輯運(yùn)算指令;比較指令;測(cè)試指令;乘法指令。,3.3.1ARM數(shù)據(jù)處理指令——數(shù)據(jù)傳送,Assemblersyntax:(singleoperandinstructions.){cond}{S}Rd,Op2isOp2isRmOp2isRm,;:=;:=#expression;:=RRX;sare:ASL,LSL,LSR,ASR,ROR,MOV{cond}{S}Rd,operand2MOV指令將立即數(shù)或寄存器傳送到目標(biāo)寄存器(Rd),可用于移位運(yùn)算等操作。MOV指令舉例如下:MOVR1,#0 x10;R1=0 x10MOVSR0,R1;R0=R1MOVSR0,R1,LSL#2;R3=R1<<2,并影響標(biāo)志位MOVSR0,R1,LSLR2;R3=R1<- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- EMPUCh3 指令系統(tǒng)
鏈接地址:http://www.820124.com/p-11793269.html