EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
1、立即寻址操作数在指令中直接给出ADD R0,R0,#1;R0←R0+1
* y5 b. Q' O# CADD R0,R0,#0x3f;R0←R0+0x3f * H+ A% f% u3 u- A7 }6 p
2、寄存器寻址操作数在寄存器 ADD R0,R1,R2;R0←R1+R2 3、寄存器间接寻址 操作数的地址在寄存器 ADD R0,R1,[R2];R0←R1+[R2]0 n- j; g6 H5 t* z. |
LDR R0,[R1];R0←[R1]2 R0 W6 d6 v+ `5 w* ?9 T
STR R0,[R1];[R1]←R0 9 I! t3 O4 S3 o2 |- I3 d' F
4、基址变址寻址操作数地址=基址寄存器+指令中给出的地址偏移 LDR R0,[R1,#4];R0←[R1+4]
8 l5 V# t3 L" Y4 @LDR R0,[R1,#4]! ;R0←[R1+4]、R1←R1+4
$ o! A: E+ ~" U3 c3 f: ILDR R0,[R1],#4;R0←[R1]、R1←R1+4
% a# W- w6 b; y( u3 dLDR R0,[R1,R2];R0←[R1+R2]
) |; E$ @0 U6 n p2 Y5、多寄存器寻址类似寄存器寻址,此处是多个寄存器而已 LDMIA R0,{R1,R2,R3,R4};R1←[R0]! T2 b8 c7 Y2 t C& E; K% S
;R2←[R0+4]
# v5 n3 L9 _% Z4 W; r2 r;R3←[R0+8]% C) ^# v( E. k' J; S% I
;R4←[R0+12] * z) @- E0 ?) r
6、相对寻址目标地址= pc当前值+指令给出的标号偏移地址 BL NEXT;跳转到子程序NEXT处执行
+ k2 K3 C9 j4 P& d$ h( \2 z......
7 [1 r+ ^" ?+ T! @6 oNEXT
, |; U) |, E3 y, }......
# J+ X7 j* e2 s6 dMOV PC,LR;从子程序返回 4 Y4 r3 s6 w! o. ?6 g7 L$ i
7、堆栈寻址* Z9 T7 p Z* k) J6 I
ARM微处理器支持这四种类型的堆栈工作方式。 -满递增堆栈:堆栈指针指向最后压入的数据,且由低地址向高地址生成。9 E4 C- K7 D2 v7 `7 o
-满递减堆栈:堆栈指针指向最后压入的数据,且由高地址向低地址生成。
, I7 v, n( [ ]-空递增堆栈:堆栈指针指向下一个将要放入数据的空位置,且由低地址向高地址生成。" j1 k. U S" n! V% L- s
-空递减堆栈:堆栈指针指向下一个将要放入数据的空位置,且由高地址向低地址生成。8 A9 P& \2 B- q: A2 D9 n
|