EDA365电子论坛网

标题: 请问这一小段ARM汇编代码哪里有问题啊?传入存储器的值对不对??? [打印本页]

作者: beachsun    时间: 2019-7-10 16:33
标题: 请问这一小段ARM汇编代码哪里有问题啊?传入存储器的值对不对???
AREA SHIYAN01,CODE,READONLY ENTRY CODE32

START LDR R0,=0x40000000
! w$ P: k8 j) s6 [MOV R1,#0x100
) A$ ~5 {' G1 n. JSTR R1,[R0]
  p  H2 x1 k5 E8 o# n7 @& b, mADD R1,R1,#0x4+ }8 u: O) x, f2 W) ^
LDR R1,[R0,#0x4]
& ?+ e; K7 u: w0 tADD R1,R1,#0x4% u7 P* Q* ~7 k% ?0 r. g! z
STR R1,[R0,#0x4];9 z1 u+ [. @. G' d4 w
ADD R1,R1,#0x4
- c8 Y  Y( _1 ~" i; ^  K* h4 WSTR R1,[R0,#0x4]
1 n- _+ {% _( S- O7 y& m8 XLDMIA R0!,{R2-R4}

END! w+ W/ ^# ^+ Q/ |; h% t& j1 H

作者: lrq    时间: 2019-7-10 17:29
猜测你的想法是,内存地址0x40000000上的值为0x100, 0x40000004上的值为0x104, 0x40000008上的值为0x108; h# `) d; {: x1 `( I% N& T. [
7 r/ f# L( U& }$ I. Y7 F
MOV R1,#0x100) k  O% {1 j- b7 {4 u: @& D  f
STR R1,[R0]
$ ?& v8 n" s. P4 WADD R1,R1,#0x4( a3 [& F2 E& ~# w4 `5 j  Y
LDR R1,[R0,#0x4] //这里就破坏了, 这里是把0x40000004地址上的值读出到r1寄存器# B, K8 [5 @. `- s& l; x. F
ADD R1,R1,#0x4 // 后面的数据在r1上再加( Y2 |. ]. K# a  ~$ O8 d
STR R1,[R0,#0x4]; // 这里就应是[r0, #8]
+ C0 O0 z( F. M6 R. y/ ?5 ]3 nADD R1,R1,#0x4
  F( v- H/ Y+ S' [8 M, N) OSTR R1,[R0,#0x4] // [r0, #12]




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2