久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > ARM裸機開發筆記4ARM尋址方式

ARM裸機開發筆記4ARM尋址方式

作者: 時間:2016-11-19 來源:網絡 收藏
所謂尋址方式就是處理器根據指令中給出的地址信息來尋找物理地址的方式。

本文引用地址:http://cqxgywz.com/article/201611/318202.htm

立即(數)尋址

操作數本身就在指令中給出,只要取出指令也就取到了操作數。這個操作數被稱為立即數,對應的尋址方式為立即尋址

ADD R0,R0,#1 ;R0<-R0+1

ADD R0,R0,#ox3f ;R0<-R0+0x3f

以上指令中,第二個源操作數即為立即數。立即數以#開頭

寄存器尋址

利用寄存器中的數值作為操作數,這種尋址方式是各類微處理器經常采用的一種方式,也是一種執行效率較高的尋址方式。

ADD R0,R1,R2 :R0<-R1+R2

該指令將寄存器R1和R2的內容相加放到R0中。

寄存器間接尋址

以寄存器中的值作為操作數的地址,而操作數本身存放在存儲器中

ADD R0,R1,[R2] ;R0<-R1+[R2]

LDR R0,[R1] ;R0<-[R1]

[]表示取寄存器內容處的存儲器的值

基址變址尋址方式

將寄存器(該寄存器一般稱作基址寄存器)的內容與指令中給出的地址偏移量相加,從而得到一個操作數的有效地址:

LDR R0,[R1,#4] ;R0<- [R1+4]

LDR R0,[R1,#4]! ;R0<- [R1+4], R1<- R1+4

LDR R0,[R1],#4 ;R0<- [R1], R1<- R1+4

LDR R0,[R1,R2] ;R0<-[R1+R2]

多寄存器尋址

一條指令可以完成多個寄存器值的傳送。一條指令完成傳送最多16個通用寄存器的值

LDMIA R0,{R1,R2,R3,R4} ;R1<- [R0] R2<-[R0+4] R3<-[R0+8] R4<-[R0+12]

IA表示每次執行完加載操作后,R0按字長度增加

相對尋址

以程序計數器PC的當前值為基地址,指令中的地址標號作為偏移量,將兩者相加之后得到操作數的有效地址。

以下程序段完成子程序的調用和返回,跳轉指令BL采用了相對尋址方式:

BL NEXT ;跳轉到子程序NEXT處執行

·····················

NEXT

··························

MOV PC,LR ;從子程序返回

椎棧尋址

椎棧指針總是指向棧頂

遞增椎棧:向高地址方向生長

遞減椎棧:向低地址方向生長

滿椎棧:椎棧指針指向最后壓入椎棧的有效數據項

空椎棧:椎棧指針指向下一個要放入數據的空位置



關鍵詞: ARM裸機尋址方

評論


技術專區

關閉