关注!读书不如无书!两本书、同样的出版社、同样的例子,不同的结果。 为了啃ARM的汇编方言,本人手头上有两本书: 一本:<<嵌入式系统开发与应用>> 田泽 编著 北京航空航天大学出版社 1、LDR R8,[R10] ;R8 <-[R0] 2、LDENE R2,[R5,#960]! ;(有条件地)R2<-[R5+960],R5<-R5+960 3、STR R2,[R9,#consta -struc] ;consta -struc 是常量表达式,该常量值的范围为0-4095 4、STRB R0,[R3,-R8,ASR #2] ;R0->[R3-R8/4],存储R0的最低有效字节,R3和R8不变 5、STR R5,[R7],#-8 ;R5->[R7],R1<-R7-8 6、LDR R0,localdata ;加载一个字,该字位于标号lacaldata所在地址
另外一本:<<AT91系列ARM核微控制器结构与开发>> 骊忠梅毒 徐英慧 叶勇建 林明 编著 1、LDR R8,[R10] ;R8 <-[R0] 2、LDENE R2,[R5,#960]! ;(有条件地)R2<-[R5+960],R5<-R5+960 3、STR R2,[R9,#consta -struc] ;consta -struc 是常量表达式,该常量值的范围为0-4095 4、STRB R0,[R3,-R8,ASR #2] ;R0<-[R3-R8/4],存储R0的最低有效字节,R3和R8不变 5、STR R5,[R7],#-8 ;R5<-[R7],R1<-R7-8 6、LDR R0,localdata ;加载一个字,该字位于标号lacaldata所在地址
请留意程序第4行和第五行的注释 个人认为前者是对的! 面对现在的书真的是无言......而且价格都特贵!!!!!!!!!!
另外还有一个关开进栈和出栈问题想请教各位前辈: STMFD SP! {R1-R7,LR} ;将R1-R7,LR入栈 LDMFD SP! {R1-R7,LR} ;数据出栈,放入R1-R7,LR寄存器 与常规理解数据加载和储存的方向刚好相反,不好记啊! 常规STM数据方向应该是Rn->Rd(左到右) 常规LDR数据方向应该是Rd<-Rn(右到左) 怎么这个堆栈操作跟常规的数据加载和储存有点不一样呢? 理解不正确之处请大家指正! 谢谢! 说明:本人是新手 |