新聞中心

第1天-ARM尋址方式

作者: 時間:2016-11-26 來源:網(wǎng)絡(luò) 收藏
第1天-ARM尋址方式

1、立即尋址

本文引用地址:http://m.butianyuan.cn/article/201611/321992.htm

立即尋址方式的目的就是將操作數(shù)緊跟在操作碼后面,與操作碼一起放在指令代碼段中,在程序運行時,程序直接調(diào)用該操作數(shù),而不需要到其他地址單元中去取相應(yīng)的操作數(shù),上述的寫在指令中的操作數(shù)也稱作立即數(shù)。

在MCS-51單片機匯編語言編程中,該尋址方式是將“#”號放在立即數(shù)前面,以表示該尋址方式為立即尋址,如將操作數(shù)寫為#52H。
例: MOV A ,#52H

2、寄存器尋址

指令所要的操作數(shù)已存儲在某寄存器中,或把目標(biāo)操作數(shù)存入寄存器。把在指令中指出所使用寄存器(即:寄存器的助憶符)的尋址方式稱為寄存器尋址方式。

3、寄存器間接尋址

寄存器間接尋址方式,寄存器內(nèi)存放的是操作數(shù)的地址,而不是操作數(shù)本身,即操作數(shù)是通過寄存器間接得到的,因此稱為寄存器間接尋址。

4、基址變址尋址

5、多寄存器尋址

6、相對尋址

跳轉(zhuǎn)指令

7、堆棧(先進后出)尋址

遞增堆棧

遞減堆棧

滿堆棧

空堆棧

;立即尋址
MOVR0,#0 ; R0 <= 0,將立即數(shù)0x00存入寄存器R0,可通過AXD的processor views-->register查看
ADD R0,R0,#1; R0 <= R0 + 1
ADD R0,R0,#0x3f; R0 <= R0 + 0x3f

;寄存器尋址
MOV R1,#1; R1 <= 1,將立即數(shù)0x01存入寄存器R1
MOV R2,#2; R2 <= 2,將立即數(shù)0x02存入寄存器R2
ADD R0,R1,R2; R0 <= R1+R2,將寄存器R1和R2的內(nèi)容相加,其結(jié)果存放在寄存器R0中

;寄存器間接尋址
LDRR1,=COUNT; R1 <= COUNT,將存儲器地址放入寄存器R0
;MOVR0,#0x12; R0 <= 0x12,MOV指令目地操作數(shù)只能是8位
LDR R0,=0x12345678
STRR0,[R1]; [R1] <= R0,將寄存器R0的內(nèi)容存入寄存器R1所指向的存儲器
;即設(shè)置COUNT為0x12345678,
;STR指令用于從源寄存器中將一個32位的字?jǐn)?shù)據(jù)傳送到存儲器中
;可通過AXD的processor views-->memory查看0x30003100的值

;基址變址尋址
LDRR1,=COUNT;將存儲器地址0x30003100放入寄存器R1
LDRR2,=(COUNT+4);將存儲器地址0x30003104放入寄存器R1
MOV R3,#0x12;將立即數(shù)0x12存入寄存器R3
STRR3,[R2];將寄存器R3的內(nèi)容存入寄存器R2所指向的存儲器
LDRR4,[R1,#4];將寄存器R1的內(nèi)容加上4所指向的存儲器的字存入寄存器R4

;多寄存器尋址
LDRR1,=COUNT;將存儲器地址0x30003100放入寄存器R1
LDMIA R1,{R5,R6};R5 <= [R1],R6 <= [R1+4]


;相對尋址
BL NEXT ;跳轉(zhuǎn)到子程序NEXT處執(zhí)行,注意使用F8(step in)
NOP
NOP



關(guān)鍵詞: ARM尋址方

評論


技術(shù)專區(qū)

關(guān)閉