EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
1、立即寻址操作数在指令中直接给出ADD R0,R0,#1;R0←R0+1
: O3 ?. Z: g. oADD R0,R0,#0x3f;R0←R0+0x3f . p8 M+ d5 u$ F. m. @+ C
2、寄存器寻址操作数在寄存器 ADD R0,R1,R2;R0←R1+R2 3、寄存器间接寻址 操作数的地址在寄存器 ADD R0,R1,[R2];R0←R1+[R2]$ ^" Z& @ T6 m8 H; z3 M
LDR R0,[R1];R0←[R1]
4 C ?' F7 w- W4 H! Y1 U6 KSTR R0,[R1];[R1]←R0
& U. i( t, {+ t4、基址变址寻址操作数地址=基址寄存器+指令中给出的地址偏移 LDR R0,[R1,#4];R0←[R1+4]) k% A2 d$ n/ ?& o" c. a# L
LDR R0,[R1,#4]! ;R0←[R1+4]、R1←R1+4. C9 D2 a6 A( N( g( @/ l3 S
LDR R0,[R1],#4;R0←[R1]、R1←R1+4
8 Z, f3 P( _* b& uLDR R0,[R1,R2];R0←[R1+R2]
. z( Z( G- s$ U" M7 l5、多寄存器寻址类似寄存器寻址,此处是多个寄存器而已 LDMIA R0,{R1,R2,R3,R4};R1←[R0]2 K& o3 |6 K3 R. B* Q/ p
;R2←[R0+4]' ]8 H. b: [% S/ ~: ?4 A
;R3←[R0+8]; Y% X2 e3 j8 G. J" y7 [3 K
;R4←[R0+12] - {3 ], K g, }
6、相对寻址目标地址= pc当前值+指令给出的标号偏移地址 BL NEXT;跳转到子程序NEXT处执行! F y w$ E1 e5 a+ I! w) r7 g- [
......
* i0 {* w5 K& ]NEXT& p3 s& {5 Q( e
......
9 b# U8 e4 ^& @1 l2 P Y1 yMOV PC,LR;从子程序返回 7 b2 N* ]: A4 U% B5 V
7、堆栈寻址% U3 B1 e3 O o4 q
ARM微处理器支持这四种类型的堆栈工作方式。 -满递增堆栈:堆栈指针指向最后压入的数据,且由低地址向高地址生成。
' t% T* G$ M" b. c-满递减堆栈:堆栈指针指向最后压入的数据,且由高地址向低地址生成。
- z9 \5 q4 Q: B3 G! G, w* f9 r& v-空递增堆栈:堆栈指针指向下一个将要放入数据的空位置,且由低地址向高地址生成。9 ]- O* H8 f5 Y$ ~# n; ~% X
-空递减堆栈:堆栈指针指向下一个将要放入数据的空位置,且由高地址向低地址生成。
) u% I4 b0 d! V; \& } |