EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
1、立即寻址操作数在指令中直接给出ADD R0,R0,#1;R0←R0+1
! A- ^- t- v: M' GADD R0,R0,#0x3f;R0←R0+0x3f , U! y( P, {/ b M- ]# E) e0 c
2、寄存器寻址操作数在寄存器 ADD R0,R1,R2;R0←R1+R2 3、寄存器间接寻址 操作数的地址在寄存器 ADD R0,R1,[R2];R0←R1+[R2]% B: B( l0 G) b' H5 Q; d/ ?
LDR R0,[R1];R0←[R1]
, R/ l, b2 f E$ {8 ]7 z/ U+ rSTR R0,[R1];[R1]←R0
6 {* ?4 d0 p8 y2 M9 Z2 b* z' [4、基址变址寻址操作数地址=基址寄存器+指令中给出的地址偏移 LDR R0,[R1,#4];R0←[R1+4]
* n; I3 p* _ K. ]! }+ `6 VLDR R0,[R1,#4]! ;R0←[R1+4]、R1←R1+4
1 V' q3 `" [# nLDR R0,[R1],#4;R0←[R1]、R1←R1+4. J( }2 W1 o) y) e
LDR R0,[R1,R2];R0←[R1+R2]
$ O9 j/ {) \8 V* k$ c3 Y5、多寄存器寻址类似寄存器寻址,此处是多个寄存器而已 LDMIA R0,{R1,R2,R3,R4};R1←[R0]
$ e. n5 U2 j/ V; f;R2←[R0+4]! U- t* [2 M. g0 j# V
;R3←[R0+8]
+ q9 L" J+ b! H* g) q0 ?) ~;R4←[R0+12] + B9 [: ?& t1 j! p2 ~: v' Q# R
6、相对寻址目标地址= pc当前值+指令给出的标号偏移地址 BL NEXT;跳转到子程序NEXT处执行: @) @/ t' N; d2 z& B
......2 b* t) a0 \3 G0 r G. _* O' m
NEXT
8 ~6 H* {/ z5 c2 f& G8 E......
2 i& W5 H1 n( p# w3 j8 s- z/ mMOV PC,LR;从子程序返回 / S; M- E5 s7 q" E( X
7、堆栈寻址
* N' D8 T6 t% R- ]3 ]8 iARM微处理器支持这四种类型的堆栈工作方式。 -满递增堆栈:堆栈指针指向最后压入的数据,且由低地址向高地址生成。+ I5 q! A5 E) p1 I4 M( O+ m) l
-满递减堆栈:堆栈指针指向最后压入的数据,且由高地址向低地址生成。 ~/ \# l( ~! g6 R1 d
-空递增堆栈:堆栈指针指向下一个将要放入数据的空位置,且由低地址向高地址生成。 ]' B& s: u2 p+ o9 X
-空递减堆栈:堆栈指针指向下一个将要放入数据的空位置,且由高地址向低地址生成。' w6 J- p. w& O& M
|