STR LDRB R3,[R1],#1 在ARM汇编里如何解释

如题所述

第1个回答  2016-12-27

我怀疑你是从计算机三级嵌入式教材上看到的吧,因为我也遇到了同样的疑惑。我觉得,LDRB前面的STR应该只是个标号,指明是一个程序的分支,你可以继续往下看代码,BNE是说如果不相等则跳转到STR分支,所以STR在这里不是一个指令。


书上还有好多类似的写法,比如:


你说的STR就类似于上图中的NEXT

第2个回答  2016-12-25
R3 -> [R1] ; STR
R1 -> R1 + 1

[R1]Byte -> R3 ; LDRB
R1 -> R1 + 1
  追问

不是很懂,,我是新手。那个LDRB是个指令,前面的STR不也是'存入'指令吗,还是把它看成标号?

追答

一般 RISC 都是一条语句一个指令,没有见过 STR 和 LDR 两个指令一起用的。
STR 是存放 (Store)
LDR 是加载 (Load)
默认是操作一个字(4和字节),H是半字(2个字节),B是字节。
懂了没。

追问

嗯嗯,我也是这么理解的。但买的指导书上写的就是他们在一行。或许是写错了,他本意是写个标号的

追答

本回答被提问者采纳
相似回答