了解LDR和STR吗?

问题描述 投票:0回答:1

我正在使用ARMSim,我猜它是一个ARM模拟器,我有这个演示程序。它基本上读取一个文本文件并打印文本文件中的整数(仅第一行)。

Start:
@Open file for input.
LDR R0, =InputFileName
MOV R1, #0
SWI SWI_Open
BCS FileError

@Save file handle to memory.
LDR R1, =InputFileHandle
STR R0, [R1]

@Read integers.
LDR R0, =InputFileHandle
LDR R0, [R0]
SWI SWI_RdInt

@Print to ARMSIM console.
MOV R1, R0
MOV R0, #Stdout
SWI SWI_PrInt

BAL End

FileError:
MOV R0, #Stdout
LDR R1, =FileErrorMess
SWI SWI_PrStr
BAL Quit

End:
SWI SWI_Exit

.data
.align
InputFileHandle: .skip 4
InputFileName: .asciz "integers.txt"
FileErrorMess: .asciz "Can't open file."

它运行良好,但我不太明白 LDR 或 STR 指令是如何工作的。尤其是那些看起来像 LDR R0、[R0] 或 STR R0、[R1] 的。任何人都可以澄清这些是如何工作的吗?

assembly arm
1个回答
6
投票

LDR
STR
指令使用后变址寻址来更新其地址寄存器。

  • STR
    指令在内存中存储一个单词。
  • LDR
    指令从内存中加载单词。

了解更多

© www.soinside.com 2019 - 2024. All rights reserved.