EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
1、立即寻址操作数在指令中直接给出ADD R0,R0,#1;R0←R0+1
5 Z( z" ?) d e" [ADD R0,R0,#0x3f;R0←R0+0x3f
0 k( ]: q& n5 ` k0 d$ s+ K6 v% |" l2、寄存器寻址操作数在寄存器 ADD R0,R1,R2;R0←R1+R2 3、寄存器间接寻址 操作数的地址在寄存器 ADD R0,R1,[R2];R0←R1+[R2]1 E$ x9 G, |0 k6 C/ ^
LDR R0,[R1];R0←[R1]; O$ y+ K! z, ?/ N
STR R0,[R1];[R1]←R0 ' ` Q4 h% G: Q! l, c* x, f5 ]
4、基址变址寻址操作数地址=基址寄存器+指令中给出的地址偏移 LDR R0,[R1,#4];R0←[R1+4]9 h" \5 q$ {4 O( X+ w% H6 a
LDR R0,[R1,#4]! ;R0←[R1+4]、R1←R1+40 ~, @+ m# B9 [, B+ Z
LDR R0,[R1],#4;R0←[R1]、R1←R1+4( ?0 I7 ?; o$ a0 a' h0 D I
LDR R0,[R1,R2];R0←[R1+R2] : u5 b; W: y* F0 q2 }% I$ Q
5、多寄存器寻址类似寄存器寻址,此处是多个寄存器而已 LDMIA R0,{R1,R2,R3,R4};R1←[R0] p+ u. y+ {( B" { O# y4 `* T. v
;R2←[R0+4]
+ {) B( M$ ]2 T v9 N& I# O1 V$ k;R3←[R0+8]
7 I" ^/ h7 {- `! N7 Y( N% _2 X;R4←[R0+12]
2 Q0 w& g$ K, M1 ^/ w5 y6、相对寻址目标地址= pc当前值+指令给出的标号偏移地址 BL NEXT;跳转到子程序NEXT处执行- V& Q8 w/ ^# ?
......
4 Q" [9 g- Z2 y: f# |1 O& MNEXT/ c. b" N3 m G! @( r9 T7 \
...... x2 u- F8 ?. e6 f. R1 k
MOV PC,LR;从子程序返回
! v, p1 [0 Y6 v7、堆栈寻址
8 o9 g8 l5 ~/ t3 T/ B: _ARM微处理器支持这四种类型的堆栈工作方式。 -满递增堆栈:堆栈指针指向最后压入的数据,且由低地址向高地址生成。3 `& r7 T: {' u& G- g
-满递减堆栈:堆栈指针指向最后压入的数据,且由高地址向低地址生成。2 A9 \9 ?- s. k: g( L: ]8 K0 k
-空递增堆栈:堆栈指针指向下一个将要放入数据的空位置,且由低地址向高地址生成。
, S. t7 q* o. s* I& k-空递减堆栈:堆栈指针指向下一个将要放入数据的空位置,且由高地址向低地址生成。- J5 i" z: {" D6 z
|