




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
制作:王亮講解:張嫻靜熊祝青ARM指令的尋址方式ARM指令系統132
ARM指令系統概述
ARM指令的尋址方式
ARM指令集4
Thumb指令集ARM指令系統概述ARM指令的基本匯編格式
Opcode{cond}{S}Rd,Rn{,operand2}助記符可選條件后綴可選標志位后綴目標寄存器第1操作數寄存器第2操作數LDRR0,[R1];R0[R1]ADDSR2,R1,#1;R2R1+1,影響CPSRSUBNESR2,R1,R0;R2R1-R0WhileNE,影響CPSR
什么是尋址方式尋找操作數地址的方式或尋找操作數的方式稱為尋址方式。如在計算2+3=?時,需先找到2和3的地址,才能把它們取出來進行加法操作,尋找2和3的地址的方式即尋址方式。ARM有哪些尋址方式?ARM指令的尋址方式ARM指令的尋址方式ARM的尋址方式立即尋址寄存器尋址寄存器移位尋址寄存器間接尋址基址加偏址尋址堆棧尋址塊拷貝尋址/多寄存器尋址相對尋址1)立即尋址
立即尋址/立即數尋址:操作數直接包含在指令中,只要取出指令也就取到了操作數,這個操作數被稱為立即數。例如:
ADD R0,R0,#1 /*R0←R0+1*/ADD R0,R0,#0x3f /*R0←R0+0x3f*/SUBR0,R0,#1/*R0R0-1*/第二個源操作數即為立即數,以“#”為前綴,十進制另加“0d”或省略。十六進制立即數另加“0x”或“&”,二進制另加“0b”或“2_”;2)寄存器尋址
寄存器尋址:操作數在寄存器中,指令中的地址碼為寄存器編號,寄存器的內容即為操作數。執行效率較高的尋址方式。例
ADD R0,R1,R2 /*R0←R1+R2*/
該指令的執行效果是將寄存器R1和R2的內容相加,其結果存放在R0寄存器中。目的寄存器第一操作數寄存器第二操作數寄存器2)寄存器尋址
MOVR1,R2 ;R1R2該指令的執行效果是將寄存器R2的內容傳送到寄存器R1中。寄存器尋址是各類微處器經常采用的尋址方式,是執行效率較高的尋址方式3)寄存器移位尋址寄存器尋址中,第二寄存器操作數在與第一操作數結合前可先進行移位操作,移位位數可以是一立即數或一寄存器R值。例ADDR3,R2,R1,LSR#2;R3R2+R1÷4ADDR3,R2,R1,LSRR4;R3R2+R1÷2R4ADDR3,R2,R1,LSL#3;R3R2+R1x8MOVR0,R2,LSL#3;R0R2X83)寄存器移位尋址移位類型LSL(LogicalShiftLeft)邏輯左移:向左移,最后移出的進CF,空出的最低有效位用零填充LSR(LogicalShiftRight)邏輯右移:向右移,最后移出的進CF,空出的最高有效位用零填充ASL(ArithmeticShiftLeft)算術左移:向左移,同LSLLogicalShiftLeft(LSL)DestinationCF0DestinationCFLogicalShiftRight...03)寄存器移位尋址ASR(ArithmeticShiftRight)算術右移:向右移,最后移出的進CF,空出的位用符號位填。源操作數為正,空出的最高有效位用零填充;源操作數為負,空出的最高有效位用1填充。DestinationCFArithmeticShiftRightSignbitshiftedin3)寄存器移位尋址ROR(RotateRight)循環右移:移出的最低位依次填入空出的最高位,最后移出的進C標志位。ROL(RotateLeft)循環左移。注意:進位標志C不在循環回路內。RRX(RotateRightExtendedby1Place)帶擴展循環右移:寄存器的內容循環右移1位進入C標志位,空出的位用原來的C標志位填充。DestinationCFRotateRightDestinationCFRotateRightthroughCarry4)寄存器間接尋址寄存器間接尋址:寄存器中的值作為操作數的地址,而操作數本身存放在該地址所指向的存儲器區中。例
LDR R0,[R1] ;R0←[R1]STR R0,[R1] ;[R1]←R0ADDR3,R2,[R1];R3←R2+[R1]
第一條指令將R1的值為地址的存儲器中的數據傳送到R0中。第二條指令將R0的值傳送到R1的值為地址的存儲器中。5)基址變址尋址基址變址尋址:將寄存器(基址寄存器)的內容與指令中給出的地址偏移量相加,得到操作數的有效地址,操作數存放在該地址指向的存儲區中。基址變址尋址又可分為:
1)基址加偏移量尋址
a.前索引尋址方式:基址需加(或減)偏移來計算訪問的地址。b.后索引尋址方式:基址不帶偏移作為傳送的地址,傳送后自動索引。
2)基址加索引尋址
:指令指定一個基址寄存器,再指定另一個寄存器(索引),其值作為位移加到基址上形成存儲器地址。5)基址變址尋址例如:LDRR0,[R1,#4];R0←[R1+4]LDRR0,[R1,#4]!;R0←[R1+4],R1←R1+4LDRR0,[R1],#4;R0←[R1],R1←R1+4LDRR0,[R1,R2];R0←[R1+R2]LDRR0,[R1,R2,LSL#2];R0←[R1+R2*4]變址尋址方式常用于訪問某基址附近的地址單元,常用于查表、數組操作。前變址自動變址后變址5)基址變址尋址在第一條指令中,將寄存器R1的內容加上4形成操作數的有效地址,從而取得操作數存寄存器R0中。在第二條指令中,將寄存器R1的內容加上4形成操作數的有效地址,從而取得操作數存寄存器R0中,然后R1的內容自增4。請注意這里的“!”的用法,它表示操作完成后刷新“!”前的寄存器的數值。在第三條指令中,將寄存器R1的內容作為操作數的有效地址,從而取得操作數存寄存器R0中,然后,R1的內容自增4。6)堆棧尋址
操作數在堆棧中,堆棧是一塊用于保存數據的連續內存區,按先進后出FILO(FirstInLastOut)的順序進行存取操作,使用一個稱作堆棧指針的專用寄存器指示當前的操作位置。根據堆棧指針指向位置的方式可分為如下兩種堆棧:滿堆棧(FullStack):當堆棧指針指向最后壓入堆棧或第一個要讀出的數據時。空堆棧(EmptyStack):當堆棧指針指向最后壓入堆棧的數據的上/下一個空位或第一個要讀出的數據上/下一個空位時。12SP滿12SP空6)堆棧尋址根據堆棧指針變化的方式可分為如下兩種堆棧遞增堆棧(AscendingStack):當堆棧由低地址向高地址生成時,稱為遞增堆棧遞減堆棧(DecendingStack):當堆棧由高地址向低地址生成時,稱為遞減堆棧12SPBase,LowHigh遞增堆棧SP12Base,HighLow遞減堆棧6)堆棧尋址堆棧的四種工作方式滿遞增堆棧:堆棧指針指向最后壓入或第一個要讀出的數據,且由低地址向高地址生長。滿遞減堆棧:堆棧指針指向最后壓入或第一個要讀出的數據,且由高地址向低地址生長。12SPBase,LowHigh滿遞增堆棧SP12Base,HighLow滿遞減堆棧6)堆棧尋址空遞增堆棧:堆棧指針指向上一個將要放入數據的空位或第一個將要讀出的數據的上一個空位,且由低地址向高地址生長。空遞減堆棧:堆棧指針指向下一個將要放入數據的空位或第一個將要讀出的數據的下一個空位,且由高地址向低地址生長12SPBase,LowHigh空遞增堆棧12SPBase,HighLow空遞減堆棧6)堆棧尋址例ARMSTMFDSP!{r0,r1,r3-r5};r0-r1,r3-r5入棧LDMFDSP!{r0,r1,r3-r5};r0-r1,r3-r5出棧ThumbPUSH{r0,r1,r3-r5};r0-r1,r3-r5入棧POP{r0,r1,r3-r5};r0-r1,r3-r5出棧7)塊拷貝尋址/多寄存器尋址多寄存器尋址中,用一條指令把存儲器中的一塊數據加載到多個寄存器,或把多個寄存器中的內容保存到存儲器中。尋址操作中的寄存器可以是R0~R15或其子集。LDM/STM加下列后綴即成為多寄存器尋址指令IA(IncrementAfter):操作完成后地址增IB(IncrementBefore):操作完成前地址增DA(DecrementAfter):操作完成后地址減DB(DecrementBefore):操作完成前地址減7)塊拷貝尋址/多寄存器尋址LDMIAR1,{R0,R2,R5};R0[R1];R2[R1+4];R5[R1+8]該指令的后綴IA表示在每次執行完加載/存儲操作后,R1按字長度增加,指令可將連續存儲單元的值送到R0,R2,R5寄存器中7)塊拷貝尋址/多寄存器尋址STMIAR1,{R0,R2,R5};[R1]R0;[R1+4]R2;[R1+8]R5該指令的后綴IA表示在每次執行完加載/存儲操作后,R1按字長度增加,指令可將R0,R2,R5寄存器的值送到連續存儲單元中。7)塊拷貝尋址/多寄存器尋址例子STMIAR9!,{R0,R1,R5}
;R0/1/5存入R9所指內存,先存后加STMIBR9!,{R0,R1,R5};R0/1/5存入R9所指內存,先加后存R5R1R9’R0R9STMIAR9!,{R0,R1,R5}1000100c1018R5R1R0R9’R9STMIBR9!,{R0,R1,R5}1000100c10187)塊拷貝尋址/多寄存器尋址STMDAR9!,{R0,R1,R5}
;R0/1/5存入r9所指內存,先存后減STMDBR9!,{R0,R1,R5};R0/1/5存入R9所指內存,先減后存R1R5R9STMDAR9!,{R0,R1,R5}R0R9’1000100c1018R5R9STMDBR9!,{R0,R1,R5}R1R0R9’1000100c10188)相對尋址相對尋址:以程序計數器PC的當前值為基地址,指令中的地址標號作為偏移量,兩者相加得操作數的有效地址。以下程序段完成子程序的調用和返回,跳轉指令BL采用了相對尋址方式:
BL
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 大學輔導員心理狀況評估與溝通技巧的考核試題及答案
- 2024年高校輔導員職業素養與行為規范考核試題及答案
- 2025至2030年動物蛋白產品項目投資價值分析報告
- 2025至2030年剪刀項目投資價值分析報告
- 高校輔導員招聘考試思維導圖技巧試題及答案
- 2025至2030年關節軸承殼體項目投資價值分析報告
- 2025至2030年八芯電話線項目投資價值分析報告
- 2025至2030年全不銹鋼離心泵項目投資價值分析報告
- 2025至2030年先鋒9號注射液項目投資價值分析報告
- 2025至2030年便攜式儲電全自動打包機項目投資價值分析報告
- 生物質能源綜合利用項目可行性分析報告
- 《印度文化與歷史:大學人文課程教案》
- 老年防詐騙知識講座課件
- 湖北省部分高中聯考協作體2023-2024學年高二下學期期中考試物理試卷(含答案)
- DB33-T 1411-2024 水利工程文化融合導則
- 2024湖南省新華書店有限責任公司招聘10人筆試參考題庫附帶答案詳解
- 檔案管理制度培訓宣貫
- 農機質量跟蹤調查表
- 刑民交叉案件的司法認定
- 2025年度股權合作協議書新版:跨境電商平臺股權合作協議
- GB/T 33136-2024信息技術服務數據中心服務能力成熟度模型
評論
0/150
提交評論