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