嵌入式控制系統課件第章ARM指令系統_第1頁
嵌入式控制系統課件第章ARM指令系統_第2頁
嵌入式控制系統課件第章ARM指令系統_第3頁
嵌入式控制系統課件第章ARM指令系統_第4頁
嵌入式控制系統課件第章ARM指令系統_第5頁
已閱讀5頁,還剩53頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

3CHAPTERARM指令系統1第3章ARM指令系統3.1ARM指令系統3.2ARM匯編程序設計2ARM指令系統1.指令格式2.條件碼3.存儲器訪問指令4.數據處理指令5.乘法指令6.ARM分支指令7.雜項指令8.偽指令3ARM指令小節目錄1.指令格式2.條件碼3.存儲器訪問指令4.數據處理指令5.乘法指令6.ARM分支指令7.雜項指令8.偽指令4ARM是三地址指令格式,指令的基本格式如下:3.1指令集介紹ARM指令集——基本指令格式<opcode>{<cond>}{S}<Rd>,<Rn>{,<operand2>}

其中<>號內的項是必須的,{}號內的項是可選的。各項的說明如下:opcode:指令助記符; cond:執行條件;S:是否影響CPSR寄存器的值;Rd:目標寄存器; Rn:第1個操作數的寄存器;operand2:第2個操作數;指令語法目標寄存器(Rd)源寄存器1(Rn)源寄存器2(Rm)ADDr3,r1,r2r3r1r2例:5ARM指令的基本格式如下:3.1指令集介紹ARM指令集——第2個操作數<opcode>{<cond>}{S}<Rd>,<Rn>{,<operand2>}

靈活的使用第2個操作數“operand2”能夠提高代碼效率。它有如下的形式:#immed_8r——常數表達式;Rm——寄存器方式;Rm,shift——寄存器移位方式;63.1指令集介紹ARM指令集——第2個操作數#immed_8r——常數表達式該常數必須對應8位位圖,即一個8位的常數(0xFF,0x0F,)通過循環右移偶數位得到。73.1指令集介紹ARM指令集——第2個操作數Rm——寄存器方式在寄存器方式下,操作數即為寄存器的數值。例如:SUB R1,R1,R283.1指令集介紹ARM指令集——第2個操作數Rm,shift——寄存器移位方式將寄存器的移位結果作為操作數(移位操作不消耗額外的時間),但Rm值保持不變,移位方法如下:操作碼說明操作碼說明ASR#n算術右移n位n≤32ROR#n循環右移n位n≤31LSL#n邏輯左移n位n≤31RRX帶擴展的循環右移1位LSR#n邏輯右移n位n≤3293.1指令集介紹ARM指令集——第2個操作數LSL移位操作:0LSR移位操作:0ASR移位操作:ROR移位操作:RRX移位操作:C103.1指令集介紹ARM指令集——第2個操作數Rm,shift——寄存器移位方式例如:ADD R1,R1,R1,LSL#3 ;R1=R1+R1<<3SUB R1,R1,R2,LSRR3 ;R1=R1-R2>>R311ARM指令目錄1.指令格式2.條件碼3.存儲器訪問指令4.數據處理指令5.乘法指令6.ARM分支指令7.雜項指令8.偽指令12ARM指令的基本格式如下:3.1指令集介紹ARM指令集——條件碼<opcode>{<cond>}{S}<Rd>,<Rn>{,<operand2>}使用條件碼“cond”可以實現高效的邏輯操作(節省跳轉和條件語句),提高代碼效率。所有的ARM指令都可以條件執行,而Thumb指令只有B(跳轉)指令具有條件執行功能。如果指令不標明條件代碼,將默認為無條件(AL)執行。13操作碼條件助記符標志含義0000EQZ=1相等0001NEZ=0不相等0010CS/HSC=1無符號數大于或等于0011CC/LOC=0無符號數小于0100MIN=1負數0101PLN=0正數或零0110VSV=1溢出0111VCV=0沒有溢出1000HIC=1,Z=0無符號數大于1001LSC=0,Z=1無符號數小于或等于1010GEN=V有符號數大于或等于

1011LTN!=V有符號數小于

1100GTZ=0,N=V有符號數大于

1101LEZ=1,N!=V有符號數小于或等于

1110AL任何無條件執行(指令默認條件)1111NV任何從不執行(不要使用)指令條件碼表143.1指令集介紹ARM指令集——條件碼C代碼:If(a>b) a++;Else b++;對應的匯編代碼:CMP R0,R1 ;R0(a)與R1(b)比較ADDHI R0,R0,#1;若R0>R1,則R0=R0+1ADDLS R1,R1,#1;若R0≤R1,則R1=R1+1示例:15AR饒M指令壇目錄1.指令筒格式2.條件滾碼3.存儲兆器訪住問指解令4.數據薄處理讀指令5.乘法詳指令6.蒸AR富M分支參指令7.雜項嬌指令8.偽指非令163.逢1指令莫集介裹紹AR況M指令麻集——存儲膝器訪洲問指漲令AR蛙M處理存器是夜典型覺的RI守SC處理這器,洲對存組儲器糧的訪喇問只筐能使持用加肺載和捏存儲妹指令訓實現繭。AR冠M7處理糾器是醫馮?諾依匆曼存咱儲結腹構,RA引M存儲寬空間險及I/冰O映射某空間據統一成編址粱,除省對RA鍋M操作魄以外乒,對欲外圍IO、程序恭數據崇的訪育問均奶要通佛過加皇載/存儲苦指令盈進行溜。存儲族器訪安問指懼令分便為單寄偷存器夕操作鄙指令和多寄良存器吃操作泡指令。17助記符說明操作條件碼位置LDRRd,addressing加載字數據Rd←[addressing],addressing索引LDR{cond}LDRBRd,addressing加載無符號字節數據Rd←[addressing],addressing索引LDR{cond}BLDRTRd,addressing以用戶模式加載字數據Rd←[addressing],addressing索引LDR{cond}TLDRBTRd,addressing以用戶模式加載無符號字節數據Rd←[addressing],addressing索引LDR{cond}BTLDRHRd,addressing加載無符號半字數據Rd←[addressing],addressing索引LDR{cond}HLDRSBRd,addressing加載有符號字節數據Rd←[addressing],addressing索引LDR{cond}SBLDRSHRd,addressing加載有符號半字數據

Rd←[addressing],addressing索引

LDR{cond}SHAR眉M存儲單器訪孤問指弓令——單寄網存器誓加載18助記符說明操作條件碼位置STRRd,addressing存儲字數據[addressing]←Rd,addressing索引STR{cond}STRBRd,addressing存儲字節數據[addressing]←Rd,addressing索引STR{cond}BSTRTRd,addressing以用戶模式存儲字數據[addressing]←Rd,

addressing索引STR{cond}TSTRBTRd,addressing以用戶模式存儲字節數據[addressing]←Rd,addressing索引STR{cond}BTSTRHRd,addressing存儲半字數據[addressing]←Rd,addressing索引STR{cond}HAR拋M存儲運器訪想問指但令——單寄泊存器析存儲LD唐R/蟲ST永R指令艇用于潔對內頂存變馬量的逗訪問義、內衫存緩班沖區跡數據劍的訪鍬問、巴查表宏、外訂圍部醋件的擁控制箏操作棍等。搶若使包用LD生R指令腳加載捉數據外到PC寄存陶器,蜘則實瞇現程宅序跳驗轉功春能。19LD貍R和ST樸R—纏—字和飄無符演號字陵節加考載/存儲伴指令LD捐R指令饑用于愚從內塊存中檔讀取辯單一倘字或慌字節言數據的存入捧寄存臘器中頃,ST漏R指令詢用于告將寄哄存器巾中的碼單一課字或慎字節竄數據嫂保存蹈到內悔存。誰指令挺格式刮如下蚊:AR咸M存儲卵器訪根問指喪令——單寄平存器叛存儲LD朵R{緞co麻nd犯}{覽T}加Rd情,<地址>;將指傳定地頓址上轟的字屋數據體讀入RdST逐R{搭co帳nd侮}{欣T}罩Rd爭,<地址>;將Rd中的殃字數程據存室入指頂定地杜址LD債R{微co敗nd蓄}B蒼{T}剩Rd乓,<地址>;將指刑定地棵址上落的字逆節數偏據讀向入RdST刃R{翠co喉nd掉}B隆{T}段Rd篩,<地址>;將Rd中的舅字節析數據建存入摔指定串地址其中掏,T為可披選后戚綴。羞若指估令有T,那么咽即使爽處理敬器是晚在特冷權模紀式下昂,存踩儲系中統也革將訪奔問看疊成是懲在用困戶模湯式下母進行室的。20AR漢M存儲定器訪患問指紡令——單寄閥存器慢存儲LD州R和ST干R—川—字和危無符則號字岡節加卡載/存儲猾指令LD忘R/亡ST顆R指令鳥尋址奔非常系靈活吼,它找由兩排部分多組成小,其駁中一甜部分絹為一買個基已址寄良存器霧,可說以為柴任一祝個通駐用寄禮存器捕;另制一部枝分為拾一個淹地址叨偏移奇量。掛地址薄偏移薦量有開以下3種格惠式:立即尸數。立魂即數壤可以嗎是一餓個無乎符號毅的數禍值。鐘這個挺數據躍可以乞加到橋基址捷寄存夢器,否也可慌以從特基址撤寄存隊器中甩減去甜這個毯數值覆。如:LD德R鹿R社1,偵[R拳0,#0闖x1斗2];R1賤<-棒[R餃0+股0x皇12皂]寄存背器。寄糠存器煤中的先數值椅可以撕加到剝基址依寄存榆器,愧也可氧以從砍基址磨寄存撿器中修減去柜這個猜數值耳。如:LD存R參R莊1,督[R訴0,R2];R1朝<-我[R錄0+圈R2誕]LD環R址R環1,懼[R嶄0,雪-R幟2]顯;父R1夏<-逃[R峰0-我R2異]寄存課器及企移位盤常數。寄陵存器插移位逐后的誤值可僑以加膚到基山址寄誓存器掛,也病可以額從基城址寄信存器凡中減蘋去這濤個數胃值。如:LD錢R過R跌1,材[R辰0,R2精,L警SL廊#酸2];R性1<魔-[名R0迅+R斜2*輕4]21AR晉M存儲理器訪她問指寺令——單寄享存器拿存儲從尋亦址方拒式的絡地址悠計算獅方法恐分,搭加載/存儲巴指令宵有以像下4種格悔式:零偏略移。宵如嫂:LD孤RRd聞,[Rn]前索頸引偏胡移。梅如盼:LD昨R域R掉d,擦[R乞n,#0祝x0尼4]!程序擠相對崇偏移。乒如:LD夜R送R奸d,la第be泰1后索謊引偏彩移。如:LD現R飄R痕d,仗[R穿n]武,#-蹤蝶0x美04LD默R和ST歲R—愛—字和鬧無符勺號字薦節加課載/存儲億指令22LD跳R和ST禿R—把—半字恢和有魔符號竊字節聰加載/存儲秋指令這類LD撫R/農ST刃R指令中可加甲載有饑符號正半字敏或字陰節,說可加句載/存儲筒無符歪號半經字。編偏移跌量格斃式、烘尋址京方式央與加疼載/存儲打字和烏無符綠號字貍節指采令相生同。AR工M存儲爭器訪燒問指并令——單寄耕存器罰存儲LD擴R{饅co屠nd卸}S憐BRd夜,<地址>;將指植定地豈址上鼻的有岡符號伏字節今讀入RdLD泛R{夾co盡nd襖}S六HRd股,<地址>;將指擴定地心址上晶的有膏符號前半字徹讀入RdLD婆R{玩co攀nd趣}HRd迎,<地址>;將指注定地捕址上慣的半棚字數尾據讀豪入RdST捏R{量co承nd避}HRd斤,<地址>;將Rd中的賴半字跌數據足存入芒指定陪地址23LD篩R和ST號R指令嬸應用迅示例嚴:1.加載/存儲捎字和獄無符坦號字蝦節指鉛令LD獎R驢R2棉,[劉R5立];將R5指向刃地址腔的字還數據穩存入R2ST稻R效R1羅,[夸R0耕,#站0x揀04生];將R1的數艷據存柄儲到R0阿+0立x0典4地址LD吸RB禍R待3,泰[R棟2]鴨,#崗-1;將R2指向僵地址誘的字慮節數輝據存哨入R3,R2=R2-1ST報RB最R鋸0,韻[R衰3,粗-R日8盼AS艇R#2];R擇0-宵>[博R3戴-R痰8/捎4]頃,存儲R0的最訴低有殲效字贊節2.加載/存儲版半字陜和有己符號青字節綠指令LD獨RS順B蜂R拆1,孕[R渴0,扎R3征];將R0悠+R蚊3地址蓋上的樣字節昂數據宇存入R1,;雕R1高24位用斯符號餡擴展LD蔑RH弓R拒6,橡[R管2]貨,#晉2;將R2指向竊地址足的半槽字數冊據存寸入R6,高16位用0擴展;讀出寫后,R2趁=R遮2+因2ST灘RH勉R糾1,斗[R歐0,續#2火]!;將R1的半剃字數住據保快存到R0廊+2地址托,;然后R0使=R穗0+托2AR頁M存儲英器訪栽問指星令——單寄及存器質存儲24(3)LD敗R和ST看R米--葵--雙字深:加載/存儲奏兩個愧相鄰雅的寄滲存器峰,64位雙弄字。籃其句橫法有4種:Op懸{co列nd}DRd,[Rn]零偏奸移Op肆{co榨nd}DRd,[Rn,of讀fs爆et曉]秀{!膛}前索康引偏融移Op漲{co冰nd}DRd,la際be襲l程序題相對刮偏移Op厭{co傭nd}D{T喪}凝Rd,[Rn],of棟fs煤et后索貪引偏店移AR煩M存儲堅器訪籃問指逝令——單寄撇存器效存儲25其中缺:Rd加載/存儲艦寄存習器中福的一萬個,瓣另一埋個是R(d+蔬1)。Rd必須框是偶救數寄執存器久,且端不是R1藝4。Rn除非暴指令癥為零靈偏移洪,或釀不帶園寫回脆的前靜索引企,否啄則,Rn不允能許與Rd和R(d+材1)相同字。la款be滾l梯l夏ab局el必須農是在消當前霜指令不的上扮下25尊6字節男范圍罰內。例如脫:LD確RD旅R蓋6,[R徑11霸];R6非←[累R1常1],R7僻←[固R1柿1+奇4]ST企RD仇R梯4,遇[R分9,藥#2敘4]博;銜R4磨→[峰R9惱+2好4]啞,R瞎5→幼[R槽9+隔28丑]AR喉M存儲漠器訪鵲問指嚇令——單寄秒存器結存儲26助記符說明操作條件碼位置LDM{mode}Rn{!},reglist多寄存器加載reglist←[Rn...],Rn回寫等LDM{cond}{mode}STM{mode}Rn{!},reglist多寄存器存儲[Rn...]←reglist,Rn回寫等STM{cond}{mode}AR撲M存儲思器訪萄問指聯令——多寄游存器衫存取多寄抱存器維加載/存儲傍指令疤可以堂實現抵在一夾組寄們存器姨和一提塊連翻續的棉內存煉單元犧之間替傳輸蛙數據寧。LD嘴M為加博載多張個寄沃存器匆;ST遺M為存裕儲多凳個寄眠存器液。允顏許一促條指猜令傳西送16個寄僵存器免的任摘何子巾集或罵所有憐寄存洗器。臥它們患主要腔用于輛現場恨保護過、數繳據復乞制、柔常數球傳遞手等。27AR繡M存儲鍵器訪叼問指錢令——多寄朽存器掙存取多寄率存器約加載/存儲淚指令罩格式柄如下核:LD流M{炭co襯nd}<模式>Rn張{!鋼},物re謹gl略is箭t{^某}ST牢M{幼co磁nd}<模式>Rn螞{!驅},嚴re存gl或is李t{^掀}co否nd:指令庫執行臉的條窯件;模式:控逗制地存址的技增長贏方式笛;!:表聲示在編操作暖結束扣后,畝將最近后的費地址為寫回Rn中;re賴gl果is叼t:表示薯寄存睜器列外表,肅可以奪包含畏多個型寄存鑄器,掘它們畝使用掛“,”隔開案,如{R卵1,惰R2義,R纖6-嚷R9獸},寄存買器由扶小到馳大排債列;^:可趨選后股綴。階允許芬在用港戶模晃式或扣系統餓模式冒下使租用。還它有捏以下席兩個賭功能魔:1)若op是LD宿M且寄似存器嘴列表敗包含R1遙5時,亂那么廟除了庭正常廊的多饑寄存唱器傳島送外捏,還越將SP促SR也復雁制到CP練SR中。侄這用滋于異木常處傾理返裕回,謙僅在蹤蝶異常釋模式刺下使酷用。2)數共據傳嘉入或映傳出怨的是毯用戶尤模式衛下的熟寄存喬器,起而不系是當略前模咱式的累寄存墊器。28AR羊M存儲搞器訪誼問指澤令——多寄千存器蝦存取多寄掉存器秧加載/存儲歸指令賄的8種模見式如碧下表兵所示循,右渾邊四疏種為修堆棧枝操作跌、左碰邊四尾種為散數據糊傳送織操作笑。模式說明模式說明IA每次傳送后地址加4FD滿遞減堆棧IB每次傳送前地址加4ED空遞減堆棧DA每次傳送后地址減4FA滿遞增堆棧DB每次傳送前地址減4EA空遞增堆棧數據塊傳送操作堆棧操作進行浮數據猶復制添時,銷先設樹置好批源數句據指褲針和宜目標誰指針固,然醉后使絮用塊坊拷貝螺尋址表指令LD箭MI膨A/養ST裂MI秋A、LD牲MI放B/今ST飄MI集B、LD牧MD炮A/薯ST鍋MD政A、LD高MD收B/選ST丟MD斯B進行稿讀取姐和存還儲怨。進行名堆棧手操作陰操作創時,氣要先牌設置切堆棧貿指針黎(SP),然后它使用丸堆棧秤尋址適指令ST艷MF裂D/朱LD膝MF妨D、ST悄ME僵D/當LD單ME拿D、ST琴MF叨A/旋LD謎MF喉A和ST火ME北A/欣LD純ME組A實現捐堆棧劫操作朋。29AR南M存儲面器訪擠問指芒令——多寄恨存器尋存取數據扁塊傳詢送指符令操作姥過程殼如右尸圖所賞示,貞其中R1為指婦令執乞行前吳的基蘿址寄忠存器尊,R1繳’則為抖指令謊執行坡后的茄基址錯寄存米器。R5R6R7R1R1’指令STMIAR1!,{R5-R7}4008H4004H4000H4014H4010H400CHR5R6R7R1R1’指令STMDAR1!,{R5-R7}4008H4004H4000H4014H4010H400CHR5R6R7R1R1’指令STMIBR1!,{R5-R7}4008H4004H4000H4014H4010H400CHR5R6R7R1’R1指令STMDBR1!,{R5-R7}4008H4004H4000H4014H4010H400CH30AR高M存儲革器訪帝問指假令——多寄功存器拐存取數據塊傳送存儲堆棧操作壓棧說明數據塊傳送加載堆棧操作出棧說明STMDASTMED空遞減LDMDALDMFA滿遞減STMIASTMEA空遞增LDMIALDMFD滿遞增STMDBSTMFD滿遞減LDMDBLDMEA空遞減STMIBSTMFA滿遞增LDMIBLDMED空遞增;使用鎖數據蠟塊傳績送指底令進愧行堆炒棧操拳作ST辜MDAR0恐!,姓{R誼5-品R6滲}.當.愧.LD幸MIBR0納!,晨{R室5-帥R6刮};使用河堆棧派指令按進行攪堆棧稼操作ST紛MEDR1蹲3!喉,{窄R5展-R濕6}.支.蛛.LD曉MEDR1態3!滔,{論R5綱-R常6}兩段奮代碼漫的執線行結怎果是柱一樣抖的,膛但是則使用槍堆棧押指令庸的壓距棧和瓜出棧吸操作肆編程鍛很簡怨單(蜂只要勇前后干一致傲即可毀),億而使焦用數滲據塊針指令豎進行字壓棧魂和出慮棧操穴作則峽需要野考慮皆空與弊滿、踐加與蔽減對潑應的毫問題丘。堆棧操作和數據塊傳送指令類似,也有4種模式,它們之間的關系如下表所示:31助記符說明操作條件碼位置SWPRd,Rm,Rn寄存器和存儲器字數據交換Rd←[Rn],[Rn]←Rm(Rn≠Rd或Rm)SWP{cond}SWPBRd,Rm,Rn寄存器和存儲器字節數據交換Rd←[Rn],[Rn]←Rm(Rn≠Rd或Rm)SWP{cond}BAR他M存儲旅器訪族問指匪令——寄存謹器和真存儲頸器交污換指眼令SW童P指令急用于城將一處個內報存單麗元(該單孟元地燃址放繼在寄貿存器Rn中)的內探容讀廳取到通一個禁寄存愛器Rd中,勉同時禾將另市一個狂寄存括器Rm的內盛容寫躬入到良該內僚存單霜元中回。使沉用SW蠻P可實航現信載號量角操作引。指令煤格式土如下凈:SW種P{偽co差nd悠}{較B}Rd占,R毛m,樓[R老n]其中溉,B為可駝選后熟綴,努若有B,則交浪換字雄節,息否則循交換32位字已;Rd用于朗保存確從存專儲器腰中讀欺入的壯數據排;Rm的數睬據用授于存衣儲到搬存儲退器中公,若Rm與Rd相同劃,則逝為寄飛存器斥與存壤儲器然內容題進行狹互換距;Rn為要福進行袍數據構交換往的存笛儲器償地址診,Rn不能耽與Rd和Rm相同塌。32AR偶M存儲迷器訪股問指荷令——寄存幸器和窗存儲疫器交況換指區令SW乏P指令票應用規示例彼:SW剩P與R1揚,R狂1,售[R垮0];將R1的內策容與R0指向涌的存打儲單塘元的續內容別進行雕互換SW屆PB應R絮1,驢R2酸,[抱R0爺];將R0指向兩的存棚儲單億元低帶字節苗數據流讀取是到R1中;(高24位清筒零),并項將R2的內顯容寫薄入到戒該內堤存單割元中;(最低坑字節幅有效)33AR買M指令劃目錄1.指令污格式2.條件躁碼3.存儲虹器訪擾問指蓬令4.數據問處理蚊指令5.乘法給指令6.邀AR傷M分支和指令7.雜項震指令8.偽指籮令343.茫1指令冰集介原紹AR保M指令冷集——AR課M數據粥處理職指令數據功處理丟指令苗大致殺可分至為3類:數據宅傳送文指令克;算術該邏輯株運算羊指令貓;比較遵指令悲。數據方處理遲指令蹤蝶只能團對寄好存器揉的內款容進雄行操頌作,鑰而不湊能對丙內存從中的世數據丟進行寬操作陸。所竄有AR飾M數據胖處理子指令丈均可決選擇幻玉使用S后綴蘭,以趣使指什令影麗響狀茂態標汗志。35AR銹M數據遞處理綁指令——指令狂編碼帶進位加法ADC0101帶進位減法指令SBC0110帶進位逆向減法指令RSC0111位測試指令TST1000相等測試指令TEQ1001比較指令CMP1010負數比較指令CMN1011邏輯或操作指令ORR1100數據傳送MOV1101位清除指令BIC1110數據非傳送MVN1111加法運算指令ADD0100逆向減法指令RSB0011減法運算指令SUB0010邏輯異或操作指令EOR0001邏輯與操作指令AND0000說明指令助記符操作碼opcode操作碼功能表36助記符說明操作條件碼位置MOVRd,operand2數據傳送Rd←operand2MOV{cond}{S}MVNRd,operand2數據非傳送Rd←(~operand2)MVN{cond}{S}AR辛M數據撤處理蹤蝶指令——數據棚傳送注:纖當后稿綴S時,綢這些油指令到根據霧結果幻玉更新安標志N和Z,在羽計算Op饑er秩an疤d2時更奇新標桐志C,不透影響持標志V。37助記符說明操作條件碼位置MOVRd,operand2數據傳送Rd←operand2MOV{cond}{S}MVNRd,operand2數據非傳送Rd←(~operand2)MVN{cond}{S}AR榮M數據廉處理桂指令——數據翅傳送

MOV指令將8位圖立即數或寄存器傳送到目標寄存器(Rd),可用于移位運算等操作。指令格式如下:MOV{cond}{S}Rd,operand2

MOV指令舉例如下:MOV R11,#0xF000000B ;R1=0xF000000BMOV R0,R1 ;R0=R1

MOVS R3,R1,LSL#2 ;R3=R1<<2,并影響標志位

MOV PC,LR ;PC=LR,子程序返回

38助記符說明操作條件碼位置MOVRd,operand2數據傳送Rd←operand2MOV{cond}{S}MVNRd,operand2數據非傳送Rd←(~operand2)MVN{cond}{S}AR靈M數據櫻處理環指令——數據乳傳送

MVN指令將8位圖立即數或寄存器(operand2)按位取反后傳送到目標寄存器(Rd),因為其具有取反功能,所以可以裝載范圍更廣的立即數。指令格式如下:MVN{cond}{S}Rd,operand2

MVN指令舉例如下:MVN R1,#0xFF ;R1=0xFFFFFF00

MVN R1,R2 ;將R2按位取反,結果存到R139助記符說明操作條件碼位置ADDRd,Rn,operand2加法運算指令Rd←Rn+operand2ADD{cond}{S}SUBRd,Rn,operand2減法運算指令Rd←Rn-operand2SUB{cond}{S}RSBRd,Rn,operand2逆向減法指令Rd←operand2-RnRSB{cond}{S}ADCRd,Rn,operand2帶進位加法Rd←Rn+operand2+CarryADC{cond}{S}SBCRd,Rn,operand2帶進位減法指令Rd←Rn-operand2-(NOT)CarrySBC{cond}{S}RSCRd,Rn,operand2帶進位逆向減法指令Rd←operand2-Rn-(NOT)CarryRSC{cond}{S}AR竿M數據詠處理相指令——算術議運算注:腿這些白指令盡影響N,Z,C和V標志朽位。40助記符說明操作條件碼位置ADDRd,Rn,operand2加法運算指令Rd←Rn+operand2ADD{cond}{S}SUBRd,Rn,operand2減法運算指令Rd←Rn-operand2SUB{cond}{S}RSBRd,Rn,operand2逆向減法指令Rd←operand2-RnRSB{cond}{S}ADCRd,Rn,operand2帶進位加法Rd←Rn+operand2+CarryADC{cond}{S}SBCRd,Rn,operand2帶進位減法指令Rd←Rn-operand2-(NOT)CarrySBC{cond}{S}RSCRd,Rn,operand2帶進位逆向減法指令Rd←operand2-Rn-(NOT)CarryRSC{cond}{S}AR暗M數據趙處理棗指令——算術淡運算加法雙運算捏指令——AD塵D指令游將op樣er炊an具d2的值葛與Rn的值沸相加掌,結元果保決存到Rd寄存公器。遵指令魚格式腸如下據:AD利D{喪co田nd考}{計S}損R漏d,專Rn貞,o禮pe底ra坑nd肝2應用銅示例遮:AD倚DS墊R1鍵,R舌1,甲#1鉛02叢0;R蓋1=什R1訓+1長02列0,并影幸響標旁志位AD躲D村R1剝,R既1,簡R2法,L礎SL萬#偉2;R笛1=甚R1甲+R納2<愁<241助記符說明操作條件碼位置ADDRd,Rn,operand2加法運算指令Rd←Rn+operand2ADD{cond}{S}SUBRd,Rn,operand2減法運算指令Rd←Rn-operand2SUB{cond}{S}RSBRd,Rn,operand2逆向減法指令Rd←operand2-RnRSB{cond}{S}ADCRd,Rn,operand2帶進位加法Rd←Rn+operand2+CarryADC{cond}{S}SBCRd,Rn,operand2帶進位減法指令Rd←Rn-operand2-(NOT)CarrySBC{cond}{S}RSCRd,Rn,operand2帶進位逆向減法指令Rd←operand2-Rn-(NOT)CarryRSC{cond}{S}AR杠M數據燭處理槳指令——算術謀運算減法山運算桑指令——SU斜B指令情用寄租存器Rn減去op朽er縣an藥d2,結果巧保存猜到Rd中。段指令要格式肅如下夜:SU筍B{字co烈nd詞}{紗S}橡R克d,俊Rn芹,o旗pe陵ra闖nd念2應用層示例凝:SU望BS載R扔0,剪R0秧,#雙24群0;R雞0=很R0咐-2摩40,并影冰響標掏志位SU慨BS田R努2,搖R1炊,R好2;R徒2=補R1占-R塞2,并影樓響標且志位42助記符說明操作條件碼位置ADDRd,Rn,operand2加法運算指令Rd←Rn+operand2ADD{cond}{S}SUBRd,Rn,operand2減法運算指令Rd←Rn-operand2SUB{cond}{S}RSBRd,Rn,operand2逆向減法指令Rd←operand2-RnRSB{cond}{S}ADCRd,Rn,operand2帶進位加法Rd←Rn+operand2+CarryADC{cond}{S}SBCRd,Rn,operand2帶進位減法指令Rd←Rn-operand2-(NOT)CarrySBC{cond}{S}RSCRd,Rn,operand2帶進位逆向減法指令Rd←operand2-Rn-(NOT)CarryRSC{cond}{S}AR殺M數據吊處理線指令——算術丈運算逆向崖減法蠶運算蜘指令——RS陸B指令伙將op壁er利an譜d2的值險減去Rn,結果傷保存價到Rd中。甘指令樓格式歷如下孕:RS光B{鑄co頌nd露}{蹄S}膀R付d,腿Rn電,o鎖pe膚ra究nd覽2應用礙示例窯:RS鎮B須R應3,驅R1攜,#記0x襖FF等00;R嗎3=字0x閉FF懸00榆-R亦1RS萄BS屋R環1,蘋R2掛,R珍2,娛LS晴L免#2;R繳1=忌(R叛2<錘<2愚)-務R2遵=R術2×3影響鞋標志廈位43助記符說明操作條件碼位置ADDRd,Rn,operand2加法運算指令Rd←Rn+operand2ADD{cond}{S}SUBRd,Rn,operand2減法運算指令Rd←Rn-operand2SUB{cond}{S}RSBRd,Rn,operand2逆向減法指令Rd←operand2-RnRSB{cond}{S}ADCRd,Rn,operand2帶進位加法Rd←Rn+operand2+CarryADC{cond}{S}SBCRd,Rn,operand2帶進位減法指令Rd←Rn-operand2-(NOT)CarrySBC{cond}{S}RSCRd,Rn,operand2帶進位逆向減法指令Rd←operand2-Rn-(NOT)CarryRSC{cond}{S}AR敞M數據連處理啞指令——算術鍋運算帶進釋位加淘法指蹲令——AD永C將op煎er壯an鈴d2的值喝與Rn的值演相加兔,再沾加上CP熊SR中的C條件歲標志循位,映結果范保存插到Rd寄存尚器。府指令易格式衣如下翠:AD似C{充co稍nd梅}{團S}浴R宿d,耍Rn初,o肥pe家ra跑nd右2應用渴示例耽(使筆用AD圖C實現64位加釘法,專結果城存于R1(高32位)漂、R0中)濕:AD錦DS鮮R0享,R殖0,窩R2;R行0等于叨低32位相肯加,栽并影卵響標倡志位AD診C屬R1累,R革1,在R3;R公1等于泳高32位相康加,料并加掌上低你位進渡位44助記符說明操作條件碼位置ADDRd,Rn,operand2加法運算指令Rd←Rn+operand2ADD{cond}{S}SUBRd,Rn,operand2減法運算指令Rd←Rn-operand2SUB{cond}{S}RSBRd,Rn,operand2逆向減法指令Rd←operand2-RnRSB{cond}{S}ADCRd,Rn,operand2帶進位加法Rd←Rn+operand2+CarryADC{cond}{S}SBCRd,Rn,operand2帶進位減法指令Rd←Rn-operand2-(NOT)CarrySBC{cond}{S}RSCRd,Rn,operand2帶進位逆向減法指令Rd←operand2-Rn-(NOT)CarryRSC{cond}{S}AR樂M數據描處理財指令——算術陳運算帶進列位減禾法指級令——SB塞C用寄輩存器Rn減去op平er犁an海d2,再減匯去CP秘SR中的C條件棕標志么位的吳非(即若C標志偽清零裝,則庫結果般減去1),結骨果保長存到Rd中。俊指令握格式宣如下叮:SB激C{君co級nd姻}{暖S}庭R泳d,株Rn笛,o池pe遭ra亞nd蓬2應用透示例悟(使譯用SB攜C實現64位減題法,擋結果泰存于R1、R0中)端:SU價BS奸R0統,R繭0,棉R2;低32位相竄減,益并影簽響標均志位SB拐C恐R1喜,R蛋1,場R3;高32位相閥減,術并減臺去低要位借湖位45助記符說明操作條件碼位置ADDRd,Rn,operand2加法運算指令Rd←Rn+operand2ADD{cond}{S}SUBRd,Rn,operand2減法運算指令Rd←Rn-operand2SUB{cond}{S}RSBRd,Rn,operand2逆向減法指令Rd←operand2-RnRSB{cond}{S}ADCRd,Rn,operand2帶進位加法Rd←Rn+operand2+CarryADC{cond}{S}SBCRd,Rn,operand2帶進位減法指令Rd←Rn-operand2-(NOT)CarrySBC{cond}{S}RSCRd,Rn,operand2帶進位逆向減法指令Rd←operand2-Rn-(NOT)CarryRSC{cond}{S}AR革M數據爛處理賭指令——算術卷運算帶進沙位逆煮向減枝法指紐奉令——RS鞭C指令卷用寄聽存器op調er姨an壞d2減去Rn,再減除去CP固SR中的C條件宇標志碼位,宋結果購保存段到Rd中。林指令姻格式平如下臥:RS揭C{楚co偉nd鴨}{廟S}廁R部d,揮Rn餓,o岔pe蕉ra陶nd賄2應用止示例腦(使艦用RS冊C指令線實現濱求64位數釘值的巴負數表)翅:RS度BS遲R2格,R團0,香#0尚;R眠2=乖-R界0RS身C壓R3皇,R彩1,虧#0言;R食3=庸-R彈1-豬!挑Ca圾rr團y46助記符說明操作條件碼位置ANDRd,Rn,operand2邏輯與操作指令Rd←Rn&operand2AND{cond}{S}ORRRd,Rn,operand2邏輯或操作指令Rd←Rn|operand2ORR{cond}{S}EORRd,Rn,operand2邏輯異或操作指令Rd←Rn^operand2EOR{cond}{S}BICRd,Rn,operand2位清除指令Rd←Rn&(~operand2)BIC{cond}{S}AR轟M數據籠處理貿指令——邏輯石運算促指令注:渠當后禽綴S時,摘這些紙指令辟根據霞結果復更新孫標志N和Z,在登計算Op麗er樂an嘗d2時更辱新標榨志C,不逃影響同標志V。47助記符說明操作條件碼位置ANDRd,Rn,operand2邏輯與操作指令Rd←Rn&operand2AND{cond}{S}ORRRd,Rn,operand2邏輯或操作指令Rd←Rn|operand2ORR{cond}{S}EORRd,Rn,operand2邏輯異或操作指令Rd←Rn^operand2EOR{cond}{S}BICRd,Rn,operand2位清除指令Rd←Rn&(~operand2)BIC{cond}{S}AR泳M數據頓處理那指令——邏輯弟運算兵指令邏輯椒與操粉作指躬令——AN誕D指令殖將op架er迎an綠d2的值粉與寄輔存器Rn的值悅按位紫作邏焰輯“駐與”來操作供,結釘果保芒存到Rd中。幣指令錦格式慘如下血:AN坡D{賠co喂nd幅}{爐S}拍R育d,苦Rn佳,o側pe巷ra掠nd拜2應用恰示例詞:AN院DS斷R0蓋,R鐮0,倉#0多x0濫1;R悔0=作R0娘&0盲x0岔1,取出擴最低樸位數讀據AN頑DE芳Q封R2煉,R提1,拖R3;R四2=偷R1季&R跌348助記符說明操作條件碼位置ANDRd,Rn,operand2邏輯與操作指令Rd←Rn&operand2AND{cond}{S}ORRRd,Rn,operand2邏輯或操作指令Rd←Rn|operand2ORR{cond}{S}EORRd,Rn,operand2邏輯異或操作指令Rd←Rn^operand2EOR{cond}{S}BICRd,Rn,operand2位清除指令Rd←Rn&(~operand2)BIC{cond}{S}AR銹M數據法處理域指令——邏輯便運算種指令邏輯或操作指令——ORR指令將operand2的值與寄存器Rn的值按位作邏輯“或”操作,結果保存到Rd中。指令格式如下:ORR{cond}{S}Rd,Rn,operand2應用示例:

ORRR0,R0,#0x0F

;將R0的低4位置1MOV R1,R2,LSR#24 ;使用ORR指令將R2的高8位ORR R3,R1,R3,LSL#8

;數據移入到R3低8位中49助記符說明操作條件碼位置ANDRd,Rn,operand2邏輯與操作指令Rd←Rn&operand2AND{cond}{S}ORRRd,Rn,operand2邏輯或操作指令Rd←Rn|operand2ORR{cond}{S}EORRd,Rn,operand2邏輯異或操作指令Rd←Rn^operand2EOR{cond}{S}BICRd,Rn,operand2位清除指令Rd←Rn&(~operand2)BIC{cond}{S}AR四M數據仔處理河指令——邏輯由運算鍵指令邏輯淚異或終操作芝指令——EO楚R指令奶將op檔er市an饞d2的值伶與寄產存器Rn的值炊按位聞作邏己輯“洗異或枝”操電作,送結果速保存雁到Rd中。腰指令堆格式須如下茅:EO說R{型co爆nd授}{鍬S}Rd腦,R扔n,燦op以er貫an序d2應用銅示例贈:EO貓R掠R1千,R喪1,梨#0猛x0框F;將R1的低4位取踩反EO醉R忌R2小,R佛1,不R0;R先2=鑒R1弊^R備0EO離RS憐R遼0,秧R5逃,#堡0x俊01;將R5和0x奔01進行誼邏輯紡異或淺,;結果姨保存撫到R0,并影恰響標笨志位50助記符說明操作條件碼位置ANDRd,Rn,operand2邏輯與操作指令Rd←Rn&operand2AND{cond}{S}ORRRd,Rn,operand2邏輯或操作指令Rd←Rn|operand2ORR{cond}{S}EORRd,Rn,operand2邏輯異或操作指令Rd←Rn^operand2EOR{cond}{S}BICRd,Rn,operand2位清除指令Rd←Rn&(~operand2)BIC{cond}{S}AR樣M數據服處理撞指令——邏輯派運算揮指令位清臣除指傳令——BI邊C指令六將寄臟存器Rn的值后與op缺er輝an窯d2的值患的反替碼按舊位作送邏輯挨“與沾”操郵作,怎結果奸保存滿到Rd中。疑指令脅格式湊如下蜻:BI擾C{貪co著nd轉}{貼S}Rd陶,R攀n,盞op副er靈an軋d2應用懂示例誕:BI候C要R1碧,R設1,貝#0音x0掌F;將R1的低4位清鋼零,簽其它耀位不班變BI蜜C傲R1污,R宰2,爸R3;將R3的反扁碼和R2相邏受輯“印與”傅,;結果賢保存掠到R1中51助記符說明操作條件碼位置CMPRn,operand2比較指令標志N、Z、C、V←Rn-operand2CMP{cond}CMNRn,operand2負數比較指令標志N、Z、C、V←Rn+operand2CMN{cond}TSTRn,operand2位測試指令標志N、Z、C、V←Rn&operand2TST{cond}TEQRn,operand2相等測試指令標志N、Z、C、V←Rn^operand2TEQ{cond}AR少M數據多處理剪指令——比較及指令注:肯這些校指令指影響N,Z,C和V標志拒位。52助記符說明操作條件碼位置CMPRn,operand2比較指令標志N、Z、C、V←Rn-operand2CMP{cond}CMNRn,operand2負數比較指令標志N、Z、C、V←Rn+operand2CMN{cond}TSTRn,operand2位測試指令標志N、Z、C、V←Rn&operand2TST{cond}TEQRn,operand2相等測試指令標志N、Z、C、V←Rn^operand2TEQ{cond}AR到M數據漠處理英指令——比較挪指令比較艷指令——CM煙P指令慨將寄允存器Rn的值南減去op欄er匆an瞎d2的值響,根逐據操踏作的譯結果固更新CP踢SR中的寒相應命條件僻標志嗚位(N斧/Z驕/C乓/V壞),以便贏后面訊的指時令根驚據相挽應的茅條件議標志澡來判縫斷是但否執懶行。CM隔P指令倍與SU費BS指令密的區毅別在遮于CM燭P指令閑不保溉存運休算結登果。柳指令箭格式怕如下折:CM續P{貝co杯nd}Rn,杠op叮er破an懼d2應用珍示例舌:CM難P驕R1依,#席10;掌R1與10比較鍵,設注置相答關標雹志位CM副PGTR1時,R付2;R1與R2比較耐,設滲置相啦關標搬志位;若R1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論