ARM9TDMI处理器的加载/存储指令详解

需积分: 9 3 下载量 36 浏览量 更新于2024-08-02 收藏 498KB PDF 举报
"该资源是关于ARM9TDMI开发的资料包,包含了arm集合开发文档以及S3C2410处理器的Start.s启动代码的深入解析。主要关注点在于ARM处理器的加载/存储指令,这些指令对于理解数据在寄存器与内存之间的交互至关重要。" 在ARM体系结构中,加载/存储指令是执行基本数据传输的核心部分。这些指令允许程序员从内存中读取数据到寄存器,或从寄存器写入数据到内存。ARM9TDMI处理器,作为一个广泛使用的嵌入式处理器,同样支持这样的指令集。 1. LDR (Load Register) 指令 LDR指令用于从内存中读取一个32位字数据并将其存储到指定的目的寄存器中。它可以采用不同的寻址模式,例如立即寻址、寄存器加偏移量寻址、预增寻址等。例如: - `LDR R0, [R1]` 从R1寄存器指向的内存地址加载32位数据到R0。 - `LDR R0, [R1, R2]` 从R1加上R2的值所指示的内存地址加载数据到R0。 - `LDR R0, [R1, #8]` 从R1加上立即数8的内存地址加载数据到R0。 - `LDR R0, [R1, R2]!` 不仅加载数据到R0,还会更新R1的值为其原始值加上R2。 2. LDRB (Load Byte Register) 和 LDRH (Load Halfword Register) 指令 这些指令用于从内存中加载字节或半字数据到寄存器。它们分别对应于加载单个字节和16位半字数据,其操作方式类似于LDR,但处理的数据宽度不同。 3. STR (Store Register) 指令 与LDR相反,STR指令将寄存器中的32位字数据存储到内存中。同样,它也支持多种寻址模式,用于将处理后的数据写回到内存中。 4. STRB (Store Byte Register) 和 STRH (Store Halfword Register) 指令 这些指令用于将字节或半字数据从寄存器存储回内存。它们分别对应于存储单个字节和16位半字数据,是STR指令的变体,适应不同的数据类型存储需求。 了解和熟练使用这些加载/存储指令对于编写高效的ARM汇编代码至关重要。特别是在S3C2410这样的微控制器中,启动代码通常需要利用这些指令来初始化系统,设置堆栈,加载程序到内存,以及进行其他必要的初始化工作。因此,深入理解LDR、STR以及它们的变体对于ARM9TDMI的开发人员来说是基础且必不可少的。