Assembly LDR和STR不工作?
我仍然对STR和LDR指令的工作原理感到困惑,还是我做错了什么?以下是示例代码(使用ARMSIM): 这就是说:Assembly LDR和STR不工作?,assembly,arm,Assembly,Arm,我仍然对STR和LDR指令的工作原理感到困惑,还是我做错了什么?以下是示例代码(使用ARMSIM): 这就是说: 将整数10的值设置为R5 将R5的值(在本例中为整数10)存储到R4的内存地址 在R4的内存地址中加载值为10的R3 在R4的内存地址中加载值为10的R2 将R3和R2的值添加到R4。(R3现在应该是20) 将R4的值移动到R1 设置要打印到控制台的#标准输出 打印20张 但是,在控制台中,我得到了0的输出。这怎么可能?如果您将某个内容存储到内存中,例如整数,它是否会变成其他内容,或
但是,在控制台中,我得到了0的输出。这怎么可能?如果您将某个内容存储到内存中,例如整数,它是否会变成其他内容,或者我做错了什么?我不熟悉ARMSIM,但您可能应该初始化
R4
以指向可写内存。如果您尝试写入只读或非映射内存,则无法预知会发生什么情况,例如,您的写入可能会被默默忽略。r4肯定需要指向可写的位置。我如何做到这一点?它只是MOV R4,#0或其他什么?按R4,MOV R4,sp或类似的东西答案不会,不能,不应该是20,但是,0是重置向量,它可能是闪存,所以你无论如何都不想将其写入ram或rom。选择其他地址。。。
Start:
MOV R5, #10
STR R5, [R4]
LDR R3, [R4]
LDR R2, [R4]
ADD R4, R2, R3
MOV R1, R4
MOV R0, #Stdout
SWI SWI_PrInt
SWI SWI_Exit